Innehållsförteckning:

AVR/Arduino blinkar med hallon Pi: 3 steg (med bilder)
AVR/Arduino blinkar med hallon Pi: 3 steg (med bilder)

Video: AVR/Arduino blinkar med hallon Pi: 3 steg (med bilder)

Video: AVR/Arduino blinkar med hallon Pi: 3 steg (med bilder)
Video: Lesson 2: Getting Arduino Software and using Documentation for SunFounder Arduino Kit | SunFounder 2024, November
Anonim
AVR/Arduino blinkar med hallon Pi
AVR/Arduino blinkar med hallon Pi

En systemprogrammerare (ISP) är en enhet som du kan använda för att programmera många mikrokontroller, till exempel ATMega328p som är hjärnan i en Arduino Uno. Du kan köpa något som en USBtinyISP, eller så kan du till och med använda en Arduino. Denna instruerbara visar dig hur du använder en Raspberry Pi som en ISP.

Avrdude -programmet, som är vad Arduino IDE använder under huven för att flasha chips, kan användas med många programmerare. Ett av dess alternativ är att använda SPI -stiften på Pi: s expansionsport. Jag ska förklara hur man gör lämpliga anslutningar, sätta ihop en enkel krets på perfboard så att du inte behöver göra om ledningarna varje gång du vill blinka ett chip och hur du installerar och använder avrdude. Jag ska också visa dig hur du får program sammanställda med Arduino IDE till ett AVR -chip, till exempel en ATmega eller ATtiny med denna metod.

Saker som behövs:

  • Raspberry Pi med senaste Raspbian installerat
  • 40-stifts hanuttaguttag (eller 26-stift om du har en äldre Pi)
  • IDE -kabel för anslutning till din Pi
  • 16 MHz kristallresonator
  • 22 pF kondensatorer (2)
  • LED (1) för att indikera programmerarens status
  • 8, 14 och/eller 28 -stifts IC -uttag, beroende på vilken form av chips du vill blinka
  • Någon perfboard, trådar, löd

Steg 1: Bygga skomakare

Building Cobbler Attachment
Building Cobbler Attachment
Building Cobbler Attachment
Building Cobbler Attachment
Building Cobbler Attachment
Building Cobbler Attachment

Serial Peripheral Interface (SPI), även kallat fyrtrådsseriell, är ett sätt att kommunicera mellan en enda master-enhet och en eller flera slavenheter. Vi kommer att använda detta för att flasha chips, med Pi som master och chip som slav. Du kommer att göra följande anslutningar mellan Pi och ditt chip (se pinouts ovan för olika AVR- och Pi -expansionsportar för att veta vilka stift som är vilka):

  • Anslut MOSI-stiften (master-out-slav-in) tillsammans
  • Anslut SCLK -stiften (delad klocka) tillsammans
  • Anslut MISO (master-in-slave-out) stiften tillsammans med ett 220 Ohm motstånd, för att skydda Pi från oväntat höga spänningar från chipet
  • Anslut GPIO 25 på Pi direkt till RESET -stiftet på chipet. Pi drar denna stift lågt vid programmering, så vi använder ett 10K -motstånd för att hålla det högt när det inte programmeras, och en LED med ett 1K -skyddsmotstånd som går till positiv spänning för att ge oss lite fin visuell feedback när den programmerar.

Vi ansluter jord och ström (3.3V) stift mellan Pi och chips vi vill programmera. Om du inte redan vet är Raspberry Pi -stiften inte 5V -toleranta - de skadas om mer än 3,3V visas på dem. Om de marker som programmeras behöver 5V ström av någon anledning, kan vi använda ett nivåskiftchip för att skydda Pi: s stift, men jag har inte stött på några problem med att använda 3,3V - så jag rekommenderar att spela säkert och spara på komponenter.

Slutligen ansluter vi en 16MHz kristalloscillator över XTAL -stiften på chipet, som vi också ansluter till jord via ett par 22pF kondensatorer. AVR -chips kan ställas in för att köra vid olika frekvenser, och kan också ställas in för att använda en intern eller extern källa för att bestämma den frekvensen. Om ditt chip är inställd på att använda en extern kristall som dess frekvenskälla kommer du inte att kunna programmera om utan den. Annars spelar det ingen roll om den finns där.

Du kan använda kretsschemat i den sista bilden som en guide för att montera din skomakare på perfboard. Du kan ha så många eller så få olika former av IC -uttag som du vill, anslut bara de lämpliga stiften parallellt med Pi och kristallen. N. B. om du använder bilden av min prototyp som en guide, observera att jag lade till några extra sidhuvudnålar och uttag så att jag kunde komma åt stiften på Pi av orelaterade skäl.

Steg 2: Installera och använda Avrdude

Installera och använda Avrdude
Installera och använda Avrdude
Installera och använda Avrdude
Installera och använda Avrdude
Installera och använda Avrdude
Installera och använda Avrdude
Installera och använda Avrdude
Installera och använda Avrdude

För att installera avrdude på din Pi, skriv bara

sudo apt-get install avrdude

Du måste då aktivera SPI -gränssnittet om det inte redan har aktiverats. Det finns ett kommandorads sätt att göra detta, men det är mycket lättare att använda konfigurationsverktyget Raspberry Pi. Typ

sudo raspi-config

och gå till gränssnittsalternativ för att aktivera SPI.

För att blinka ditt chip, anslut bandkabeln från din Pi till kontakten på perfboard -kretsen och sätt in chipet i lämpligt IC -uttag (se till att det vänder åt rätt håll).

När du blinkar ett program måste du också se till att säkringen i chipet är korrekt. Det här är egentligen bara bitar i chipet som du ställer in för att berätta vilken klockhastighet du vill köra på, om du vill radera EEPROM när du skriver chipet etc. Du kan läsa hela AVR -specifikationen för att ta reda på hur du ställer in varje bit, men det är mycket lättare att använda säkringsräknaren på engbedded.com/fusecalc. Välj det AVR -delnamn du använder och välj önskade alternativ i området "Funktionsval". Jag brukar bara se till att klockinställningarna är rätt och lämna de andra sakerna som standard. Du kommer nästan alltid att vilja lämna "Seriell programmering aktiverad" KONTROLLERAD och "Återställ inaktiverad" AVKRÄCKAD - annars kommer du inte att kunna programmera om chippet. När du har rätt inställningar kan du rulla ner i området "Aktuella inställningar" och kopiera AVRDUDE -argumenten som visas på bilden.

Ange kommandot för att ställa in säkringarna

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

där delnamn motsvarar det chip du använder. Du hittar listan med artikelnamn genom att ange sudo ardude -c linuxspi -p? -Typ. För att blinka ditt program, se till att det finns i din nuvarande katalog och ange

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

Efter båda kommandona tänds lysdioden medan chipet ändras.

Steg 3: Få Arduino -program till AVR

Få Arduino -program till AVR
Få Arduino -program till AVR
Få Arduino -program till AVR
Få Arduino -program till AVR
Få Arduino -program till AVR
Få Arduino -program till AVR

Huvudfokus för denna instruerbara är att blinka redan kompilerade program på chips, inte hur man skriver eller kompilerar dem. Jag ville dock förklara hur du kan kompilera binärer med Arduino IDE och få dem till bara AVR -chips med denna metod, eftersom Arduino är relativt lätt att lära sig och det finns så många handledning och exempel.

Först måste du lägga till information om AVR -chipsen du kommer att blinka så att IDE vet hur de ska kompilera för dem. James Sleeman har mycket hjälpsamt sammanställt några installationsfiler som finns på github. Om du vill använda dem öppnar du menyn "Inställningar" i Arduino IDE och klickar på rutan bredvid fältet "Extra Boards Manager URLs". Kopiera och klistra in följande webbadresser i dialogrutan som visas:

Gå sedan till menyn "Verktyg" och hitta alternativet "Boards Manager …" i undermenyn "Board". Rulla ner till botten av listan i dialogrutan Boards Manager och installera DIY ATmega och DIY ATtiny -korten.

För att kompilera dina program, se först till att du har valt rätt chip i "Processor" -menyn, liksom rätt processorhastighet. Välj alternativet "Använd Bootloader: Nej", eftersom vi kommer att ladda upp direkt med Pi och därmed kan använda det extra utrymme som normalt skulle tas upp av Arduino bootloader. Klicka nu på "Verifiera" -knappen (bockmarkeringen). Detta kommer att kompilera ditt program utan att försöka ladda upp det (eftersom du gör det steget själv).

Om allt går bra måste du nu få det kompilerade programmet till din Pi. IDE gömmer dem på en tillfällig plats, eftersom den är utformad för att ladda upp program själv. I Windows finns det i AppData/Local/Temp i din användarkatalog, i en mapp som börjar med 'arduino_build'. Leta efter.hex -filen - det är ditt program! Skicka den till din Pi via FTP eller med ett USB -minne, så är du i affärer.

För att göra detta krävs att du har en Windows -dator eller Mac för att kompilera dina program, som du sedan skickar till Pi. Det skulle vara riktigt snyggt att kunna göra detta på själva Pi, men tyvärr är den officiella versionen av Arduino IDE som finns i Raspbian -förvaret ganska gammal och har inte styrelsechefen. Utan detta är det lite svårare att lägga till lämpliga inställningar för att kompilera för bara AVR. Det finns handledning där ute för att sammanställa en nyare version av Arduino på din Pi - om det är vad du vill göra, leta efter dem! Jag tycker också att det borde vara möjligt att få IDE att använda linuxspi -programmeraren för att blinka ett chip inifrån själva IDE (dvs med hjälp av "ladda ner" -knappen), men det ligger utanför mitt tålamod och min kompetensnivå - om du känner till ett sätt, posta det i kommentarerna! Slutligen kan du bara skriva program direkt i AVR-C och kompilera dem på Pi med avr-gcc, vilket ger dig en komplett AVR-utvecklingsplattform i Raspberry Pi. Jag har gjort en liten bit av det, och om du vill gå den vägen hälsar jag dig. Blinka!

Rekommenderad: