www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Blinker funktioniert nicht am AT90S2313


Autor: Onur Demir (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die beigefügte Datei funktioniert nach dem ver*hex*en, und via PonProg
nicht auf meinem AT90S2313.

Die LED am Port PB0 leuchtet immmer, sobald ich das ISP von der
parallelen Schnittstelle entferne. Ich bin der Meinung, dass sich
eigentlich nichts tut, egal ob ich diese Blinker Datei lade oder die
Datei von der Seite:
http://s-huehn.de/elektronik/avr-prog/avr-prog.htm

Mein Testlayout ist ebenfalls von der Seite, allerdings mit
stabilsiertem Netzteil.

Was ist an meinem Code falsch?
Warum blinkt die LED (im Sinne vom Blinken) nicht, wenn ich ebenfalls
die originale Datei von der obigen Seite verwende?

Vielen Dank für ein paar Tips.

MFG

Onur

Autor: AndreasH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist doch klar wieso: du gibst ständig 0xFF aus.
Du musst wechseln einmal 0xFF (EIN), dann 0x00 (AUS);

Ausserdem ist das falsch:
  ldi    mp,0x00
  out    DDRB,mp

Damit setzt Du den Port als Ausgang.

Sieh Dir mal das Beispielprogramm von der Seite an.
Dort gibt es Verzögerungen (rcall wait).
Ich glaube nicht, selbst wenn Du wechselst, dass Dein Auge so schnell
ist.

versuch es mal damit:

  ldi    mp,0xff
  out    DDRB,mp

loop:
  ldi  mp,0xFF
  out  PORTB,mp
  rcall   wait
  ldi  mp,0x00
  out  PORTB,mp
rjmp  loop



Grüße
Andreas

Autor: AndreasH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry,

sollte heissen: "Damit setzt Du den Port als Eingang"

Ausserdem muss es so sein:
loop:
  ldi  mp,0xFF
  out  PORTB,mp
  rcall   wait
  ldi  mp,0x00
  out  PORTB,mp
  rcall   wait
rjmp  loop

Ist schon spät.

Autor: Onur Demir (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich aber will, dass die LED ausgeht, z.B.:

DEF  mp = R16
  RJMP  main
main:
  ldi    mp,0xFF
    out    DDRB,mp
loop:
  ldi  mp,0x00
  out  PORTB,mp
rjmp  loop

Nachdem ich die parallele Schnittstelle entferne leuchtet die LED
wieder. Darf sie doch nicht. Sie leuchtet immmer noch, auch wenn ich
Vcc entferne, und wieder anschließe.

Bitte nicht falsch verstehen, ich will in die µC Programmierung
einsteigen, und verstehe mein Problem noch nicht.

Danke für die Antworten.

Onur

Autor: Hartmut Gröger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi

Ich kenne dein Layout nicht, aber meisstens ist es so, dass die LED
über Vorwiderstand mit der Anode an VCC liegt und die Katode am Port.
Das heisst wenn du die Ausgänge auf L legst ,wie in deinem zweiten
Code, leuchten die Dioden. Wenn die Ausgänge auf H gelegt werden, sind
die Dioden aus.

Mfg HG

Autor: Onur Demir (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erst einmal Danke für die Antworten.
Mein Layout haben ich nach der Zeichung von der folgenden Seite
aufgebaut, für den AT90S2313:

http://s-huehn.de/elektronik/avr-prog/avr-prog.htm

Ich werde heute abend nocheinmal mein Programm analysieren und meinen
µC flashen. Ziel ist es, daß die LED ausgeht. Wenn das geht, ist alles
okay. Ärgerlich ist halt, dass ich mein ISP von der parallelen
Schnittstelle entfernen muss, damit das Flash Programm läuft.

Danke für die Tips.

Grüße

Onur

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es etwas mit dem Analog Comparator zu tun haben? Der nämlich ist
standardmäßig aktiviert (Bit ACD in ACSR-Register ist per Default 0).

Autor: AndreasH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies einfach mal was Hartmut geschrieben hat.

Du musst FF statt 00 ausgeben.

Autor: Onur Demir (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

irgendwie traue ich der ganzen Sache nicht.

Mein Code lautet:

DEF  mp = R16         ; Register R16 = mp
  RJMP  main          ; Springe zu main
main:
  ldi    mp,0xFF      ; lade 0xFF in das register R16
  out    DDRB,mp      ; DDRB als Ausgang definieren
loop:
  ldi  mp,0x00        ; lade 0x00 in das register R16
  out  PORTB,mp       ; gebe 0x00 am PortB aus (also auch beim PortB
0)
rjmp  loop

Entferne ich jetzt die parallele Schnittstelle, leuchtet die LED immer
noch.
Wenn ich die parallele Schnittstelle dran habe, liegt am PortB0 = 3,8V.
An der Kathode, die ja an Vcc liegt = 5,2V. Am Widerstand liegen 0,3V.
Also liegen an der LED = 1,1V.
Auch wenn ich den Flash Speicher lösche, leuchtet die LED trotzdem.

Beigefügt ist mein Layout.

MFG

Onur

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.