Einsteigsproblem: AVR führt Programm nicht aus?

Gast #600885
Lesenswert?

Hallo!

Ich experimentiere seit ein paar Tagen mit dem AVR STK500 Board und dem 
darauf gesteckten ATMega8515L.

Um die grundlegenden Funktionen zu testen, habe ich die Leds des STK an 
PORTB, die Schalter an PORTA angeschlossen.

Als Entwicklungsumgebung nutze ich die neuesten Versionen von AVR-Studio 
(4.13) und Win-AVR (25. Mai 2007).

Und soweit bin ich jetzt:

Ich habe, weil ein bereits erstelltes komplexeres Programm nicht lief, 
einen einfachen Wenig-Zeiler geschrieben, um die Funktionen zu testen:
1
#include <avr/io.h>
2

3
int main (void)
4
{
5
  DDRB = (1<<DDB7);
6

7
  PORTB = (1<<PORTB7);
8

9
  return 0;
10
}

Das Build funktioniert, der Debugger zeigt korrekte Werte für die 
Register an.

Auch die Verbindung zum STK500 klappt und der Programmiervorgang per ISP 
(inkl. Verify) meldet keinerlei Fehler.

Nur: Keine der Leds leuchtet (Led7 sollte ja eigentlich?)


Was mache ich falsch? Braucht der µC ein Art "Startsignal" um das 
Programm auszuführen?

Ich habs schon mit Flash/EEPROM versucht, funktioniert beides nicht. 
Randfrage: Wo wäre das Programm besser aufgehoben?


Mit C/C++ hab ich schon ne gewisse Erfahrung, mit µC quasi keine.
#600907
Lesenswert?

1.: Die LEDs am STK500 sind Low-Side (invertiert) angeschlossen, also 
müssten normalerweise alle LEDs bis auf die Nr. 7 leuchten...

2.: Ans Ende eines µC-Programms gehört i.d.R. eine Endlosschleife 
(while(1) oder for(;;)), wobei viele Compiler diese Schleife automatisch 
einfügen. Der Rückgabewert kann dann auch wegfallen.

3.: Das Programm gehört ins Flash und sonst nirgendwo hin. Datenblatt 
und/oder Tutorial lesen!
Gast #600923
Lesenswert?

@Karl Heinz:

Danke, funktioniert!

Komischerweise hab ich vorher sowas schon probiert, allerdings mit ner 
Hex-Zahl für das PORTB Register. Das ging nicht.

Auch scheint die Pin-weise Ansteuerung des Ports nicht zu funktionieren.

Wenn ich nicht das gesamte DDRB Register auf 1 setze, sprich 0xFF, 
kriege ich keine einzige LED zum Leuchten.

@Johannes:

1. Stimmt, aber bei nem Text mit 0xff und für DDRB und verschiedenen 
PORTB Configs tats irgendwie auch nicht... komisch.

2. Ja, hab ich auch schon drinngehabt, hat nix wirklich geändert, bis 
auf das, dass der Debugger dann an der Zeile PORTB=... stehen geblieben 
ist und nicht mehr weitergelaufen.
Das "return 0;" lass ich drann, weil sonst der Compiler meckert: 
int-Funktion ohne Rückgabewert = böse. :)

3. Ok, danke, irgendwie hab ich das immer überlesen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren