Forum: Mikrocontroller und Digitale Elektronik Atmega16u4 mit Hilfe STK600 programmieren


von Thomas R. (der_ilt)


Angehängte Dateien:

Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Thomas R. (der_ilt)


Lesenswert?

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
Noch kein Account? Hier anmelden.