Innholdsfortegnelse:

Slik bruker du Dragon Rider 500 med din AVR -drage: 10 trinn
Slik bruker du Dragon Rider 500 med din AVR -drage: 10 trinn

Video: Slik bruker du Dragon Rider 500 med din AVR -drage: 10 trinn

Video: Slik bruker du Dragon Rider 500 med din AVR -drage: 10 trinn
Video: Dodge 3/4. Эту модель не любят в России? Новая модель от фирмы Звезда 2024, Juli
Anonim
Slik bruker du Dragon Rider 500 med AVR -dragen din
Slik bruker du Dragon Rider 500 med AVR -dragen din

Denne instruksen er et krasjkurs i hvordan du bruker noen av funksjonene til Dragon Rider 500 fra Ecros Technologies. Vær oppmerksom på at det er en veldig detaljert brukerhåndbok tilgjengelig på Ecros -nettstedet.

The Dragon Rider er et grensesnittkort for bruk med en AVR mikrokontroller programmerer kalt AVR Dragon av Atmel. For mer informasjon: Atmel's Wesite: https://www.atmel.com/ AVR Dragon link: https://www.atmel.com/dyn/products/tools_card.asp? Tool_id = 3891 Dragon Rider 500 av Ecros Technology: https://www.ecrostech.com/AtmelAvr/DragonRider/index.htm Dragon Rider 500 montering Instruerbar: https://www.instructables.com/id/Assembling-the-Dragon-Rider-500-for-use-with- the-A/Lær alt om AVR-mikrokontrollerne: https://www.avrfreaks.net Denne instruksen kan vokse med tiden, så sjekk igjen og igjen!

Trinn 1: AVR Dude

Du trenger litt programmeringsprogramvare for å bruke AVR Dragon for programmering. Jeg bruker AVRdude med Ubuntu -operativsystemet (linux), og jeg er veldig fornøyd med resultatene. Denne instruksen vil ikke håndtere vanskelighetene med programmeringsprogramvare. Hvis du ikke vet hvordan du konfigurerer eller bruker programmeringsprogramvare, kan du sjekke denne instruksjonsboken for å komme deg i gang: https://www.instructables.com/id/Getting-started-with-ubuntu-and-the- AVR-dragon/Min gjetning er at hvis du har kjøpt og satt sammen en Dragon Rider 500, vet du allerede hvordan du skal programmere en brikke med AVR Dragon….. og videre!

Trinn 2: ATtiny2313 - Blink lysdiodene

ATtiny2313 - Blink lysdiodene
ATtiny2313 - Blink lysdiodene
ATtiny2313 - Blink lysdiodene
ATtiny2313 - Blink lysdiodene
ATtiny2313 - Blink lysdiodene
ATtiny2313 - Blink lysdiodene

La oss programmere en ATtiny2313 som er en 20-pinners mikrokontroller. Dragon Rider 500 har stikkontakter for flere forskjellige størrelser AVR-mikrokontroller. Disse inkluderer: 8, 20, 28 og 40 pinners stikkontakter. Avhengig av hvilken kontakt du bruker, må hoppere på Dragon Rider -brettet settes annerledes.

Jumper -innstillinger

Sett hopperne på Dragon Rider slik at shuntene kobler sammen følgende pins. (pin4 er midtstiftet for J22 -J -24) Pins: J5 - 23J6 - 23J7 - 12J16 - 23J22 - 41J23 - 41J24 - 41 Dette er et grunnleggende oppsett som gjør det mulig for ISP (i systemprogrammering).

Blinker Blinker

Programmering hjelper ikke med mindre du har noe å programmere. Jeg har skrevet et veldig kort kodeeksempel for å blinke Dragon Rider's LED en om gangen. Bruk en båndkabel for å koble LED -hodet (J29) til PortB -hodet (J2).

Programmering

Jeg har inkludert C -filen, samt en makefile og hex -filen. Som jeg nevnte i introen, kan jeg ikke dekke programvaresiden av programmering i Instructable. Program som du ville gjort for AVR Dragon, ettersom Dragon Rider ikke endrer programvaresiden av ting i det hele tatt.

Trinn 3: Bruke LCD-tillegget

Bruke LCD-tillegg
Bruke LCD-tillegg

Her er en enkel måte å bruke LCD-tillegget. Dette vil skrive "Dragon Rider" til LCD -skjermen.

Maskinvare:

  • ATtiny2313
  • R/W Jumper: R/W bør kobles til "BIT1" på Dragon Rider Board (se forklaring i Assembly Instructable)
  • J23: Denne jumperen må være installert for ISP -programmering, men deretter fjernet for at LCD -skjermen skal fungere skikkelig.
  • Koble LCD -en til PORT B ved hjelp av båndkabel (J31 til J2)

Programvare

Jeg bruker Peter Fleurys LCD-bibliotek for å kjøre LCD-skjermen i 4-biters modus. Sjekk ut Peters hjemmeside for å laste ned biblioteket. Du må sørge for at lcd.c er satt sammen med koden din og at du gjør følgende endringer på lcd.h:

Vi bruker den interne RC -oscillatoren, så XTAL må settes til 1MHz:

#define XTAL 1000000

  • Portinnstillinger må justeres til PORTB:
  • #define LCD_PORT PORTB

  • Pinout for 4 datalinjer må tilpasses:
  • #definere LCD_DATA0_PIN 4 #definere LCD_DATA1_PIN 5 #definere LCD_DATA2_PIN 6 #definere LCD_DATA3_PIN 7

  • Pinout for RS, RW og E må tilpasses:
  • #define LCD_RS_PIN 3 #define LCD_RW_PIN 1 #define LCD_E_PIN 2

    Hovedprogrammet er veldig enkelt takket være arbeidet Peter Fleury gjorde i sitt LCD -bibliotek. KODE:

    #include #include "lcd.h" int main (void) {lcd_init (LCD_DISP_ON); // Initialiser LCD med markøren av lcd_clrscr (); // Fjern LCD -skjermen lcd_gotoxy (5, 0); // Flytt markøren til denne plasseringen lcd_puts ("Dragon"); // Sett denne strengen på LCD -skjermen lcd_gotoxy (6, 1); // Flytt markøren til denne plasseringen lcd_puts ("Rider"); // Sett denne strengen på LCD -skjermen for (;;) {// Gjør ingenting for alltid (melding allerede vist på LCD -skjermen)}}

    Kode vedlagt

    Koden vedlagt inkluderer Peter Fleurys LCD -bibliotek (lcd.c og lcd.h) med hans tillatelse. Takk Peter! Den eneste endringen jeg har gjort på den er å sette de riktige pinnene i Defines. Besøk nettstedet hans for å laste ned pakken: https://www.jump.to/fleuryJeg har også tatt med en makefil som jeg bruker skrevet av Eric B. Weddington og Jorg Wunsch. Jeg sendte en PM til Jorg over på avrfreaks.net, men fikk aldri noe svar fra ham. Det er noen få endringer i makefilen for å skreddersy for bruk av Linux og dragen. Takk til dere begge, vennligst gi meg beskjed om dine preferanser for at jeg deler arbeidet ditt.

    Trinn 4: 28-pinners UC ISP-programmering (ATmega8)

    28-pinners UC ISP-programmering (ATmega8)
    28-pinners UC ISP-programmering (ATmega8)
    28-pinners UC ISP-programmering (ATmega8)
    28-pinners UC ISP-programmering (ATmega8)

    Den neste prosjektdemontrasjonen vil bruke en ATmega8 som er en 28-pinners avr. Her er det grunnleggende hoppesettet for ISP-programmering av 28-pinners mikrokontrollere.

    Jumper -innstillinger

    Sett hopperne på Dragon Rider slik at shuntene kobler sammen følgende pins. (pin4 er midtstiftet for J22 -J -24) Pins: J11 - 23J12 - 23J13 - 12J16 - 23J22 - 42J23 - 42J24 - 42

    Teknisk informasjon

    • Ved å koble J11 og J12 på denne måten kan du bruke disse pinnene som I/O -pinner. Alternativet ville være å rute disse pinnene for å opprette en forbindelse med den eksterne krystallen.
    • Ved å koble J13 på denne måten kan vi bruke den som tilbakestillingsnål. Alternativet vil rute denne pinnen til PORTC -overskriften for bruk som en I/O -pinne. (dette vil ha mange ulemper, inkludert manglende evne til å programmere denne brikken ved hjelp av ISP).
    • J16 og J22-J24 er koblet på denne måten for å dirigere de riktige pinnene (Reset, MISO, MOSI og SCK) til ISP-overskriften til AVR Dragon.

    Trinn 5: Avansert bruk av LCD og knapper: den store klokken

    Avansert bruk av LCD og knapper: den store klokken
    Avansert bruk av LCD og knapper: den store klokken

    Dette er et morsomt prosjekt som bruker LCD -skjermen og knappene. Vi vil håndtere sanntidsklokkefunksjoner og egendefinerte tegn på LCD -skjermen. På bildet nederst kan du se klokken 19:26:07 som vises i store tall på LCD -skjermen. Hvert tall bruker et 2x2 rutenett med tegnvisningen for å vise det store tallet. Dette bruker en skrift som opprinnelig ble skrevet av Xtinus for XBMC -prosjektet. Knappene brukes til å stille klokken. Venstre øker timene, Opp øker minuttene, Høyre veksler mellom 12 og 24-timers tid, og Enter nullstiller sekundene. Klokken holder ikke veldig god tid da vi bruker den svært unøyaktige interne oscillatoren, men dette programmet kan enkelt endres for å bruke en mye mer nøyaktig ekstern krystall. Se dette i aksjon i videoen nedenfor. En forklaring på hvordan denne koden fungerer er i orden, men jeg har ikke tid akkurat nå. Foreløpig kobler du LCD -overskriften (J31) til PORTD (J4) og knappoverskriften (J30) til PORTB (J2). Sørg for at du har både SW1 og SW2 i av -stilling. Koble AVR Dragon til en usb -kabel og koble den andre enden av kabelen til datamaskinen. Slå på SW2 og programmer ATmega8 med programmeringsprogramvaren du ønsker (hex -fil nedenfor; sikringer brent til fabrikkinnstillinger) MERK: For å bruke venstre og opp -knappene må du fjerne shuntene fra J22 og J24, gjør dette mens strømmen er slått av.

    Trinn 6: Høyspenningsprogrammering

    Jeg har brukt High Voltage Parallel Programming til å gjenopplive en ATtiny2313 som jeg satte feil sikringsinnstillinger på. Jeg trengte det en gang til da jeg jobbet med dette instruerbare fordi jeg ved et uhell skrev lfuse -innstillingen jeg ønsket til hfuse -registeret … oops. Parallell programmering med høy spenning er et praktisk verktøy å ha til rådighet! Nedenfor er en liste over mine jumperinnstillinger: BRUK PÅ EGEN RISIKO, DENNE PROGRAMMERING KAN SKADE MASKINEN DIN HVIS DU IKKE VET HVA DU GJØR !! Parallell programmering med høy spenning: ATtiny2313 i kontakt U3: SW1 - OFFSW2 - ONJ5, J6, J7 - koble pin1 og pin2XTAL1 - koble pin1 og pin2J16 - Koble pin1 og pin22x5 IDC -kabler: PROG_CTRL til PORT D, PROG_DATA til PORT BA J8-J13, J18, J19, J20, J22-J28, J24) For andre chips bør du kunne finne ut innstillingene du trenger fra Atmels brukerveiledning for deres STK500.

    Trinn 7: Utvidelse utover styret

    Utvidelse utover styret
    Utvidelse utover styret

    Jeg synes det er ganske enkelt å koble til et brødbrett. Dette gir mye mer fleksibilitet når det gjelder prototyping og utvikling av kode samtidig. Nedenfor ser du et par brødbrett koblet til Dragon Rider. Jeg kobler båndkablene til de riktige portene i den ene enden. På den andre bruker jeg jumperwires til å koble riktig ICD -leder med brødbrettene.

    Trinn 8: Konklusjon

    Det er mye mer som kan være involvert i denne instruksjonsboken. Bare i kveld fullfører jeg en adapter som lar deg bruke den 6-pinners programmeringsoverskriften uten å fjerne dragen fra Dragon Rider. Jeg legger ut informasjon om hvordan du konstruerer en selv … kommer snart. Hvis du har andre ting du tror må legges til, legg igjen en kommentar.

    Trinn 9: Legge til en 6-pinners ISP

    Legger til en 6-pinners ISP
    Legger til en 6-pinners ISP
    Legger til en 6-pinners ISP
    Legger til en 6-pinners ISP
    Legger til en 6-pinners ISP
    Legger til en 6-pinners ISP

    Jeg bygger vanligvis inn en 6-pinners ISP-topptekst til alle prosjektene mine, slik at jeg kan omprogrammere brikken om nødvendig og ikke måtte ta den av prosjektbordet. Dragon rider har dessverre ikke en 6-pinners ISP-header tilgjengelig, men jeg fant ut hvordan jeg skulle gjøre en tilgjengelig.

    Advarsel!

    Dette er et hack. Hvis du ikke vet nøyaktig hvordan dette fungerer, ikke gjør det

    Du har blitt advart. Jeg har laget mitt eget adapterkort og 3-pinners jumper for å levere den 6-pinners ISP-hodet. Det du gjør er å sette Dragon Rider opp til å programmere og 8-pinners mikrokontroller. Ved hjelp av en 3-pinners stikkontakt hopper jeg på J8 for å koble pinnene 1 og 3. Dette dirigerer klokkesignalet til PortB-kontakten. Jeg kjører deretter en startkabel fra PortB -hodet til adapterkortet og voila! Det er bilder nedenfor …. vær så snill, vær så snill, ikke gjør dette med mindre du virkelig forstår hva du gjør, da du kan skade AVR -dragen din eller verre hvis du gjør dette feil.

    Pinout: PortB ISP1 42 13 34 NC5 NC6 57 NC8 NC9 610 2

    Trinn 10: RSS -leser ved bruk av seriell tilkobling og LCD

    RSS -leser ved bruk av seriell tilkobling og LCD
    RSS -leser ved bruk av seriell tilkobling og LCD
    RSS -leser ved bruk av seriell tilkobling og LCD
    RSS -leser ved bruk av seriell tilkobling og LCD

    Jeg fortsetter å leke med dette utviklingsbordet. Denne gangen brukte jeg en del av en ettermiddag på å utvikle en RSS -lesning (mest på pytonsiden av ting). Jeg tror ikke det garanterer sin egen instruerbare, så jeg legger det til her.

    Maskinvare

    Vi bruker Dragon Rider 500 som et utviklingstavle. Dette gir all maskinvaren du trenger (forutsatt at du har alle tilleggssettene). Når det er sagt, kan du absolutt gjøre dette med ditt eget maskinvareoppsett:

    • ATmega8 mikrokontroller (eller en som har USART og nok pinner for alle tilkoblinger
    • En måte å programmere mikrokontrolleren på (jeg bruker AVR Dragon)
    • MAX232 -brikke for seriell kommunikasjon
    • DB9 -kontakt
    • HD44780 LCD -skjerm
    • Krystall (jeg brukte en 8MHz krystall)
    • Assorterte kondensatorer og motstander

    En skjematisk er gitt nedenfor. På Dragon Rider må vi bruke litt kreativitet for å rute forbindelsene. Normalt kan port D kobles direkte til LCD -overskriften. Dette er ikke tilfelle her fordi USART som trengs for den serielle tilkoblingen bruker PD0 og PD1. Videre kan Port B ikke brukes fordi PB6 og PB7 er i bruk for den eksterne krystallet. Bildet nedenfor er min løsning på dette problemet. Jeg kobler til en båndkabel til topptekstene for LCD, port B og port D, og bruker deretter jumperkabler for å lage de riktige rutene. Ikke glem å koble til spenning og jord til LCD -overskriften.

    Programvare

    Programvaren for dette prosjektet kommer i to deler, fastvaren for mikrokontrolleren og python -skriptet for å skrape RSS -feeds og sende dem over den serielle tilkoblingen. AVR -fastvare Jeg bruker Peter Fleurys LCD -bibliotek igjen (https://jump.to /fleury). Det er kraftig og konsist, allsidig og lett å endre for maskinvareoppsettet ditt. Hvis du ser på header-filen vedlagt (lcd.h) vil du se at jeg kjører i 4-biters modus med Port D som databiter, og Port B som kontrollbiter. Konseptet med denne fastvaren er ganske enkelt:

    • Når mikrokontrolleren er slått på, viser den "RSS Reader" og venter deretter på serielle data.
    • Hver byte av mottatte serielle data får en buffer på 16 tegn til å skifte til venstre og legge byten til bufferen, og deretter vise bufferen.
    • Tre spesialkommandoer godtas av mikrokontrolleren: 0x00, 0x01 og 0x02. Disse er klare skjermbildene, gå til linje 0 og henholdsvis linje 1.

    Python ScryptI skrev et pyton -skript for å skrape RSS -dataene og sende dem over den serielle tilkoblingen. Dette krever python -modulen "pyserial" som du sannsynligvis må installere på systemet ditt for å få dette til å fungere. RSS -feed kan konfigureres øverst i pyton -filen. Legg merke til at du må skrive inn et navn på feedet så vel som feed -url. Det er tre eksempler der, jeg er sikker på at du kan følge dem for riktig syntx. Få alt til å fungere

    • Sett sammen maskinvaren
    • Programmer mikrokontrolleren (dragon_rss.hex kan brukes hvis du ikke vil kompilere dette selv). Sikringsinnstillinger for ATmega8 ved bruk av en 8 MHz krystall: lfuse = 0xEF hfuse = 0xD9
    • Slå på Dragon Rider og kontroller at seriekabelen er koblet til (LCD -skjermen skal vise: "RSS Reader")
    • Utfør python -programmet (python serial_rss.py)
    • Nyt

    Anbefalt: