AVR Programm läuft nicht

#764099
Lesenswert?

Hallo zusammen
Ich versuche mich als Neuling an der Programmierung eines atmega8. Ich 
bin über das hervorrangende Tutorial hier gestolpert und veruche mich 
nach diesem einzuarbeiten. Zur Übertragung der HEX-Daten verwende ich 
PonyProg2000. Ich habe ein kleines Assembler-Programm kompiliet mit 
AVR-Studio. Eine LED soll angehen. Die Kompilierung sowie das Übertragen 
des Hex-Files lief problemlos. Die LED geht nach dem Übertragen einmal 
an und wieder aus. Sie bleibt nicht an. Es sieht so aus, als wenn der 
Code nur einmal abgearbeitet wird. Auch andere Programme verhielten sich 
ähnlich.

Weil ich nun nicht mehr weiterkomme, wende ich micht hier an das Forum.

Viele Grüße
Christoph
#764111
Lesenswert?

Der Coede ist aus dem Tutorial:

.include "m8def.inc"         ; Definitionsdatei für den Prozessortyp 
einbinden

         ldi r16, 0xFF       ; lade Arbeitsregister r16 mit der 
Konstanten 0xFF
         out DDRB, r16       ; Inhalt von r16 ins IO-Register DDRB 
ausgeben

         ldi r16, 0b11111100 ; 0b11111100 in r16 laden
         out PORTB, r16      ; r16 ins IO-Register PORTB ausgeben

ende:    rjmp ende           ; Sprung zur Marke "ende" -> Endlosschleife

Es wurde keine Endlosschleife vergessen.

Gruß
Christoph
Gast #764127
Lesenswert?

1
1  .include "m8def.inc"
2
2
3
3         ldi r16, 0xFF
4
4         out DDRB, r16
5
5
6
6         ldi r16, 0b11111100 ; 0b11111100 in r16 laden
7
7         out PORTB, r16
8

9
8  ende:    rjmp ende

>

>Ja, der Fehler liegt in deinem Programm, in Zeile 24.

Hm.. Offensichtlich ist meine Glaskugel kaputt..

Nur zur Info:
1
ldi r16, 0b11111100 ; 0b11111100 in r16 laden

MEinst du, solche Kommentare sind sinnvoll?
Gast #764129
Lesenswert?

Christoph Schulz wrote:
> Die LED soll aber an bleiben. Der Wert von Ausgang B soll sich nicht
> wieder ändern, solange die Schleife läuft. Die LED blinkt aber nur
> einmal auf und bleibt danach aus.

1. An welchem (Port-)Pin hängt die LED?
2. Ist die LED gegen VCC oder GND geschaltet?
3. Hängt die LED direkt am Port, oder hängt dazwischen noch eine
   (invertierende) Treiberstufe?
Gast #764133
Lesenswert?

Er erwartet das die LED anbleibt und das sollte sie auch eigentlich!!!
Miss doch mal nach was der Controller für Strom zieht nachdem die Led 
ausgegangen ist. Was für nen Wiederstand sitzt den vor LED und wie ist 
sie angeschlossen???
Gruss
Gast #764159
Lesenswert?

> Wenn die Led gegen Vcc geschaltet ist, ists richtig das die Led bei
> 0b11111110 leuchtet.

Richtig. Da nach dem Setzen der Portpins eine leere Endlosschleife 
kommt, dürfte die LED aber nicht aus gehen.

Mal ein paar Vermutungen:

1. Probleme mit der Spannungsversorgung.
2. Fehlerhafte Beschaltung des RESET-Pins.
3. Der (noch) angeschlossene Programmieradapter macht Probleme.
4. Der gepostete Code ist nicht identisch mit dem Code, der den
   beschriebenen Fehler produziert.

Gruß,
Magnetus

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