Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
|
project:tinymega [2012/06/21 14:16] 31.25.153.242 [CAD-Dateien] |
project:tinymega [2013/04/12 10:33] (aktuell) 193.110.102.2 [Hello World für den TinyMega] |
||
|---|---|---|---|
| Zeile 26: | Zeile 26: | ||
| hier: [[https://github.com/dop3j0e/eagle/tree/master/Atmega32U4-Breakout/v3]] | hier: [[https://github.com/dop3j0e/eagle/tree/master/Atmega32U4-Breakout/v3]] | ||
| - | {{:project:tinymega:top.png|Top Layer}}{{:project:tinymega:bot.png|Bottom Layer}}{{http://shackspace.de/gallery/var/thumbs/Projekte/ATmega32U4-Board/DSC_5667.jpg}} | + | {{:project:tinymega:top.png|Top Layer}}{{:project:tinymega:bot.png|Bottom Layer}}[[http://shackspace.de/gallery/index.php/Projekte/ATmega32U4-Board/board-done-top|{{http://shackspace.de/gallery/var/thumbs/Projekte/ATmega32U4-Board/DSC_5667.jpg}}]] |
| {{:project:tinymega:sch.png|Schaltplan}} | {{:project:tinymega:sch.png|Schaltplan}} | ||
| Zeile 84: | Zeile 84: | ||
| ====== Dokumentation ====== | ====== Dokumentation ====== | ||
| - | [[http://www.atmel.com/Images/doc7766.pdf|ATmegaXU4 Datenblatt]] | + | [[http://www.atmel.com/Images/doc7766.pdf|ATmega32U4 Datenblatt]] |
| ===== Inbetriebnahme ===== | ===== Inbetriebnahme ===== | ||
| Zeile 194: | Zeile 194: | ||
| - TinyMega mit dem PC verbinden | - TinyMega mit dem PC verbinden | ||
| - Taste BOOT drücken (und gedrückt halten) | - Taste BOOT drücken (und gedrückt halten) | ||
| - | - Taste RESET drücken (und wider loslassen) | + | - Taste RESET drücken (und wieder loslassen) |
| - Taste BOOT loslassen | - Taste BOOT loslassen | ||
| Zeile 227: | Zeile 227: | ||
| sudo $(AVR_PROGRAMMER) $(AVR_CHIP) flash $< | sudo $(AVR_PROGRAMMER) $(AVR_CHIP) flash $< | ||
| sudo $(AVR_PROGRAMMER) $(AVR_CHIP) start ; true</file> | sudo $(AVR_PROGRAMMER) $(AVR_CHIP) start ; true</file> | ||
| + | |||
| + | ====Testprogramm für die I/O-Pins==== | ||
| + | |||
| + | Das folgende Testprogramm lässt die LED per Interrupt blinken und schaltet alle weiteren Pins auf HIGH. Um die Pins zu testen, kann eine beliebige LED mit Vorwiderstand (180 Ohm) mit der Kathode an den GND-Pin des TinyMega angeschlossen und mit der Anode an alle anderen Pins gehalten werden. Die LED sollte bei allen Pins aufleuchten, ausser bei E6 (wo sie natürlich blinkt ,), bei E2 (das haben wir schon durch den Bootloader-Taster getestet), bei VREF (das kann so nicht getestet werden) und bei RST (das wird aber einen Reset auslösen, weil die LED durch den Vorwiderstand den Reset-Pin auf Ground zieht). | ||
| + | |||
| + | <file>#include <avr/io.h> | ||
| + | #include <avr/power.h> | ||
| + | #include <avr/interrupt.h> | ||
| + | |||
| + | #define LEDDDR DDRE | ||
| + | #define LEDPORT PORTE | ||
| + | #define LEDBIT (1 << PE6) | ||
| + | |||
| + | ISR(TIMER1_COMPA_vect) | ||
| + | { | ||
| + | LEDPORT ^= LEDBIT; | ||
| + | } | ||
| + | |||
| + | int main(void) | ||
| + | { | ||
| + | clock_prescale_set(clock_div_1); | ||
| + | |||
| + | /* Timer/Counter 1 für Interrupts aufsetzen */ | ||
| + | TCCR1A = 0; | ||
| + | TCCR1B = 5 << CS10 | 1 << WGM12; | ||
| + | OCR1A = 8192; | ||
| + | TIMSK1 = 1 << OCIE1A; | ||
| + | TIFR1 = 1 << OCF1A; | ||
| + | |||
| + | MCUCR = 1 << JTD; /* JTAG abschalten, sonst funktionieren */ | ||
| + | MCUCR = 1 << JTD; /* einige Pins von PORTF nicht wie erwartet */ | ||
| + | DDRB = DDRC = DDRD = DDRF = 0xFF; | ||
| + | PORTB = PORTC = PORTD = PORTF = 0xFF; | ||
| + | LEDDDR = LEDBIT; | ||
| + | |||
| + | sei(); | ||
| + | |||
| + | while (1); | ||
| + | }</file> | ||
| ====Linksammlung==== | ====Linksammlung==== | ||
| * [[http://www.radiolocman.com/shem/schematics.html?di=112213|Atmega32U4 RAW HID Device]] | * [[http://www.radiolocman.com/shem/schematics.html?di=112213|Atmega32U4 RAW HID Device]] | ||
| * [[http://fourwalledcubicle.com/LUFA.php|Lufa USB-Libary]] | * [[http://fourwalledcubicle.com/LUFA.php|Lufa USB-Libary]] | ||