Guten Morgen liebe Gemeinde, ich bin neu hier im Forum und hoffe mir kann hier geholfen werden. Ich versuche eine einfache USB Verbindung zwischen PC und Mikrocontroller herzustellen. Ich verwende dafür ein MEGA128-USB-Board mit CP2102 Silab USB-USART-Bridge. Meine Initialisierung: #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) void InitUART1(void) { UBRR1H = UBRR_VAL >> 8; UBRR1L = UBRR_VAL & 0xFF; // enable receiver and trasmitter UCSR1B = (1<<RXEN)|(1<<TXEN); // set frame format: 1stop bit, 8data UCSR1C = (0<<USBS)|(2<<UCSZ0); } Die berechnete Baudrate habe ich über ein Display ausgeben lassen, die stimmt. Wenn ich nun ein Zeichen sende empfängt das Terminal am PC leider ein anderes. Ich sende mit dieser Funktion: void TestSend(void) { while (!(UCSR1A & (1<<UDRE))) // warten bis Senden moeglich ; UDR1 = 'T'; } Nun hab ich in dem Forum gelesen, dass beim ATMega128 der ATmega103 Compatibility Mode standardmäßig aktiviert ist. Ich hab versucht den zu deaktivieren, leider zeigt mir aber AVR Studio nur die Fuses von einem ATMega32 an. Vielleicht hat jemand schon meinen Fehler gefunden und kann mir helfen. Falls ich irgendwelche wichtigen Infos vergessen habe bitte melden großes Dankeschön schonmal
Moin, dave0815 schrieb: > Ich hab versucht den zu deaktivieren, leider zeigt mir aber AVR Studio > nur die Fuses von einem ATMega32 an. dann stell im AVRStudio den richtigen Prozessortyp ein. im Programmer Dialog -> Reiter Main oben MfG
danke für den Tipp, hat leider nicht geholfen, weil der Kompatibilitätsmodus schon deaktiviert war. Hat jemand noch eine andere Idee woran es liegen könnte?
dave0815 schrieb: > hat leider nicht geholfen, weil der Kompatibilitätsmodus schon > deaktiviert war. Der berechtigte Hinweis von Sauger bezieht sich auf "Fuses von einem ATMega32" in Beitrag "Probleme mit ATMega128 UART" und ist damit noch nicht beantwortet.
dave0815 schrieb: > danke für den Tipp, > hat leider nicht geholfen, weil der Kompatibilitätsmodus schon > deaktiviert war. > > Hat jemand noch eine andere Idee woran es liegen könnte? Mit 99% Sicherheit darin, dass dein µC nicht mit der Taktfrequenz arbeitet, die du bei F_CPU angegeben hast.
hoffentlich ist es nur das. Ich such gleich mal im User Manual wie ich den Oszillator auswähl. danke
Nabend, Karl heinz Buchegger schrieb: > Mit 99% Sicherheit darin, dass dein µC nicht mit der Taktfrequenz > arbeitet, die du bei F_CPU angegeben hast. sehe ich auch so, obwohl... dave0815 schrieb: > Die berechnete Baudrate habe ich über ein Display ausgeben lassen, die > stimmt. ... dave0815 schrieb: > hoffentlich ist es nur das. > Ich such gleich mal im User Manual wie ich den Oszillator auswähl. ...es fehlen wohl noch einige Grundlagen. Zum Glück gibt es kein Tutorial in diesem Forum ;-) MfG
Ich hab's mal im Manual nachgeschlagen und überprüft. Die Fuses sind soweit ich beurteilen kann in Ordnung. Es ist "external high freq. Crystal" für mein 16MHz Quarz ausgewählt. Zusätzlich ist das CKOPT gesetzt.
und wenn du uns jetzt noch sagst wie F_CPU und BAUD aussehen, lässt sich das Geheimnis lüften.
dave0815 schrieb: > Ich hab's mal im Manual nachgeschlagen und überprüft. > > Die Fuses sind soweit ich beurteilen kann in Ordnung. > Es ist "external high freq. Crystal" für mein 16MHz Quarz ausgewählt. > Zusätzlich ist das CKOPT gesetzt. Und, hast du auch überprüft, ob der aktiv ist? http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART
> UCSR1C = (0<<USBS)|(2<<UCSZ0);
Wer solche Abkürzungen benutzt sollte sich nicht wundern
wenn das in die Hose geht. So sieht das besser aus:
UCSR1C = (0<<USBS1) | (1<<UCSZ11) (1<<UCSZ10);
oder
UCSR1C = (0<<USBS1)|(3<<UCSZ10);
Du hast deinen UART auf 7Bit gestellt.
wow, danke für die vielen Tipps. Es war doch tatsächlich die falsche Anzahl Datenbits eingestellt. Ich muss ehrlich gestehen ich hab die Initialisierung größtenteils aus dem UserManual abgetippt und da muss mir dann ein Fehler unterlaufen sein. Ich versteh auch jetzt erst die Schreibweise wie man die Bits setzt. Aus den Abkürzungen im Manual wurde ich nicht schlau. Auf jeden Fall bedank ich mich bei allen die mein Problem durchgelesen haben und vor allem beim holger der den Fehler entdeckt hat.
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.