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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.