Innehållsförteckning:
Video: AVR/Arduino blinkar med hallon Pi: 3 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
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
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
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
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:
Motorcykel bakljus med integrerade blinkar med programmerbara lysdioder: 4 steg
Motorcykel baklampa med integrerade blinkar med programmerbara lysdioder: Hej! Detta är lite enkelt DIY om hur man gör en anpassad programmerbar RGB -baklampa (med integrerade blinkar/indikatorer) för din motorcykel eller eventuellt något som använder WS2812B (individuellt adresserbara lysdioder) och Arduinos . Det finns fyra ljuslägen
LED blinkar med hallon Pi - Hur man använder GPIO -pins på Raspberry Pi: 4 steg
LED blinkar med hallon Pi | Hur man använder GPIO -stift på Raspberry Pi: Hej killar i denna instruktion kommer vi att lära oss hur man använder GPIO: er från Raspberry pi. Om du någonsin har använt Arduino vet du förmodligen att vi kan ansluta LED -omkopplare etc. till dess stift och få det att fungera som. få lysdioden att blinka eller få ingång från strömbrytaren så
AVR -mikrokontroller. Lysdioder blinkar med timer. Timers avbryter. Timer CTC -läge: 6 steg
AVR -mikrokontroller. Lysdioder blinkar med timer. Timers avbryter. Timer CTC -läge: Hej alla! Timers är ett viktigt koncept inom elektronik. Varje elektronisk komponent fungerar på en tidsbas. Denna tidsbas hjälper till att hålla allt arbete synkroniserat. Alla mikrokontroller fungerar med någon fördefinierad klockfrekvens,
PCB -design av lysdioder som blinkar med 555 IC: 7 steg (med bilder)
PCB -design av lysdioder som blinkar med 555 IC: HELLO I den här instruktionsboken gav jag bara blinkande LED -krets och PCB -layout om du har några tvivel om några steg, gå bara igenom min tidigare instruerbara PCB -design med enkla och enkla steg, annars går du igenom videon bifogad till den
Blinkar en Meraki / Accton / Fonero med OpenWRT med Linux: 3 steg
Blinkar en Meraki / Accton / Fonero med OpenWRT med Linux: Denna instruktion visar hur du flashar din Meraki / Accton / Fonero -maskinvara med OpenWRT Linux med en Linux -dator. Författarens webbplats: http://ruckman.net