Software-ul de interfață de implementare spi, de exemplu, de tip K adaptor de conexiune termocuplu

Implementarea software de interfață SPI pentru conectarea adaptorului de tip K Exemplu termocuplu MAX6675 la microcontroler ATmega8

Într-unul din posturile mele anterioare. Vorbeam despre conexiunea termocuplu la Arduino. Acum este conexiunea rassmoret timp pentru microcontrolere AVR în C pur, bun, așa cum sa dovedit, nu este dificil.

Permiteți-mi să vă reamintesc că termocuplu este conectat prin intermediul adaptorului MAX6675, care, la rândul său, este conectat la microcontroler prin intermediul interfeței SPI.

După I2C, SPI interfață este probabil să pară foarte simplu. În cazul în care punerea în aplicare hardware rasmotret de SPI, atunci există date SPDR citit sau scris, și care a efectuat toate lucrările c SPI.

Implementarea software, așa cum sa dovedit, nu cu mult mai complicat, dar primul care este SPI. appnot Corporate la SPI mozho găsit la Atmel: AVR151: Configurarea și utilizarea de SPI

uita-te la schema electrică luată de acolo:

Software-ul de interfață de implementare spi, de exemplu, de tip K adaptor de conexiune termocuplu

    Repere:
  1. Interfața se poate conecta mai multe dispozitive în același timp, dar se poate folosi doar una dintre ele.
  2. Acesta utilizează conceptul de master-slave (dirijor orchestră). Acesta generează un ceas de master și comută dispozitivul.
  3. In varianta minimă, există două linii de control: SCK este generat de impulsul de ceas (care este comun pentru toate) iar SS-ul dispozitivului selectarea liniei (Slave Select). Alte denumirea sa: CS (Chip Select).
  4. De fiecare dată când adăugați crește interfața dispozitivului SPI pe o altă linie SS / CS.
  5. Full-duplex de interfață, linia MISO (Master în Slave Out) este responsabil pentru primirea (în raport cu master), linia MOSI este responsabil pentru predachi.
  6. Există patru moduri de funcționare SPI. Faza SCK inițial la un nivel scăzut în modul 0, iar cea mai mare în modul 3. Citirea se face la marginea în creștere.
  7. În modurile 1 și 3, citirea se realizează pe frontul descrescător. Sunt rare, în conformitate cu cartea „Programarea Practic AVR Microcontroller“ Yuri Revich, capitolul 11.
  8. O versiune simplificată a SPI este format din trei linii. În acest caz, conexiunea este doar la recepție sau transmisie numai.

Aici este un regim simplificat folosit MAX6675. Documentație: MAX6676 foaie de date

Sugerez o altă privire la formatul de transmisie:

Software-ul de interfață de implementare spi, de exemplu, de tip K adaptor de conexiune termocuplu

Datele sunt transmise în pachete de doi octeți. Sub temperatura este dată de 12 biți. Al 15-lea bit, bitul de semn. LSB - LSB, MSB - bitul cel mai important. Legenda oficial:

Software-ul de interfață de implementare spi, de exemplu, de tip K adaptor de conexiune termocuplu

Valoarea temperaturii transmise în grade Celsius, variind de la 0 la 1024. 1024 - este de zece biți, în timp ce datele sunt transmise în format de 12-biți. Deci, pentru a obține valoarea în grade, veți obține numărul de a diviza de 4. Sunt un pic confuz de-al doilea bit, ID-ul dispozitivului. Adică, eu nu înțeleg cu adevărat cum poate un bit servește ca un identificator. Mai degrabă, acesta poate fi numit un pic corectitudine.

Dacă vă amintiți, în cazul Arduino, am folosit biblioteca: MAX6675-bibliotecă

La verificare, sa dovedit a fi destul de simplu cod:

Nu a decis să reinventeze roata, și rescrie codul în pur C. Ca un șablon utilizat proiectul din postul anterior. Am renuntat dosarele referitoare la LST, și apoi lăsat să rescrie main.c, în conformitate cu obiectivele sale:

Rezultatul programului:

Software-ul de interfață de implementare spi, de exemplu, de tip K adaptor de conexiune termocuplu

În acest caz, feedback-ul vizibil arzător cu termocuplu.
Descărcați proiectul împreună cu fișierele de asamblare și firmware pentru ATmega8 aici.
Structura proiectului: