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
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
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.
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.
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
> 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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.