Hallo, ich versuche seit geraumer Zeit eine UART Kommunikation mit einem AT128 herzustellen. Leider ohne Erfolg. Um Fehler auszuschließen betreibe ich parallel einen AT16 völlig ohne Probleme. Ich teste mit einem simplen Code, der gleich ist für beide ATs, nur eben die Befehle entsprechend angepasst. Klar ist, daß beim AT128 MISO und MOSI auf den Ports von RX und TX liegen. Wenn ich mit SPI programmiere empfange ich daher auch wirre Signale auf dem UART. Normale Signale kann ich aber nicht übertragen. Hat das etwas mit SPIEN zu tun, oder gibt es eine andere Erklärung?
Hi
>ich versuche seit geraumer Zeit eine UART Kommunikation mit einem AT128
Was ist ein AT128?
MfG Spess
> Was ist ein AT128?
ein ATmega128. Sorry, ich dachte das ist klar. AT16 ist dann natürlich
ATmega16
Hi >YKlar ist, daß beim AT128 MISO und MOSI auf den Ports von RX und TX >liegen. Dann benutze doch einfach UASRT1. >Das ist jetzt aber nicht wieder dieser "ATmega103 compatibility mode", >oder? Ja, ist er. MfG Spess
> Das ist jetzt aber nicht wieder dieser "ATmega103 compatibility mode", > oder? Nein, der ist ausgeschaltet
> Nein, der ist ausgeschaltet
Okay, war eigentlich klar, bei jemandem, der seit zehn Jahren dabei ist.
> Ich teste mit einem simplen Code, der gleich ist für beide ATs
Wie sieht der aus?
> Dann benutze doch einfach UASRT1. Das war natürlich ein logischer Tip, auf den ich auch selbst hätte kommen können. Das Problem ist nur, daß ich mit einer fertigen Platine arbeite, bei der nur RXD0 und TXD0 rausgezogen sind. Allerdings habe ich inzwischen mit einer Testschaltung einen zweiten ATmega getestet und leider auch mit USART1 keine Kommunikation. Damit ist aber zumindest ausgeschlossen, daß es mit SPIEN zusammenhängt. > Wie sieht der aus? anliegend der Code.
Dies ist mir völlig unklar: [avr] ldi temp, high(BAUD_REAL) sts UBRR0H, temp ldi temp, low(BAUD_REAL) sts UBRR0L, temp [/avrasm]
PPS: All die sts und lds bei USART0 sind doch auch falsch, ausgenommen UCSR0C. Ich habe leider keinen ATmega128 zum Ausprobieren.
> Dies ist mir völlig unklar:
Sorry, das war mal ein Test zwischendurch. Muß natürlich UBRR_VAL statt
BAUD_REAL heißen.
> All die sts und lds bei USART0 sind doch auch falsch, ausgenommen > UCSR0C Das war der richtige Hinweis. Das kommt davon, wenn man sich die Unterlagen nicht mehr richtig anschaut. Ich habe mir die Liste nochmals angesehen und festgestellt, daß auch für UBRR0H das sts stimmt. Da das der erste Eintrag ist, habe ich vermutlich gar nicht mehr weiter gesehen und alles auf sts gesetzt. Der Debugger schluckt das ja ohne zu meckern. Herzlichen Dank!
Also ich selbst schreibe, wenn ich mir nicht ganz sicher bin, erstmal out bzw. in, und wenn gemeckert wird, ersetze ich durch sts bzw. lds. Eine andere Möglichkeit ist die Verwendung zweier Makros wie in https://www.mikrocontroller.net/articles/AVR_Assembler_Makros unter I/O beschrieben.
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.