Hallo, ich arbeite derzeit an der Programmierung des Atmega16u4 mit Hilfe des STK600. Dazu findet man sehr dürftiges Material im Netz. Mein erstes Ziel ist es, einfach ein paar LEDs auf dem Entwicklungsboard aufleuchten zu lassen. Ich habe in CodeVision ein wenig was zusammengetippt (siehe Anhang), was prinzipiell funktionieren sollte, allerdings wollen die LEDs nicht aufleuchten. Ich kann aber problemlos über die JTAG-Schnittstelle auf den Chip zugreifen, Fuses und Lock-Bits auslesen etc. Ich bin da gerade etwas hilflos. Vllt habe ich einfach eine Denkblockade. Vielen Dank für eure Hilfe und Anregungen
Ein Mega16U4 ist erst mal auch nichts anderes als ein Meg16 mit halt zusätzlich einem USB Interface. Aber das muss dich ja jetzt erst mal nicht weiter tangieren. D.h. du kannst alle Resourcen benutzen, die du für AVR-Mega Prozessoren findest und dich erst mal in die Grundlagen einarbeiten. zb das hier AVR-Tutorial oder das hier AVR-GCC-Tutorial Dazu solltest du noch rausfinden, ob du einen Ausgangs-Portpin auf 0 oder auf 1 setzen musst, damit eine daran angeschlossene LED leuchtet. Das ist nämlich keineswegs Gott gegeben, dass eine 1 am Ausgangspin eine LED zum leuchten bringt. Dein erstes Programm könnte zb so aussehen
1 | #include <mega16u4.h> // muss das bei Codevision so sein? |
2 | #include <io.h> |
3 | |
4 | void main(void) |
5 | {
|
6 | DDRD = 0xFF; |
7 | |
8 | while(1) |
9 | {
|
10 | PORTD = 0x55; |
11 | }
|
12 | }
|
das setzt abwechselnd die Hälfte der Portpins am Port D auf 0 und die anderen auf 1. D.h. wenn 8 LED an diesen Port verkabelt sind, dann werden da 4 LED brennen. Noch ist nicht klar welche, aber wenn alle gleich verdraht sind werden mit Sicherheit einige brennen. Wenn nicht, dann hast du wo einen gröberen Verkabelungsfehler.
Die Grundlagen des Programmierens sind mir weitestgehend bekannt. Den Atmega habe ich auf dem STK600 und habe dann mittels Steckverbinder den PortD mit den LEDs, die auf diesem Board vorhanden sind, verbunden. Da sollte es also keine Probleme geben. Und die LEDs sollten leuchten, wenn die Ports auf '1' stehen. Mir ist vollkommen unklar warum das nicht funktioniert. Ich werde mal meine Vorgehensweise auflisten. 1. Ich schreibe Programm in Codevision - Kompilieren + Bilden, wobei mir die benötigte .hex-Datei erzeugt wird 2. dann schiebe ich die .hex-Datei mittels AVRStudio in den Flash-Speicher des uC 3. und dann warte ich darauf, dass was passiert. Wurde da irgendein Schritt vergessen?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.