mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einsteigsproblem: AVR führt Programm nicht aus?


Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include <avr/io.h>

int main (void)
{
  DDRB = (1<<DDB7);

  PORTB = (1<<PORTB7);

  return 0;
}

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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich mich richtig erinnere sind die LEDS am STK500
low aktiv. D.h. man muss eine 0 ausgeben um sie zu
Leuchten zu bringen
#include <avr/io.h>

int main (void)
{
  DDRB = 0xFF;

  PORTB = 0b10101010;

  return 0;
}

Damit sollten auf jeden Fall 4 von den LED leuchten.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anmerkung:

Doch, geht auch ohne DDRB=0xFF, Fehler meinerseits.

Mensch bin ich blöd heute...


Danke für eure Hilfe, nochmal!

Autor: Christian Erker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf PortB liegt auch die SPI, daher sind manche Pins nicht ohne 
Einschränkungen nutzbar.

Gruß,
Christian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.