Indholdsfortegnelse:

AVR/Arduino Blinker Med Raspberry Pi: 3 trin (med billeder)
AVR/Arduino Blinker Med Raspberry Pi: 3 trin (med billeder)

Video: AVR/Arduino Blinker Med Raspberry Pi: 3 trin (med billeder)

Video: AVR/Arduino Blinker Med Raspberry Pi: 3 trin (med billeder)
Video: Lesson 2: Getting Arduino Software and using Documentation for SunFounder Arduino Kit | SunFounder 2024, Juli
Anonim
AVR/Arduino Blinker Med Hindbær Pi
AVR/Arduino Blinker Med Hindbær Pi

En in-system programmerer (ISP) er en enhed, du kan bruge til at programmere mange mikrokontrollere, for eksempel ATMega328p, der er hjernen i en Arduino Uno. Du kan købe noget som en USBtinyISP, eller du kan endda bruge en Arduino. Denne instruktive viser dig, hvordan du bruger en Raspberry Pi som en internetudbyder.

Avrdude -programmet, som er, hvad Arduino IDE bruger under emhætten til at blinke chips, kan bruges sammen med mange programmører. En af mulighederne er at bruge SPI -benene på Pi's udvidelsesport. Jeg vil forklare, hvordan man laver de passende forbindelser, sammensætter et simpelt kredsløb på perfboard, så du ikke behøver at foretage ledningerne hver gang, du vil blinke en chip, og hvordan du installerer og bruger avrdude. Jeg vil også vise dig, hvordan du får programmer til at kompilere ved hjælp af Arduino IDE på en AVR -chip, f.eks. En ATmega eller ATtiny ved hjælp af denne metode.

Ting der er nødvendige:

  • Raspberry Pi med den nyeste Raspbian installeret
  • 40-benet hanstik (eller 26-benet hvis du har en ældre Pi)
  • IDE -kabel til tilslutning til din Pi
  • 16 MHz krystalresonator
  • 22 pF kondensatorer (2)
  • LED (1) for at angive programmeringsstatus
  • 8, 14 og/eller 28 -pins IC -stik, afhængigt af hvilken form for chips du vil blinke
  • Nogle perfboard, ledninger, loddetin

Trin 1: Bygning af skomagervedhæftning

Bygning skomager vedhæftet fil
Bygning skomager vedhæftet fil
Bygning skomager vedhæftet fil
Bygning skomager vedhæftet fil
Bygning skomager vedhæftet fil
Bygning skomager vedhæftet fil

Serial Peripheral Interface (SPI), også kaldet firetrådsseriel, er en måde at kommunikere mellem en enkelt masterenhed og en eller flere slaveenheder. Vi vil bruge dette til at blinke chips, med Pi som master og chippen som slave. Du opretter følgende forbindelser mellem Pi og din chip (se pinouts ovenfor for forskellige AVR'er og Pi -udvidelsesporte for at vide, hvilke pins der er):

  • Tilslut MOSI (master-out-slave-in) stifterne sammen
  • Tilslut SCLK -benene (delt ur) sammen
  • Tilslut MISO (master-in-slave-out) benene sammen med en 220 Ohm modstand, for at beskytte Pi mod uventet høje spændinger fra chippen
  • Tilslut GPIO 25 på Pi direkte til RESET -stiften på chippen. Pi trækker denne pin lavt, når du programmerer, så vi bruger en 10K modstand til at holde den høj, når den ikke programmeres, og en LED med en 1K beskyttelsesmodstand, der kører til positiv spænding for at give os en god visuel feedback, når den programmerer.

Vi forbinder jord og strøm (3.3V) ben mellem Pi og de chips, vi vil programmere. Hvis du ikke allerede ved det, er Raspberry Pi's pins ikke tolerante 5V - de vil blive beskadiget, hvis der vises mere end 3,3V på dem. Hvis de chips, der skal programmeres, har brug for 5V strøm af en eller anden grund, kunne vi bruge en niveauskifterchip til at beskytte Pi's pins, men jeg har ikke stødt på problemer med at bruge 3.3V - så jeg anbefaler at spille det sikkert og spare på komponenter.

Endelig tilslutter vi en 16MHz krystaloscillator på tværs af XTAL -benene på chippen, som vi også forbinder til jorden via et par 22pF kondensatorer. AVR -chips kan indstilles til at køre på forskellige frekvenser og kan også indstilles til at bruge en intern eller ekstern kilde til at bestemme denne frekvens. Hvis din chip er indstillet til at bruge en ekstern krystal som frekvenskilde, kan du ikke omprogrammere uden den. Ellers er det ligegyldigt, om det er der.

Du kan bruge kredsløbsskematikken i det sidste billede som en vejledning til at samle din skomagerfæste på perfboard. Du kan have så mange eller så få forskellige former for IC -stik, som du vil, bare tilslut de passende stifter parallelt med Pi og krystallen. N. B. Hvis du bruger billedet af min prototype som en vejledning, skal du bemærke, at jeg tilføjede nogle ekstra headerstifter og stik, så jeg kunne få adgang til stifter på Pi af uafhængige årsager.

Trin 2: Installation og brug af Avrdude

Installation og brug af Avrdude
Installation og brug af Avrdude
Installation og brug af Avrdude
Installation og brug af Avrdude
Installation og brug af Avrdude
Installation og brug af Avrdude
Installation og brug af Avrdude
Installation og brug af Avrdude

For at installere avrdude på din Pi skal du bare skrive

sudo apt-get install avrdude

Du skal derefter aktivere SPI -grænsefladen, hvis den ikke allerede er blevet tændt. Der er en kommandolinjemåde til at gøre dette, men det er meget lettere at bruge Raspberry Pi-konfigurationsværktøjet. Type

sudo raspi-config

og gå til grænsefladeindstillinger for at aktivere SPI.

For at blinke din chip skal du sætte båndkablet fra din Pi i stikket på perfboard -kredsløbet og indsætte chippen i den relevante IC -stikkontakt (sørg for at den vender den rigtige vej).

Når du blinker med et program, skal du også sørge for at indstille sikringerne i chippen korrekt. Disse er virkelig bare bits i chippen, som du indstiller for at fortælle den, hvilken urhastighed der skal køres på, om du vil slette EEPROM, når du skriver chippen osv. Du kan læse hele AVR -specifikationen for at finde ud af at indstille hver bit, men det er meget lettere at bruge sikringsberegneren på engbedded.com/fusecalc. Vælg det AVR -delnavn, du bruger, og vælg de ønskede indstillinger i området "Funktionsvalg". Jeg sørger normalt bare for, at urindstillingerne er rigtige og lader de andre ting stå som standard. Du vil næsten altid forlade "Seriel programmering aktiveret" Tjekket og "Nulstil deaktiveret" UMÆRKET - ellers kan du ikke omprogrammere chippen. Når du har de rigtige indstillinger, kan du rulle ned i området "Aktuelle indstillinger" og kopiere AVRDUDE -argumenterne som vist på billedet.

For at indstille sikringerne skal du indtaste kommandoen

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

hvor delnavn svarer til den chip, du bruger. Du kan finde listen over delnavne ved at indtaste sudo ardude -c linuxspi -p? Type. For at blinke dit program, skal du sørge for, at det er i din nuværende bibliotek og indtaste

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash: w:: i

Efter begge kommandoer lyser LED'en, mens chippen ændres.

Trin 3: Få Arduino -programmer til AVR'er

Få Arduino -programmer til AVR'er
Få Arduino -programmer til AVR'er
Få Arduino -programmer til AVR'er
Få Arduino -programmer til AVR'er
Få Arduino -programmer til AVR'er
Få Arduino -programmer til AVR'er

Hovedfokus for denne instruktør er at blinke allerede kompilerede programmer på chips, ikke hvordan man skriver eller kompilerer dem. Jeg ville dog forklare, hvordan du kan kompilere binære filer ved hjælp af Arduino IDE og få dem på bare AVR -chips ved hjælp af denne metode, da Arduino er relativt let at lære, og der er så mange tutorials og eksempler.

Først skal du tilføje oplysninger om AVR -chips, du blinker, så IDE ved, hvordan de skal kompilere til dem. James Sleeman har meget nyttigt sammensat nogle installationsfiler, som er tilgængelige på github. For at bruge dem skal du åbne menuen "Præferencer" i Arduino IDE og klikke på feltet ud for feltet "Yderligere Boards Manager -webadresser". Kopier og indsæt følgende webadresser i den dialogboks, der vises:

Gå derefter til menuen "Værktøjer" og find indstillingen "Boards Manager …" i undermenuen "Board". Rul ned til bunden af listen i dialogboksen Boards Manager, og installer DIY ATmega og DIY ATtiny boards.

For at kompilere dine programmer skal du først kontrollere, at du har valgt den korrekte chip i menuen "Processor" samt den korrekte processorhastighed. Vælg indstillingen "Brug Bootloader: Nej", da vi uploader direkte med Pi og dermed kan bruge den ekstra plads, der normalt ville blive optaget af Arduino bootloader. Klik nu på knappen "Bekræft" (fluebenet). Dette vil kompilere dit program uden at forsøge at uploade det (da du selv gør det trin).

Forudsat at alt går fint, skal du nu få det kompilerede program til din Pi. IDE gemmer dem på et midlertidigt sted, da det er designet til at uploade programmer selv. I Windows er det i AppData/Local/Temp i din brugermappe, i en mappe, der begynder med 'arduino_build'. Kig efter.hex filen - det er dit program! Send den over til din Pi via FTP eller med en USB -stick, og du er i gang.

Dette kræver, at du har en Windows -pc eller Mac til at kompilere dine programmer, som du derefter sender til Pi. Det ville være virkelig glat at kunne gøre dette på selve Pi, men desværre er den officielle version af Arduino IDE tilgængelig i Raspbian -depotet ret gammel og har ikke bestyrelseschefen. Uden dette er det lidt vanskeligere at tilføje de passende indstillinger til at kompilere til bare AVR'er. Der er selvstudier derude til at kompilere en nyere version af Arduino på din Pi - hvis det er det du vil gøre, så find dem! Jeg føler også, at det burde være muligt at få IDE'en til at bruge linuxspi -programmereren til at blinke en chip inde fra selve IDE'en (dvs. ved hjælp af "download" -knappen), men dette er uden for min tålmodighed og færdighedsniveau - hvis du kender til en måde, post det i kommentarerne! Endelig kan du bare skrive programmer direkte i AVR-C og kompilere dem på Pi med avr-gcc, hvilket giver dig en komplet AVR-udviklingsplatform i Raspberry Pi. Jeg har gjort en lille smule af det, og hvis du vil gå den vej, hilser jeg dig. Bliv blinkende!

Anbefalede: