www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR-Studio BUG ? ( EECR cleared? )


Autor: Kai Schilling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR-Studio BUG ?

Leider funktioniert bei der AVR Studio Ver. 4.07 ,AVR
Simulator  Build  1, 0, 0, 9 die Simulation der ser. Schnittstelle 
nicht.
korrekt d.h der simulierte Controller (AT90S8515 bzw. mega...) bleibt
an der Stelle im Code hängen an der er auf das Rücksetzen des Bussy
wartet :

asm:
eep_r_wait_s:sbic  EECR, 0           ; bit cleared?
             rjmp  eep_r_wait_s
             .
             .
             ret

Dieser Fehler tritt anscheinend NUR im Schrittbetrieb auf , bei der
Sim. via " Run to Cursor " verläuft alles normal .

Ist dieses Problem Jemandem bekannt oder handelt es sich eher um einen
Konfig.-Fehler meinerseits ?

MfG Kai

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier gehts ja mächtig durcheinander...Was hat das EERE-Bit mit der
seriellen Schnittstelle zu tun??
Auf EECR.EERE braucht man nie zu warten, das Setzen löst das Lesen aus,
es werden automatisch 2 noops ausgeführt, dann kann man das Datenbyte
auch schon abholen.
Trotzdem solltest du dir die Version 4.08 holen.

Autor: Kai Schilling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry , da die Routine von Eprom auf ser. ausliest und ich außerdem wohl
etwas zu sparsam in der code Darstellung war , ist das natürlich zu
einem  Musterbeispiel an verwirrender Darstellung geworden.Hier noch
mal die vollständige Routine.
;String --> RS232 (temp1=Adress)
ser_string:
           push temp2
           mov temp2, temp1
           out EEARL, temp2                  ; set Eprom_Adr
     sbi EECR, EERE              ; set Read Enable Bit
nextchar_s:
           in temp1, EEDR
           rcall ser_out
           inc temp2
           out EEARL, temp2
           sbi EECR, EERE
eep_r_wait_s:sbic  EECR, 0                     ; bit cleared?
           rjmp  eep_r_wait_s                  ; no
           in temp1, EEDR                      ; yes ,then read
           tst temp1                           ;test string_end
           brne nextchar_s
           pop temp2
     ldi temp1, 10                       ;new line etc.
     rcall ser_out
     ldi temp1, 13
     rcall ser_out                       ;
           ret

Dank an Crazy Horse. Hast mich glücklicherweise darin erinnert das der
Befehl eh nur einen Clk dauert... so braucht man EERE ja nie
abzufragen.Leider wird das aber beim AVR Studio nicht weiter
angezeigt.

Sollte ich zum Lesen eigentlich besser das EEWE abfragen und auf 0
warten ? Vielleicht sicherer wenn mal n Int. die Routine unterbricht
und etwas im Eprom hinterlegen möchte.

MfG Kai

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.