Sommario:

Come utilizzare Dragon Rider 500 con il tuo AVR Dragon: 10 passaggi
Come utilizzare Dragon Rider 500 con il tuo AVR Dragon: 10 passaggi

Video: Come utilizzare Dragon Rider 500 con il tuo AVR Dragon: 10 passaggi

Video: Come utilizzare Dragon Rider 500 con il tuo AVR Dragon: 10 passaggi
Video: L’amburger di Spiderman 2024, Luglio
Anonim
Come utilizzare Dragon Rider 500 con il tuo AVR Dragon
Come utilizzare Dragon Rider 500 con il tuo AVR Dragon

Questo tutorial è un corso accelerato su come utilizzare alcune delle funzionalità del Dragon Rider 500 di Ecros Technologies. Tieni presente che sul sito Web di Ecros è disponibile una Guida per l'utente molto dettagliata.

Dragon Rider è una scheda di interfaccia da utilizzare con un programmatore di microcontrollori AVR chiamato AVR Dragon di Atmel. Per ulteriori informazioni: sito Web di Atmel: https://www.atmel.com/ AVR Dragon link: https://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 Dragon Rider 500 di Ecros Technology: https://www.ecrostech.com/AtmelAvr/DragonRider/index.htm Montaggio di Dragon Rider 500 Instructable: https://www.instructables.com/id/Assembling-the-Dragon-Rider-500-for-use-with- the-A/ Scopri tutto sui microcontrollori AVR: https://www.avrfreaks.net Questo istruibile può crescere con il tempo, quindi controlla di tanto in tanto!

Passaggio 1: amico AVR

È necessario un software di programmazione per utilizzare l'AVR Dragon per la programmazione. Uso AVRdude con il sistema operativo Ubuntu (linux) e sono molto soddisfatto dei risultati. Questo tutorial non si occuperà delle complessità del software di programmazione. Se non sai come configurare o utilizzare il software di programmazione, controlla questo istruzioni per aggiornarti: https://www.instructables.com/id/Getting-started-with-ubuntu-and-the- AVR-dragon/La mia ipotesi è che se hai acquistato e assemblato un Dragon Rider 500 sai già come programmare un chip con l'AVR Dragon….. in poi!

Passaggio 2: ATtiny2313 - Lampeggia i LED

ATtiny2313 - Lampeggia i LED
ATtiny2313 - Lampeggia i LED
ATtiny2313 - Lampeggia i LED
ATtiny2313 - Lampeggia i LED
ATtiny2313 - Lampeggia i LED
ATtiny2313 - Lampeggia i LED

Programmiamo un ATtiny2313 che è un microcontrollore a 20 pin. Il Dragon Rider 500 ha prese per diversi microcontrollori AVR di dimensioni diverse. Questi includono: prese a 8, 20, 28 e 40 pin. A seconda della presa utilizzata, i ponticelli sulla scheda Dragon Rider devono essere impostati in modo diverso.

Impostazioni ponticello

Impostare i ponticelli sul Dragon Rider in modo che gli shunt colleghino i seguenti pin. (pin4 è il pin centrale per J22-J-24) Pin: J5 - 23J6 - 23J7 - 12J16 - 23J22 - 41J23 - 41J24 - 41 Questa è una configurazione di base che consente l'ISP (In System Programming).

Blinky Blinky

La programmazione non serve a meno che tu non abbia qualcosa da programmare. Ho scritto un esempio di codice molto breve per far lampeggiare i LED del Dragon Rider uno alla volta. Utilizzare un cavo a nastro per collegare l'intestazione del LED (J29) all'intestazione della porta B (J2).

Programmazione

Ho incluso il file C, un makefile e il file esadecimale. Come ho detto nell'introduzione, non posso coprire il lato software della programmazione in Instructable. Programma come faresti per AVR Dragon, poiché Dragon Rider non altera affatto il lato software delle cose.

Passaggio 3: utilizzo del componente aggiuntivo LCD

Utilizzo del componente aggiuntivo LCD
Utilizzo del componente aggiuntivo LCD

Ecco un modo semplice per utilizzare il componente aggiuntivo LCD. Questo scriverà "Dragon Rider" sullo schermo LCD.

Hardware:

  • ATtiny2313
  • R/W Jumper: R/W dovrebbe essere collegato a "BIT1" sulla Dragon Rider Board (vedi spiegazione nell'Assembly Instructable)
  • J23: Questo ponticello deve essere installato per la programmazione ISP ma poi rimosso per il corretto funzionamento dell'LCD.
  • Collegare l'LCD alla PORTA B utilizzando un cavo a nastro (da J31 a J2)

Software

Sto usando la libreria LCD di Peter Fleury per pilotare l'LCD in modalità a 4 bit. Dai un'occhiata alla Homepage di Peter per scaricare la libreria. Dovrai assicurarti che lcd.c sia compilato con il tuo codice e che apporti le seguenti modifiche a lcd.h:

Stiamo usando l'oscillatore RC interno, quindi XTAL deve essere impostato su 1MHz:

#define XTAL 1000000

  • Le impostazioni della porta devono essere regolate su PORTB:
  • #define LCD_PORT PORTB

  • Il pinout per 4 linee dati deve essere adattato:
  • #definisci LCD_DATA0_PIN 4 #definisci LCD_DATA1_PIN 5 #definisci LCD_DATA2_PIN 6 #definisci LCD_DATA3_PIN 7

  • Il pinout per RS, RW ed E deve essere adattato:
  • #definisci LCD_RS_PIN 3 #definisci LCD_RW_PIN 1 #definisci LCD_E_PIN 2

    Il programma principale è molto semplice grazie al lavoro svolto da Peter Fleury nella sua libreria LCD. CODE:

    #include #include "lcd.h"int main(void){ lcd_init(LCD_DISP_ON); //Inizializza LCD con il cursore spento lcd_clrscr(); //Cancella lo schermo LCD lcd_gotoxy(5, 0); //Sposta il cursore in questa posizione lcd_puts("Dragon"); //Metti questa stringa sul display LCD lcd_gotoxy(6, 1); //Sposta il cursore in questa posizione lcd_puts("Rider"); //Inserisce questa stringa sull'LCD for (;;) { // Non fare nulla per sempre (Messaggio già visualizzato sull'LCD) }}

    Codice allegato

    Il codice allegato include la libreria LCD di Peter Fleury (lcd.c e lcd.h) con il suo permesso. Grazie Pietro! L'unica modifica che ho apportato è stata quella di impostare i pin corretti nei Defines. Visita il suo sito per scaricare il pacchetto: https://www.jump.to/fleury Ho incluso anche un makefile che uso scritto da Eric B. Weddington e Jorg Wunsch. Ho inviato un PM a Jorg su avrfreaks.net ma non ho mai ricevuto una risposta da lui. Ci sono alcune modifiche al makefile per adattarlo all'uso di Linux e Dragon. Grazie a entrambi, per favore fatemi sapere le vostre preferenze su di me condividendo il vostro lavoro.

    Passaggio 4: programmazione ISP UC a 28 pin (ATmega8)

    Programmazione ISP UC a 28 pin (ATmega8)
    Programmazione ISP UC a 28 pin (ATmega8)
    Programmazione ISP UC a 28 pin (ATmega8)
    Programmazione ISP UC a 28 pin (ATmega8)

    La prossima dimostrazione del progetto utilizzerà un ATmega8 che è un avr a 28 pin. Ecco il set di ponticelli di base per la programmazione dell'ISP dei microcontrollori a 28 pin.

    Impostazioni ponticello

    Impostare i ponticelli sul Dragon Rider in modo che gli shunt colleghino i seguenti pin. (pin4 è il perno centrale per J22-J-24) Pin: J11 - 23J12 - 23J13 - 12J16 - 23J22 - 42J23 - 42J24 - 42

    Informazioni tecniche

    • Il collegamento di J11 e J12 in questo modo consente di utilizzare quei pin come pin I/O. L'alternativa sarebbe quella di instradare questi pin per stabilire una connessione con il cristallo esterno.
    • Il collegamento di J13 in questo modo ci consente di utilizzarlo come pin di ripristino. L'alternativa indirizzerà questo pin all'intestazione PORTC per l'uso come pin I/O. (questo avrebbe molti inconvenienti, inclusa l'impossibilità di programmare questo chip usando l'ISP).
    • J16 e J22-J24 sono collegati in questo modo per instradare i pin appropriati (Reset, MISO, MOSI e SCK) all'intestazione ISP dell'AVR Dragon.

    Passaggio 5: utilizzo avanzato di LCD e pulsanti: il grande orologio

    Utilizzo avanzato di LCD e pulsanti: il grande orologio
    Utilizzo avanzato di LCD e pulsanti: il grande orologio

    Questo è un progetto divertente che utilizza lo schermo LCD e i pulsanti. Ci occuperemo delle funzioni dell'orologio in tempo reale e dei caratteri personalizzati sul display LCD. Nell'immagine in basso puoi vedere l'ora 19:26:07 visualizzata in grandi numeri sullo schermo LCD. Ogni numero utilizza una griglia 2x2 del display dei caratteri per mostrare il numero grande. Questo utilizza un font originariamente scritto da Xtinus per il progetto XBMC. I pulsanti servono per impostare l'orologio. Sinistra incrementa le ore, Su incrementa i minuti, Destra alterna tra 12 e 24 ore e Invio azzera i secondi. L'orologio non tiene molto bene il tempo poiché stiamo usando l'oscillatore interno molto impreciso, ma questo programma può essere facilmente modificato per utilizzare un cristallo esterno molto più accurato. Guardalo in azione nel video qui sotto. Una spiegazione di come funziona questo codice è in ordine, ma non ho tempo adesso. Per ora, collegare l'intestazione LCD (J31) a PORTD (J4) e l'intestazione del pulsante (J30) a PORTB (J2). Assicurati di avere sia SW1 che SW2 in posizione off. Collega l'AVR Dragon a un cavo USB e collega l'altra estremità di quel cavo al computer. Accendere SW2 e programmare l'ATmega8 con il software di programmazione di vostra scelta (file esadecimale sotto; fusibili bruciati alle impostazioni di fabbrica). NOTA: Per utilizzare i pulsanti Sinistra e Su sarà necessario rimuovere gli shunt da J22 e J24, fare questo mentre l'alimentazione è spenta.

    Passaggio 6: programmazione ad alta tensione

    Ho usato la programmazione parallela ad alta tensione per resuscitare un ATtiny2313 su cui ho impostato le impostazioni errate del fusibile. Ne avevo bisogno una seconda volta quando lavoravo su questo istruibile perché ho scritto accidentalmente l'impostazione lfuse che volevo nel registro hfuse… ooops. La programmazione in parallelo ad alta tensione è uno strumento utile da avere a disposizione! Di seguito è riportato un elenco delle impostazioni dei miei jumper: UTILIZZARE A PROPRIO RISCHIO, QUESTO TIPO DI PROGRAMMAZIONE PU DANNEGGIARE IL TUO HARDWARE SE NON SAI COSA STAI FACENDO!! Programmazione in parallelo ad alta tensione: ATtiny2313 nella presa U3:SW1 - OFFSW2 - ONJ5, J6, J7 - collegare pin1 e pin2XTAL1 - collegare pin1 e pin2J16 - Collegare pin1 e pin22x5 Cavi IDC: PROG_CTRL su PORT D, PROG_DATA su PORT BTutti gli altri ponticelli scollegati (J8-J13, J18, J19, J20, J22-J28, J24) Per altri chip dovresti essere in grado di capire le impostazioni necessarie dalla guida utente di Atmel per il loro STK500.

    Passaggio 7: espansione oltre il tabellone

    Espansione oltre il tabellone
    Espansione oltre il tabellone

    Trovo abbastanza facile interfacciarsi con una breadboard. Ciò consente molta più flessibilità nella prototipazione e nello sviluppo del codice allo stesso tempo. Di seguito vedrai un paio di breadboard collegate a Dragon Rider. Collego i cavi a nastro alle porte appropriate a un'estremità. Dall'altro uso i cavi dei ponticelli per collegare il conduttore ICD corretto con le breadboard.

    Passaggio 8: conclusione

    C'è molto di più che potrebbe essere coinvolto in questo Instructable. Proprio stasera ho completato un adattatore che consente di utilizzare l'intestazione di programmazione a 6 pin senza rimuovere il drago dal Dragon Rider. Metterò informazioni su come costruirne uno tu stesso… a breve. Se hai altre cose che ritieni debbano essere aggiunte, lascia un commento.

    Passaggio 9: aggiunta di un ISP a 6 pin

    Aggiunta di un ISP a 6 pin
    Aggiunta di un ISP a 6 pin
    Aggiunta di un ISP a 6 pin
    Aggiunta di un ISP a 6 pin
    Aggiunta di un ISP a 6 pin
    Aggiunta di un ISP a 6 pin

    Di solito costruisco un'intestazione ISP a 6 pin per tutti i miei progetti in modo da poter riprogrammare il chip se necessario e non doverlo rimuovere dalla scheda di progetto. Il cavaliere del drago purtroppo non ha un'intestazione ISP a 6 pin disponibile, ma ho capito come renderne uno disponibile.

    Avvertimento!

    Questo è un trucco. Se non sai esattamente come funziona, non farlo

    Sei stato avvisato. Ho creato la mia scheda adattatore e un ponticello a 3 pin per fornire l'intestazione dell'ISP a 6 pin. Quello che fai è impostare Dragon Rider per programmare e microcontrollore a 8 pin. Usando una presa a 3 pin sto ponticellando J8 per collegare i pin 1 e 3. Questo indirizza il segnale di clock al connettore PortB. Ho quindi eseguito un cavo jumper dall'intestazione PortB alla mia scheda adattatore e voilà! Ci sono immagini sotto…. per favore, per favore, per favore, non farlo a meno che tu non capisca veramente cosa stai facendo in quanto potresti danneggiare il tuo AVR Dragon o peggio se lo fai male.

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

    Passaggio 10: lettore RSS tramite connessione seriale e LCD

    Lettore RSS tramite connessione seriale e LCD
    Lettore RSS tramite connessione seriale e LCD
    Lettore RSS tramite connessione seriale e LCD
    Lettore RSS tramite connessione seriale e LCD

    Sto continuando a giocare con questa scheda di sviluppo. Questa volta ho passato parte del pomeriggio a sviluppare una lettura RSS (principalmente sul lato Python delle cose). Non credo che meriti un proprio istruibile, quindi lo aggiungo qui.

    Hardware

    Stiamo usando Dragon Rider 500 come scheda di sviluppo. Ciò fornisce tutto l'hardware necessario (supponendo che tu abbia tutti i kit aggiuntivi). Detto questo, puoi sicuramente farlo con la tua configurazione hardware:

    • Microcontrollore ATmega8 (o qualsiasi che abbia un USART e abbastanza pin per tutte le connessioni)
    • Un modo per programmare il microcontrollore (io uso l'AVR Dragon)
    • Chip MAX232 per le comunicazioni seriali
    • Connettore DB9
    • Schermo LCD HD44780
    • Cristallo (ho usato un cristallo da 8 MHz)
    • Condensatori e resistori assortiti

    Di seguito viene fornito uno schema. Sul Dragon Rider dovremo usare un po' di creatività per instradare le connessioni. Normalmente la porta D potrebbe essere collegata direttamente all'intestazione LCD. Questo non è il caso qui perché la USART necessaria per la connessione seriale utilizza PD0 e PD1. Inoltre, la porta B non può essere utilizzata perché PB6 e PB7 sono in uso per il cristallo esterno. Nella foto sotto è la mia soluzione a questo problema. Inserisco un cavo a nastro alle intestazioni per l'LCD, la porta B e la porta D, quindi utilizzo i cavi dei ponticelli per creare i percorsi corretti. Non dimenticare di collegare la tensione e la massa all'intestazione LCD.

    Software

    Il software per questo progetto è composto da due parti, il firmware per il microcontrollore e lo script python per raccogliere i feed RSS e inviarli tramite la connessione seriale. Firmware AVR Sto usando di nuovo la libreria LCD di Peter Fleury (https://jump.to /fleury). È potente e conciso, versatile e facile da modificare per la configurazione dell'hardware. Se guardi il file di intestazione allegato (lcd.h) vedrai che sto eseguendo in modalità a 4 bit con la porta D come bit di dati e la porta B come bit di controllo. Il concetto di questo firmware è piuttosto semplice:

    • Una volta acceso il microcontrollore visualizza "RSS Reader" e quindi attende i dati seriali.
    • Ogni byte di dati seriali ricevuti fa sì che un buffer di 16 caratteri si sposti a sinistra e aggiunga il byte al buffer, quindi visualizza il buffer.
    • Il microcontrollore accetta tre comandi speciali: 0x00, 0x01 e 0x02. Questi sono uno schermo chiaro, si spostano alla riga 0 e si spostano rispettivamente alla riga 1.

    Python ScryptI ha scritto uno script pyton per raschiare i dati RSS e inviarli tramite la connessione seriale. Ciò richiede il modulo python "pyserial" che probabilmente dovrai installare sul tuo sistema per farlo funzionare. Il feed RSS può essere configurato nella parte superiore del file pyton. Nota che devi inserire un nome per il feed e l'URL del feed. Ci sono tre esempi lì, sono certo che puoi seguirli per il syntx corretto. Far funzionare tutto

    • Assemblare l'hardware
    • Programma il microcontrollore (dragon_rss.hex può essere usato se non vuoi compilarlo da solo). Impostazioni dei fusibili per ATmega8 utilizzando un cristallo da 8 MHz: lfuse= 0xEF hfuse=0xD9
    • Accendi il Dragon Rider e assicurati che il cavo seriale sia collegato (sul display LCD dovrebbe essere visualizzato: "Lettore RSS")
    • Esegui il programma python (python serial_rss.py)
    • Godere

    Consigliato: