HILFE für Anfänger LED blinken geht nicht

Gast #68009
Hallo Leute!
Hoffentlich belaste ich Euch nicht mit meiner Anfängerfrage. Ein
Bekannter sagte mir Assembler sei sehr einfach, da ich selbst zu Basic
tendiere. Aber jetzt scheitere ich schon an diesem einfachen Problem:
zwei LED sollen abwechselnd im 0,6sek-Takt blinken.

Könnte sich vielleicht mal jemand mein Programm anschauen, was da
falsch ist, auf Bit null des Ports kommen nur Nadelimpulse statt
0,6sek.?? Im AVR-Simulator scheint es aber zu funktionieren, auf meinem
Board nicht...

Vielen Dank im Voraus.
Lehrbücher für Assembler gibt es ja keine, also muß man sich alles
selbst aneignen, oder??

MfG, Andreas Über eine Antwort würde ich mich sehr freuen.
Angehängte Dateien:
Gast
In der Pausenschleife lädtst Du ZH zweimal, der Befehl clz ist nicht
notwendig (durch den folgenden dec wird das zero sowieso neu gesetzt).
So auf den ersten Blick sehe ich keinen Fehler, wie hast Du die LEDs
angeschlossen? Spannungsversorgung des Controllers ? Evtl bricht die
Spannung ein und er löst dadurch einen Reset aus, hast Du an den 100nF
Kondensator zwischen vcc und gnd gedacht?
Gast
ich sehe auch keinen Softwarefehler, die üblichen Anfängerfehler (stack,
DDRx) hast du umschifft.
Ich tippe auch mal auf einen Hardwarefehler.
Und nur so zur Info: beim Init von SP hast du dick dazugeschrieben,
dass sonst rjmp nicht funktioniert, das stimmt nicht. rjmp funktioniert
immer, wichtig ist der stack für rcall/ret.
Gast
Versuche es mal mit dieser "Pause"
; delaying 4396788 cycles:
          ldi  R17, $24
WGLOOP0:  ldi  R18, $B1
WGLOOP1:  ldi  R19, $E5
WGLOOP2:  dec  R19
          brne WGLOOP2
          dec  R18
          brne WGLOOP1
          dec  R17
          brne WGLOOP0
; delaying 12 cycles:
          ldi  R17, $04
WGLOOP3:  dec  R17
          brne WGLOOP3
Gast
Hi,

der Tip mit der Spannungsversorgung koennte helfen, insbesondere, wenn
du das Netzteil mit dem 7805 exakt nach der Anleitung von der Seite
hier aufgebaut hast.

Ich hab das so gemacht, und mit einem alten Modellbahntrafo
(Graetz-Gleichrichter ohne weitere Kondensatoren) betrieben. Effekt
war, dass alles lief, aber sobald eine LED aktiv war, gabs durch den
Spannungseinbruch einen Reset, was sich letztlich in so einem Flimmern
zeigte (Reset -> LED an -> Reset usw). Der ATMega8 scheint so etwa
15...20 Resets pro Sekunde zu schaffen ;-)

Ein 100 Mikrofarad-Kondensator am Eingang (vorm 7805) gegen Masse hat
das Problem dann sehr nachhaltig geloest.

Ansonsten an der Stelle nochmal ein grosses Dankeschoen an diese Seite
und das Forum - meine erste Testschaltung (bin
Mikrocontroller-Anfaenger) mit ATMega8, 8 LEDs und vier Tastern (wird
noch erweitert) lief am Wochenende bis auf obiges Problem auf Anhieb
und sofort.

Viele Gruesse,

Jan

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.