Innholdsfortegnelse:

AVR/Arduino blinkende med bringebær Pi: 3 trinn (med bilder)
AVR/Arduino blinkende med bringebær Pi: 3 trinn (med bilder)

Video: AVR/Arduino blinkende med bringebær Pi: 3 trinn (med bilder)

Video: AVR/Arduino blinkende med bringebær Pi: 3 trinn (med bilder)
Video: LDmicro 22: платы Arduino с AVRDUDESS (программирование микроконтроллеров с помощью LDmicro) 2024, Juli
Anonim
AVR/Arduino blinkende med bringebær Pi
AVR/Arduino blinkende med bringebær Pi

En in-system programmerer (ISP) er en enhet du kan bruke til å programmere mange mikrokontrollere, for eksempel ATMega328p som er hjernen til en Arduino Uno. Du kan kjøpe noe som en USBtinyISP, eller du kan til og med bruke en Arduino. Denne instruksen vil vise deg hvordan du bruker en Raspberry Pi som en ISP.

Avrdude -programmet, som er det Arduino IDE bruker under panseret for å blinke sjetonger, kan brukes med mange programmerere. Et av alternativene er å bruke SPI -pinnene på Pi -ekspansjonsporten. Jeg skal forklare hvordan du gjør de riktige tilkoblingene, setter sammen en enkel krets på perfboard, slik at du ikke trenger å gjøre om ledningene hver gang du vil blinke en brikke, og hvordan du installerer og bruker avrdude. Jeg vil også vise deg hvordan du får programmer kompilert ved hjelp av Arduino IDE på en AVR -brikke, for eksempel en ATmega eller ATtiny ved å bruke denne metoden.

Ting som trengs:

  • Raspberry Pi med siste Raspbian installert
  • 40-pins mannlig headerkontakt (eller 26-pins hvis du har en eldre Pi)
  • IDE -kabel for å koble til din Pi
  • 16 MHz krystallresonator
  • 22 pF kondensatorer (2)
  • LED (1) for å indikere programmeringsstatus
  • 8, 14 og/eller 28 -pinners IC -kontakter, avhengig av hvilken form for chips du vil blinke
  • Litt perfboard, ledninger, loddetinn

Trinn 1: Bygge skomakervedlegg

Bygge skomaker vedlegg
Bygge skomaker vedlegg
Bygge skomaker vedlegg
Bygge skomaker vedlegg
Bygge skomaker vedlegg
Bygge skomaker vedlegg

Serial Peripheral Interface (SPI), også kalt firetrådsseriell, er en måte å kommunisere mellom en enkelt masterenhet og en eller flere slaveenheter. Vi vil bruke dette til å blinke chips, med Pi som master og chip som slave. Du vil gjøre følgende tilkoblinger mellom Pi og brikken din (se pinoutene ovenfor for forskjellige AVR- og Pi -utvidelsesporter for å vite hvilke pins som er hvilke):

  • Koble MOSI-pinnene (master-out-slave-in) sammen
  • Koble SCLK -pinnene (delt klokke) sammen
  • Koble MISO (master-in-slave-out) pinnene sammen med en 220 Ohm motstand, for å beskytte Pi mot uventet høye spenninger fra brikken
  • Koble GPIO 25 på Pi direkte til RESET -pinnen på brikken. Pi trekker denne pinnen lavt når du programmerer, så vi bruker en 10K motstand for å holde den høy når den ikke programmeres, og en LED med en 1K beskyttelsesmotstand som går til positiv spenning for å gi oss noen fine visuelle tilbakemeldinger når den programmerer.

Vi kobler bakken og strøm (3.3V) pins mellom Pi og chips vi vil programmere. Hvis du ikke allerede vet det, er Raspberry Pi -pinnene ikke 5V -tolerante - de vil bli skadet hvis mer enn 3,3V vises på dem. Hvis brikkene som er programmert trenger 5V strøm av en eller annen grunn, kan vi bruke en nivåskifterbrikke for å beskytte Pi -pinnene, men jeg har ikke fått problemer med å bruke 3,3V - så jeg anbefaler å spille det trygt og spare på komponenter.

Til slutt kobler vi til en 16MHz krystalloscillator på tvers av XTAL -pinnene på brikken, som vi også kobler til bakken via et par 22pF kondensatorer. AVR -brikker kan settes til å kjøre på forskjellige frekvenser, og kan også settes til å bruke en intern eller ekstern kilde for å bestemme frekvensen. Hvis brikken din er satt til å bruke en ekstern krystall som frekvenskilde, vil du ikke kunne omprogrammere uten den. Ellers spiller det ingen rolle om den er der.

Du kan bruke kretsskjemaet i det siste bildet som en guide for montering av skomakerfeste på perfboard. Du kan ha så mange eller så få forskjellige former for IC -kontakter som du vil, bare koble de riktige pinnene parallelt med Pi og krystallet. N. B. Hvis du bruker bildet av prototypen min som en veiledning, vær oppmerksom på at jeg la til noen ekstra headerpinner og stikkontakter, slik at jeg kunne få tilgang til pins på Pi av ikke -relaterte årsaker.

Trinn 2: Installere og bruke Avrdude

Installere og bruke Avrdude
Installere og bruke Avrdude
Installere og bruke Avrdude
Installere og bruke Avrdude
Installere og bruke Avrdude
Installere og bruke Avrdude
Installere og bruke Avrdude
Installere og bruke Avrdude

For å installere avrdude på Pi, bare skriv

sudo apt-get install avrdude

Du må da aktivere SPI -grensesnittet hvis det ikke allerede er slått på. Det er en kommandolinje-måte å gjøre dette på, men det er mye lettere å bruke Raspberry Pi-konfigurasjonsverktøyet. Type

sudo raspi-config

og gå til Grensesnittalternativer for å slå på SPI.

For å blinke brikken din, koble båndkabelen fra Pi -en til kontakten på perfboardkretsen og sett inn brikken i den riktige IC -kontakten (sørg for at den vender på riktig måte).

Når du blinker med et program, må du også sørge for å sette sikringene i brikken riktig. Dette er egentlig bare biter i brikken som du angir for å fortelle hvilken klokkehastighet du skal kjøre på, om du vil slette EEPROM når du skriver brikken, etc. Du kan lese hele AVR -spesifikasjonen for å finne ut hvordan du setter hver bit, men det er mye lettere å bruke sikringskalkulatoren på engbedded.com/fusecalc. Velg AVR -delenavnet du bruker, og velg alternativene du ønsker i området "Funksjonsvalg". Jeg pleier bare å kontrollere at klokkeinnstillingene er riktige og la de andre tingene stå som standard. Du vil nesten alltid la "Seriell programmering aktivert" MERKET og "Tilbakestill deaktivert" UMERKET - ellers kan du ikke omprogrammere brikken. Når du har de riktige innstillingene, kan du rulle ned i "Aktuelle innstillinger" -området og kopiere AVRDUDE -argumentene som vist på bildet.

For å sette sikringene, skriv inn kommandoen

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

der delnavn tilsvarer brikken du bruker. Du finner listen over delnavn ved å skrive sudo ardude -c linuxspi -p? Type. For å blinke programmet må du kontrollere at det er i din nåværende katalog og skrive inn

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

Etter begge kommandoene lyser LED -en mens brikken endres.

Trinn 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

Hovedfokuset for denne instruksen er å blinke allerede kompilerte programmer på sjetonger, ikke hvordan du skriver eller kompilerer dem. Imidlertid ønsket jeg å forklare hvordan du kan kompilere binære filer ved hjelp av Arduino IDE og få dem på bare AVR -brikker ved å bruke denne metoden, siden Arduino er relativt lett å lære og det er så mange opplæringsprogrammer og eksempler.

Først må du legge til informasjon om AVR -brikkene du vil blinke slik at IDE vet hvordan de skal kompilere for dem. James Sleeman har veldig nyttig satt sammen noen oppsettfiler, som er tilgjengelige på github. For å bruke dem, åpner du "Preferanser" -menyen i Arduino IDE og klikker i boksen ved siden av feltet "Ekstra Boards Manager -URLer". Kopier og lim inn følgende URL -er i dialogboksen som vises:

Gå deretter til "Verktøy" -menyen og finn alternativet "Boards Manager …" i undermenyen "Board". Rull ned til bunnen av listen i dialogboksen Boards Manager og installer DIY ATmega og DIY ATtiny boards.

For å kompilere programmene dine må du først kontrollere at du har valgt riktig brikke i "Prosessor" -menyen, samt riktig prosessorhastighet. Velg alternativet "Bruk oppstartslaster: Nei", siden vi vil laste opp direkte med Pi og dermed kan bruke den ekstra plassen som normalt ville bli tatt opp av Arduino -opplaster. Klikk nå på "Bekreft" -knappen (haken). Dette vil kompilere programmet ditt uten å prøve å laste det opp (siden du gjør det trinnet selv).

Forutsatt at alt går bra, må du nå få det kompilerte programmet til din Pi. IDE gjemmer dem på et midlertidig sted, siden det er designet for å laste opp programmer selv. På Windows er det i AppData/Local/Temp i brukerkatalogen din, i en mappe som begynner med 'arduino_build'. Se etter.hex -filen - det er programmet ditt! Send den over til din Pi via FTP eller med en USB -pinne, så er du i gang.

Å gjøre dette krever at du har en Windows -PC eller Mac for å kompilere programmene dine, som du deretter sender til Pi. Det ville være veldig glatt å kunne gjøre dette på selve Pi, men dessverre er den offisielle versjonen av Arduino IDE tilgjengelig i Raspbian -depotet ganske gammel og har ikke styrelederen. Uten dette er det litt vanskeligere å legge til de riktige innstillingene for å kompilere for bare AVR -er. Det finnes opplæringsprogrammer der ute for å kompilere en nyere versjon av Arduino på din Pi - hvis det er det du vil gjøre, finn dem! Jeg føler også at det burde være mulig å få IDE til å bruke linuxspi -programmereren til å blinke en brikke fra selve IDE -en (dvs. ved å bruke "last ned" -knappen), men dette er utenfor min tålmodighet og ferdighetsnivå - hvis du vet om en måte, legg det ut i kommentarene! Til slutt kan du bare skrive programmer direkte i AVR-C og kompilere dem på Pi med avr-gcc, noe som gir deg en komplett AVR-utviklingsplattform i Raspberry Pi. Jeg har gjort en liten bit av det, og hvis du vil gå den ruten, hilser jeg deg. Bli blinkende!

Anbefalt: