Inhoudsopgave:

De Dragon Rider 500 gebruiken met uw AVR Dragon: 10 stappen
De Dragon Rider 500 gebruiken met uw AVR Dragon: 10 stappen

Video: De Dragon Rider 500 gebruiken met uw AVR Dragon: 10 stappen

Video: De Dragon Rider 500 gebruiken met uw AVR Dragon: 10 stappen
Video: The Valyrian Dragons Bigger Than Balerion & Vhagar 2024, November
Anonim
De Dragon Rider 500 gebruiken met uw AVR Dragon
De Dragon Rider 500 gebruiken met uw AVR Dragon

Dit instructable is een spoedcursus in het gebruik van enkele van de functies van de Dragon Rider 500 van Ecros Technologies. Houd er rekening mee dat er een zeer gedetailleerde gebruikershandleiding beschikbaar is op de Ecros-website.

De Dragon Rider is een interfacekaart voor gebruik met een AVR-microcontrollerprogrammeur, de AVR Dragon van Atmel. Voor meer informatie: 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 door Ecros Technology:https://www.ecrostech.com/AtmelAvr/DragonRider/index.htm Dragon Rider 500 montage Instructable:https://www.instructables.com/id/Assembling-the-Dragon-Rider-500-for-use-with- the-A/ Leer alles over de AVR-microcontrollers: https://www.avrfreaks.net Deze instructable kan met de tijd groeien, dus kom zo nu en dan terug!

Stap 1: AVR Kerel

U heeft programmeersoftware nodig om de AVR Dragon te gebruiken voor het programmeren. Ik gebruik AVRdude met het Ubuntu-besturingssysteem (linux) en ik ben erg blij met de resultaten. Deze instructable gaat niet in op de fijne kneepjes van programmeersoftware. Als je niet weet hoe je programmeersoftware moet instellen of gebruiken, bekijk dan deze instructable om je op de hoogte te houden: https://www.instructables.com/id/Getting-started-with-ubuntu-and-the- AVR-dragon/Mijn gok is dat als je een Dragon Rider 500 hebt gekocht en in elkaar hebt gezet, je al weet hoe je een chip moet programmeren met de AVR Dragon… en verder!

Stap 2: ATtiny2313 - Knipper de LED's

ATtiny2313 - Knipper de LED's
ATtiny2313 - Knipper de LED's
ATtiny2313 - Knipper de LED's
ATtiny2313 - Knipper de LED's
ATtiny2313 - Knipper de LED's
ATtiny2313 - Knipper de LED's

Laten we een ATtiny2313 programmeren, een 20-pins microcontroller. De Dragon Rider 500 heeft aansluitingen voor verschillende AVR-microcontrollers van verschillende grootte. Deze omvatten: 8, 20, 28 en 40 pins sockets. Afhankelijk van welke socket je gebruikt, moeten jumpers op het Dragon Rider-bord anders worden ingesteld.

Jumper-instellingen

Stel de jumpers op de Dragon Rider zo in dat de shunts de volgende pinnen verbinden. (pin4 is de middelste pin voor J22-J-24) Pinnen:J5 - 23J6 - 23J7 - 12J16 - 23J22 - 41J23 - 41J24 - 41Dit is een basisconfiguratie die ISP (In System Programming) mogelijk maakt.

Blinky Blinky

Programmeren heeft geen zin, tenzij je iets te programmeren hebt. Ik heb een heel kort codevoorbeeld geschreven om de LED's van de Dragon Rider één voor één te laten knipperen. Gebruik een lintkabel om de LED-header (J29) aan te sluiten op de PortB-header (J2).

Programmeren

Ik heb het C-bestand toegevoegd, evenals een makefile en het hex-bestand. Zoals ik in de intro al zei, kan ik de softwarekant van programmeren in de Instructable niet behandelen. Programmeer zoals je zou doen voor de AVR Dragon, aangezien de Dragon Rider de softwarekant helemaal niet verandert.

Stap 3: De LCD-add-on gebruiken

De LCD-add-on gebruiken
De LCD-add-on gebruiken

Hier is een eenvoudige manier om de LCD-add-on te gebruiken. Dit zal "Dragon Rider" naar het LCD-scherm schrijven.

Hardware:

  • ATtiny2313
  • R/W Jumper: R/W moet worden aangesloten op "BIT1" op het Dragon Rider Board (zie uitleg in de montage Instructable)
  • J23: Deze jumper moet worden geïnstalleerd voor ISP-programmering, maar vervolgens worden verwijderd om het LCD-scherm correct te laten functioneren.
  • Sluit het LCD-scherm aan op POORT B met behulp van lintkabel (J31 tot J2)

Software

Ik gebruik de LCD-bibliotheek van Peter Fleury om het LCD-scherm in 4-bits modus aan te sturen. Bekijk Peter's Homepage om de bibliotheek te downloaden. U moet ervoor zorgen dat lcd.c is gecompileerd met uw code en dat u de volgende wijzigingen aanbrengt in lcd.h:

We gebruiken de interne RC-oscillator, dus XTAL moet worden ingesteld op 1 MHz:

#define XTAL 1000000

  • Poortinstellingen moeten worden aangepast naar PORTB:
  • #define LCD_PORT PORTB

  • Pinout voor 4 datalijnen moet aangepast worden:
  • #define LCD_DATA0_PIN 4 #define LCD_DATA1_PIN 5 #define LCD_DATA2_PIN 6 #define LCD_DATA3_PIN 7

  • Pinout voor RS, RW en E moet worden aangepast:
  • #define LCD_RS_PIN 3 #define LCD_RW_PIN 1 #define LCD_E_PIN 2

    Het hoofdprogramma is heel eenvoudig dankzij het werk dat Peter Fleury deed in zijn LCD-bibliotheek. CODE:

    #include #include "lcd.h"int main(void){ lcd_init(LCD_DISP_ON); // Initialiseer LCD met de cursor uit lcd_clrscr(); // Wis het LCD-scherm lcd_gotoxy (5, 0); // Verplaats de cursor naar deze locatie lcd_puts ("Dragon"); //Plaats deze string op het LCD lcd_gotoxy(6, 1); // Verplaats de cursor naar deze locatie lcd_puts ("Rider"); // Zet deze string op het LCD-scherm voor (;;) {// Doe niets voor altijd (Bericht wordt al weergegeven op LCD)}}

    Code bijgevoegd

    De bijgevoegde code bevat met zijn toestemming de LCD-bibliotheek van Peter Fleury (lcd.c en lcd.h). Bedankt Pieter! De enige wijziging die ik eraan heb aangebracht, is om de juiste pinnen in de Defines in te stellen. Bezoek zijn site om het pakket te downloaden: https://www.jump.to/fleury. Ik heb ook een makefile toegevoegd die ik gebruik, geschreven door Eric B. Weddington en Jorg Wunsch. Ik heb Jorg een PB gestuurd op avrfreaks.net maar heb nooit een reactie van hem ontvangen. Er zijn een paar wijzigingen in de makefile om aan te passen aan het gebruik van Linux en de Dragon. Bedankt aan jullie beiden, stel me alsjeblieft je voorkeuren in voor het delen van je werk.

    Stap 4: 28-pins UC ISP-programmering (ATmega8)

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

    De volgende projectdemonstratie zal gebruik maken van een ATmega8, een 28-pins avr. Hier is de basisjumperset voor ISP-programmering van de 28-pins microcontrollers.

    Jumper-instellingen

    Stel de jumpers op de Dragon Rider zo in dat de shunts de volgende pinnen verbinden. (pin4 is de middelste pin voor J22-J-24) Pinnen: J11 - 23J12 - 23J13 - 12J16 - 23J22 - 42J23 - 42J24 - 42

    Technische informatie

    • Door J11 en J12 op deze manier aan te sluiten, kunt u die pinnen gebruiken als I/O-pinnen. Het alternatief zou zijn om deze pinnen te routeren om een verbinding te maken met het externe kristal.
    • Door J13 op deze manier aan te sluiten, kunnen we hem gebruiken als reset-pin. Het alternatief zou deze pin naar de PORTC-header leiden voor gebruik als I/O-pin. (dit zou veel nadelen hebben, waaronder het onvermogen om deze chip te programmeren met ISP).
    • J16 & J22-J24 zijn op deze manier aangesloten om de juiste pinnen (Reset, MISO, MOSI en SCK) naar de ISP-header van de AVR Dragon te leiden.

    Stap 5: Geavanceerd LCD- en knopgebruik: de grote klok

    Geavanceerd LCD- en knopgebruik: de grote klok
    Geavanceerd LCD- en knopgebruik: de grote klok

    Dit is een leuk project dat gebruik maakt van het LCD-scherm en de knoppen. We zullen te maken hebben met Real Time Clock-functies en aangepaste tekens op het LCD-scherm. In de afbeelding onderaan zie je de tijd 19:26:07 uur in grote cijfers op het LCD-scherm. Elk nummer gebruikt een 2x2 raster van de tekens die worden weergegeven om het grote nummer weer te geven. Dit maakt gebruik van een lettertype dat oorspronkelijk door Xtinus is geschreven voor het XBMC-project. De knoppen worden gebruikt om de klok in te stellen. Links verhoogt de uren, Omhoog verhoogt de minuten, Rechts schakelt tussen 12 en 24-uurs tijd, en Enter zet de seconden terug op nul. De klok houdt de tijd niet goed bij omdat we de zeer onnauwkeurige interne oscillator gebruiken, maar dit programma kan eenvoudig worden gewijzigd om een veel nauwkeuriger extern kristal te gebruiken. Zie dit in actie in de onderstaande video. Een uitleg hoe deze code werkt is op zijn plaats, maar daar heb ik nu even geen tijd voor. Sluit voorlopig de LCD-header (J31) aan op PORTD (J4) en de knopheader (J30) op PORTB (J2). Zorg ervoor dat zowel SW1 als SW2 in de uit-stand staan. Sluit de AVR Dragon aan op een usb-kabel en steek het andere uiteinde van die kabel in je computer. Schakel SW2 in en programmeer de ATmega8 met de programmeersoftware van uw keuze (hex-bestand hieronder; zekeringen verbrand naar fabrieksinstellingen). OPMERKING: Om de knoppen Links en Omhoog te gebruiken, moet u de shunts van J22 en J24 verwijderen, dit terwijl de stroom is uitgeschakeld.

    Stap 6: Hoogspanningsprogrammering

    Ik heb de parallelle hoogspanningsprogrammering gebruikt om een ATtiny2313 weer tot leven te wekken waarop ik de verkeerde zekeringinstellingen had ingesteld. Ik had het een tweede keer nodig toen ik aan deze instructable werkte, omdat ik per ongeluk de lfuse-instelling die ik wilde naar het hfuse-register schreef … oeps. Parallel programmeren met hoogspanning is een handig hulpmiddel om tot uw beschikking te hebben! Hieronder vindt u een lijst met mijn jumperinstellingen: GEBRUIK OP EIGEN RISICO, DIT TYPE PROGRAMMERING KAN UW HARDWARE BESCHADIGEN ALS U NIET WEET WAT U DOET!! Parallelle hoogspanningsprogrammering: ATtiny2313 in socket U3:SW1 - OFFSW2 - ONJ5, J6, J7 - sluit pin1 en pin2XTAL1 aan - sluit pin1 en pin2J16 aan - Sluit pin1 en pin22x5 aan IDC-kabels: PROG_CTRL op PORT D, PROG_DATA op PORT BA Alle andere jumpers niet aangesloten (J8-J13, J18, J19, J20, J22-J28, J24) Voor andere chips zou je de instellingen moeten kunnen vinden die je nodig hebt in Atmel's gebruikershandleiding voor hun STK500.

    Stap 7: uitbreiden buiten het bord

    Uitbreiden buiten het bord
    Uitbreiden buiten het bord

    Ik vind het vrij eenvoudig om te communiceren met een breadboard. Dit zorgt voor veel meer flexibiliteit in prototyping en het ontwikkelen van code tegelijkertijd. Hieronder zie je een aantal breadboards die zijn verbonden met de Dragon Rider. Ik sluit de lintkabels aan de ene kant aan op de juiste poorten. Aan de andere kant gebruik ik jumperdraden om de juiste ICD-geleider met de breadboards te verbinden.

    Stap 8: Conclusie

    Er is veel meer dat betrokken zou kunnen zijn bij deze Instructable. Vanavond heb ik een adapter voltooid waarmee je de 6-pins programmeerkop kunt gebruiken zonder de draak van de Drakenrijder te verwijderen. Ik zal binnenkort informatie geven over hoe je er zelf een kunt bouwen. Als je andere dingen hebt waarvan je denkt dat ze moeten worden toegevoegd, laat dan een reactie achter.

    Stap 9: Een 6-pins ISP toevoegen

    Een 6-pins ISP toevoegen
    Een 6-pins ISP toevoegen
    Een 6-pins ISP toevoegen
    Een 6-pins ISP toevoegen
    Een 6-pins ISP toevoegen
    Een 6-pins ISP toevoegen

    Ik bouw meestal een 6-pins ISP-header in voor al mijn projecten, zodat ik de chip indien nodig kan herprogrammeren en niet van het projectbord hoef te halen. De drakenrijder heeft helaas geen 6-pins ISP-header beschikbaar, maar ik heb ontdekt hoe ik er een beschikbaar kan maken.

    Waarschuwing!

    Dit is een hack. Als je niet precies weet hoe dit werkt, doe het dan niet

    U bent gewaarschuwd. Ik heb mijn eigen adapterkaart en 3-pins jumper gemaakt om de 6-pins isp-header te leveren. Wat je doet is de Dragon Rider instellen om te programmeren en een 8-pins microcontroller. Met behulp van een 3-pins aansluiting overbrug ik J8 om pinnen 1 en 3 aan te sluiten. Dit leidt het kloksignaal naar de PortB-connector. Ik leid dan een startkabel van de PortB-header naar mijn adapterkaart en voila! Er zijn foto's hieronder …. alsjeblieft, alsjeblieft, alsjeblieft, doe dit niet tenzij je echt begrijpt wat je doet, omdat je je AVR Dragon zou kunnen beschadigen of erger als je dit verkeerd doet.

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

    Stap 10: RSS-lezer met seriële verbinding en LCD

    RSS-lezer met seriële verbinding en LCD
    RSS-lezer met seriële verbinding en LCD
    RSS-lezer met seriële verbinding en LCD
    RSS-lezer met seriële verbinding en LCD

    Ik blijf spelen met dit ontwikkelbord. Deze keer heb ik een deel van een middag besteed aan het ontwikkelen van een RSS-readion (meestal aan de python-kant van de dingen). Ik denk niet dat het zijn eigen instructable rechtvaardigt, dus ik voeg het hier toe.

    Hardware

    We gebruiken de Dragon Rider 500 als ontwikkelbord. Dit biedt alle hardware die u nodig hebt (ervan uitgaande dat u alle uitbreidingskits hebt). Dat gezegd hebbende, kunt u dit zeker doen met uw eigen hardware-installatie:

    • ATmega8-microcontroller (of een andere met een USART en voldoende pinnen voor alle verbindingen)
    • Een manier om de microcontroller te programmeren (ik gebruik de AVR Dragon)
    • MAX232-chip voor de seriële communicatie
    • DB9-connector
    • HD44780 LCD-scherm
    • Kristal (ik gebruikte een 8MHz kristal)
    • Diverse condensatoren en weerstanden

    Hieronder vindt u een schema. Op de Dragon Rider zullen we wat creativiteit moeten gebruiken om de verbindingen te routeren. Normaal gesproken zou poort D rechtstreeks op de LCD-header kunnen worden aangesloten. Dit is hier niet het geval omdat de voor de seriële verbinding benodigde USART PD0 en PD1 gebruikt. Verder kan poort B niet worden gebruikt omdat PB6 en PB7 in gebruik zijn voor het externe kristal. Hieronder ziet u mijn oplossing voor dit probleem. Ik sluit een lintkabel aan op de headers voor het LCD-scherm, poort B en poort D, en gebruik dan jumperdraden om de juiste routes te maken. Vergeet niet om spanning en aarde aan te sluiten op de LCD-header.

    Software

    De software voor dit project bestaat uit twee delen, de firmware voor de microcontroller en het python-script voor het schrapen van de RSS-feeds en het verzenden ervan via de seriële verbinding. AVR-firmware Ik gebruik de LCD-bibliotheek van Peter Fleury opnieuw (https://jump.to /fleurig). Het is krachtig en beknopt, veelzijdig en gemakkelijk aan te passen voor uw hardwareconfiguratie. Als u naar het bijgevoegde headerbestand (lcd.h) kijkt, ziet u dat ik in 4-bits modus gebruik met poort D als de databits en poort B als de besturingsbits. Het concept van deze firmware is vrij eenvoudig:

    • Eenmaal ingeschakeld, geeft de microcontroller "RSS Reader" weer en wacht vervolgens op seriële gegevens.
    • Elke ontvangen byte seriële data zorgt ervoor dat een buffer van 16 tekens naar links verschuift en de byte aan de buffer toevoegt, waarna de buffer wordt weergegeven.
    • Drie speciale commando's worden door de microcontroller geaccepteerd: 0x00, 0x01 en 0x02. Dit zijn clear screen, ga respectievelijk naar regel 0 en ga naar regel 1.

    Python ScryptI schreef een pyton-script om de RSS-gegevens te schrapen en via de seriële verbinding te verzenden. Dit vereist de python-module "pyserial" die u waarschijnlijk op uw systeem moet installeren om dit te laten werken. De RSS-feed kan bovenaan het pyton-bestand worden geconfigureerd. Merk op dat u zowel een naam voor de feed als de feed-url moet invoeren. Er zijn daar drie voorbeelden, ik weet zeker dat je die kunt volgen voor de juiste syntx. Alles laten werken

    • Monteer de hardware
    • Programmeer de microcontroller (dragon_rss.hex kan worden gebruikt als je deze niet zelf wilt compileren). Zekeringinstellingen voor ATmega8 met een 8 MHz-kristal: lfuse= 0xEF hfuse=0xD9
    • Zet de Dragon Rider aan en zorg ervoor dat de seriële kabel is aangesloten (LCD moet lezen: "RSS Reader")
    • Voer het python-programma uit (python serial_rss.py)
    • Genieten van

    Aanbevolen: