AVRStudio Simulator + USART (Atmega16)

Gast #812340
Lesenswert?
• ▲
▼
N'abend!

Bevor nun die ersten wohl berechtigterweise gleich mit den Köpfen 
schütteln... die Such Funktion war nicht so ergiebig wie ich es gern 
gehabt hätte.

Also, mir ist nicht so ganz klar warum der AVR Studio Simulator nicht 
das tut was er sollte.

Hier nen kleiner Auszug aus dem Code:

---------------------------------------------------
UBRRH = UBRR_VAL;
UCSRA = ( 1 << RXEN );
UCSRC = (1<<URSEL) | (1<<USBS) | (3<<UCSZ0);

...

PORTC |= USART_Receive();

...

uint8_t USART_Receive()
{
   while (!(UCSRA & (1<<RXC)))   // warten bis Zeichen verfuegbar
    return UDR;         // Bit zurückgeben
}
----------------------------------------------------

Theoretisch sollte doch an PortC das erste Bit gesetzt sein, wenn ich in 
der while Schleife das UDR Bit und das RXC Bit auf 1 setze?

Warum tut er das nich?

Vielen Dank im vorraus! :)

Flo
Gast #812355
Lesenswert?
• ▲
▼
"The UART/USART UDR register can only be modified from the application. 
Input via stimuli files or by modifying the I/O view etc is not 
possible.

Terminal I/O window is not implemented. This feature is available in AVR 
Studio 3.xx."

Ah ok, danke :).

Hätte ich allerdings gleich mal noch die nächste Frage. Im Tutorial und 
an mehreren anderen Stellen wird das Einlesen von einem "Zeichen" immer 
durch diese while Schleife realisiert.

Was gibt denn dieses UDR genau zurück? Ein Bit? Ein Byte? Das Byte das 
zwischen Start/Stop Bit(s) steht?  Konnte dazu auch im Datenblatt nix 
finden.

Und Danke im vorraus nochmal!
Gast #812384
Lesenswert?
• ▲
▼
HI

>Achja, macht es u.U. Sinn für solche Tests ...

Nein. Die AVR-Studios 3.xx waren in der Simulation auch nicht besser. 
Als notorischer Assemblerprogrammierer kann ich dir auch nur bedingt 
helfen.

Der Simulator reagiert zumindest auf ein manuelles Setzen der 
entsprechenden Bits richtig.

Ich würde kannst du an der Stelle :
>while (!(UCSRA & (1<<RXC)))   // warten bis Zeichen verfuegbar

einen Breakpoint setzen und dann die Bits setzen

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren