Note microcontrolere Atmel AVR, în cazul în care pentru a începe

Notă scrisă după ce am pierdut o mulțime de timp căutând informații cu privire la modul de a obține rapid început cu AVR, pe care greble pot apărea și toate. Informații on-line ca buchet de obicei, dar o mulțime de apă, sfaturi de multe ori contradictorii și așa mai departe. De aceea, el a fost născut aici este un scurt rezumat.

AVR linii de ieșire controler de la zero logic atrage mult mai mult, astfel încât un sens curent pentru a face un nivel activ este scăzut, cum ar fi LED-uri 5 printr-un rezistor, și nu invers, etc.

Impredictibil, dar nu toate porturile ieșirile sunt disponibile imediat după programarea flash. Aceste concluzii pot fi implicate în conformitate cu interfața JTAG și citire / scriere nu se întâmplă nimic. Toate acestea sunt tratate în mod corespunzător instalarea biți FUSE.

Dacă există FUSE'y BODLEVEL0 / 1 /. acestea trebuie să fie programate la tensiunea corespunzătoare atunci când se utilizează EEPROM. În acest caz, atunci când puterea nu este nimic din EEPROM nu este dat peste cap.

Foarte util pentru a utiliza UART pentru a comunica cu un computer. Prețul de emisiune - un MAX232 în plus cip și patru condensatori, și atunci când depanare capacitatea de a imprima ceva la portul este foarte de economisire a timpului.

La calcularea blitzul dimensiunea necesară întotdeauna se înmulțește cu 2. RISC cod nu este foarte compact, în afară de AVR funcționează cu cuvinte, mai degrabă decât bytes și 16 Kbytes acestea sunt transformate în 8 Kslov, mai credibil.

Se pare înțelept să-și petreacă timp de învățare un alt asamblare, astfel încât toate instrumentele care nu acceptă programarea în C. Nu mă gândisem. Reziduul uscat:
  • GCC AVR. Open source C / C ++ compilator, linker-ul, și orice altceva. Totul funcționează, dar este mai mult sau mai puțin complexe, funcții de bibliotecă nevoie pentru a scrie opinia ta, destul de gata să jur.
  • AVR Studio. Unii nu, dar un mediu de dezvoltare, ferestre, meniuri. Gratuit, dar din nou, fără nici un biblioteci gata Zaman. Se poate folosi compilator AVR-GCC.
  • IAR Embedded Workbench pentru AVR. C / C ++. Pentru un cost suplimentar. Îmi place acest sac părea grele, și nici timp de documentare gânditoare vkurivat. Este posibil să doriți să se uite la dacă sunteți de planificare un loc de muncă permanent cu AVR.
  • CodeVision AVR. C ++ fără. Pentru o taxă suplimentară, dar funcționează fără licență pentru proiecte mici. Și rulează sub Win98, care permite de a conduce oriunde. Există un generator de cod pentru a inițializa microcontroler. Gata pentru bibliotecă, de asemenea, au diferite periferice - LCD, senzori de temperatură, RTC, sistemul de fișiere FAT, și mai mult. M-am oprit la CodeVision AVR.

C și CodeVision AVR

Setarea de lansare CodeVision AVR nu cauzează probleme.

La crearea unui proiect nou este foarte convenabil CodeWidard, care se generează un cod pentru a inițializa controlerul.

funcțiile bibliotecilor funcționează, dar am dat peste câteva dintre caracteristicile:
  • delay_ms () resetează WDT. Pentru ceea ce poate duce explica printr-un exemplu. Conform întreruperii timer este deservită tastatura matrice, care are un apel delay_ms (). În cazul în care podvisnet programul principal la repornire WDT nu va întrerupe o rulare și WDT reseta în mod regulat. SPI și funcțiile 1wire locul de muncă, dar ele implică interdicția este întreruptă. În cazul în care întreruperile de ore și nu doresc un dop sau a pus suplimentar cip RTC sau pentru a prinde sfârșitul de întrerupere, și apelați funcțiile imediat după întrerupere.
  • Dacă este selectat unsigned char proiect modul de compilator, este imposibil de a crea unul dintre un semnat, de exemplu, următorul cod va avea ca rezultat visu: Visim pentru că el încă nesemnat și este întotdeauna mai mare sau egal cu 0. Ghinion!
Datorită arhitecturii semnelor AVR pot include:
  • doar indicii pentru RAM (dacă alegeți un model mic, atunci aceste indicii pe 8 biți)
  • indicii la flash, 16 biți, de exemplu, bliț char []
  • indicii pentru eeprom, 16 biți, de exemplu eeprom char []

Pointerii pot fi zero. Cineva a spus că dacă (PTR == NULL)

Aici sunt scurte și toate.