www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART im AVR Studio simulieren


Autor: Burkhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi

Ich habe ein Programm für meinen at90S3213 geschrieben. Um Fehler in
dem Programm zu finden
würde ich es gerne debuggen. Ich benutze dafür das AVR Studio von
Atmel.
Leider hab ich in meinem Programm eine Stelle, an der mein weiterer
Programmablauf von
einem über den UART empfangenen Zeichen abhängt. Da ich in der
Simulationsumgebung dieses Zeichen
nicht gesendet bekomme, wird der Codeteil in dem ich den Fehler vermute
nie ausgeführt.

also konkret:



  c = uart_getc();

        if ( c & UART_NO_DATA )
        {
            /*
             * no data available from UART
             */
        }
        else
        {
            /*
             * new data available from UART
             */

  //... weiterverarbeitung des empfangenen Zeichens - diesen Teil würde
ich gerne in meiner Simulationsumgebung prüfen
  }


gibt es eine Möglichkeit den Empfang eines Zeichens zu simulieren, oder
können die variablen geziehlt aus dem AVRStudio so
verändert werden, dass man in solche Fälle springen kann???

Burkhard

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich nehme mal an, daß du in der Funktion "uart_getc()" das
UDR-Register ausliest. Wenn du kurz davor einen Breakpoint setzt und
dann das UDR mit dem Zeichen manuell lädst, das du empfangen willst,
dann sollte das gehen.

Gruß
Markus

Autor: Sven (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
danke dir Markus - der Tip war schon mal sehr gut. Meine "uart_getc()"
 ist allerdings etwas komplizierter aufgebaut. Zugegebenermaßen ist sie
aber nicht von mir, sondern ich binde sie aus der uart Bibliothek von
Peter Fleury in mein Programm mit ein.
Das UDR Register manuell zu laden funktioniert leider nicht. Allerdings
find ich mich auch nicht so recht in dem Code zurecht, den ich da
eingebunden habe, und was der genau von mir will. Ich habe ihn mal mit
angehängt - wär nett, wenn du meal einen Blick auf die uart_getc
Funktion werfen koenntest.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Machs doch einfach so:

#define DEBUG
...
...
#ifdef DEBUG
   weiterverarbeitung des empfangenen Zeichnes
#else
   deine normale Routine wie oben beschrieben
#endif

Also mit anderen Worten du tust einfach so, als ob das richtige Zeichen
empfangen wurde und keine weiteren Zeichen im UART sind und siumulierst
nur diesen Teil.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke dir Thorsten,
das denke ich ist genau das gesuchte, ich wäre dir jetzt nur noch für
einen kleinen Hinweis dankbar, wohin ich die einzelnen zeilen zu
schreiben habe und was noch zusätzlich hineinkommt an der Stelle der
Punkte.

Ich nehm mal an alles in den Headerbereich und statt der Punkte meine
anderen #define's. So wars gemeint nehm ich an. Richtig ?

Sven

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich nehm mal an alles in den Headerbereich und statt der Punkte
> meine anderen #define's. So wars gemeint nehm ich an. Richtig ?

Ja genau. Das #define kommt in den Headerbereich, das #ifdef etc. in
dein Programm.

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.