Guten Abend Community, ich habe hier ein Problem vorliegen, welches ich mir nicht erklären kann. Ich arbeite mit Atmel Studio 6.1. Ich möchte den USART initialisieren. Wenn ich in das Datenblatt sehe, dann steht darin, dass ich die beiden Register UBRRHn und UBRRLn benutzen soll, wenn ich einfach nur USART initialisieren möchte. Wenn ich aber USART MSPIM benutzen will, soll ich das Register UBRRnL und UBRRnH gebrauchen. Ihr seht also den Unterschied - UBRRHn zu UBRRnH und analog dazu das BBRL. Wenn ich aber UBRRHn und UBRRLn ( mit n=1) festlege, dann leuchtet es nicht lila auf. Das Atmel Studio erkennt UBRRHn und UBRRLn nicht als Register an. Wenn ich dagegen UBRRnH und UBRRnL ( mit n=1) schreibe, dann leuchtet es lila auf und somit erkennt das Atmel Studio die Register UBRRnH und UBBRnL an. Das wäre genug, wenn ich USART im MSPIM Modus betreiben wollte. Stattdessen möchte ich es aber im einfachen USART Modus betreiben. Hatte jmd. von euch schon mal dieses Problem bzw. hat jmd. dafür eine Erklärung? FG fragenkinsey
Hi
>Ich möchte den USART initialisieren.
Welcher Controller?
MfG Spess
Den AT90USB1287 Hier der Link zum uC. http://www.atmel.com/Images/doc7593.pdf Die Angaben zum einfachen USART stehen auf den Seiten 177 bis 201 Danach folgen die Angaben zum USART im MSPIM.
Hi
>Wenn ich aber UBRRHn und UBRRLn ( mit n=1) festlege,
Da der Controller nur eine USART hat ist das USART0. Eine USART1 gibt es
nicht.
MfG Spess
Hallo Spess, deine Antwort ist logisch. Allerdings behebt es nicht mein Problem. Selbst wenn ich UBRRH0 und UBRRL0 oder einfach nur UBRRH und UBRRL schreibe, ändert sich nichts an dem Problem. Hier mal mein Auszug aus dem Quellcode > // Festlegen Baudrate > > UCSR1C |= (1<<UMSEL10) | (1<<UMSEL11); // überflüssig > > UBRRH0 = (UBRRH_VALUE) ; > UBRRL0 = (UBRRL_VALUE) ; > > > > UCSR1B = (1<<TXEN1); // Sendenfunktion aktiviert > > // Einstellung des Formats der übertragenen Daten > > UCSR1C = (1<<USBS1); // zwei Stopbits > > > UCSR1B = (1<< UCSZ12); // 9 Datenbits > > UCSR1C = (1<< UCSZ11) | (1<< UCSZ10); //2 Stoppbits
Mit ein ganz klein wenig Assoziatiosvermögen würde man sich Gedanken machen, wofür die 1 überall steht, z.B. in UCSR1C.
Hi >deine Antwort ist logisch. Allerdings behebt es nicht mein Problem. >Selbst wenn ich UBRRH0 und UBRRL0 oder einfach nur UBRRH und UBRRL >schreibe, ändert sich nichts an dem Problem. Vergiss meine Aussage. Bei dem Controller geht die Zählung anscheinend wirklich mit 1 los. Aber sieh erst mal in der Hilfe zum zum Simulator unter Known Issues nach, in wie weit der Controller/USART unterstützt wird. MfG Spess
Hallo @Spess: ich habe mal ins "Register Summary" einen Blick geworfen. Dort gibt es nur das UBRR1H und das UBRR1L. Deshalb gehe ich davon aus, dass der eine Beispielcode für die USART Initialisierung etwas ungenau ist. Ich nehme jetzt als einfach UBBR1H und UBRR1L. Danke für dein Engagement @MWS: ich fasse das mal als Hinweis auf, den ich noch verstehen werde. Schönen Abend euch allen fragenkinsey Nachtrag: @ Spess: deinen Ratschlag werde ich befolgen
:
Bearbeitet durch User
Julian Kinsey schrieb: > ich fasse das mal als Hinweis auf, den ich noch verstehen werde. Die Zahl gibt bei mehreren gleichen internen Funktionseinheiten die jeweilige Einheit an, d.h. UBRR1.. gehört zu UCSR1... Normalerweise geht's bei 0 los, aber wenn man sich nicht schlüssig ist, dann sieht man in der Register Summary gegen Ende des DBs nach, eine Suche nach UBRR führt dann unmittelbar zum Ergebnis.
@MWS: Wenn du nur das meintest, kann ich beruhigt sein. Mein Assoziationsvermögen braucht sich nicht zu verstecken :-) @ Spess: spess53 schrieb: > um Simulator unter Known Issues > nach Ist das eine Funktion im Atmel Studio? Wenn du diese Frage bejahst, dann suche ich einfach noch Mal gründlicher. Danke
MWS schrieb: > Normalerweise geht's bei 0 los, aber wenn man sich nicht schlüssig ist, > dann sieht man in der Register Summary gegen Ende des DBs nach, eine > Suche nach UBRR führt dann unmittelbar zum Ergebnis. Hier ist ausnahmsweise das Datenblatt die falsche Informationsquelle. Einzig relevant ist die für den Prozessor vorhandene Header-Datei. Die sollte mit dem DB übereinstimmen, muss sie aber nicht.
Hi >Ist das eine Funktion im Atmel Studio? Wenn du diese Frage bejahst, dann >suche ich einfach noch Mal gründlicher. Selbsverständlich ist die Hilfe eine Funktion des ATMel Studios. Und dort steht unter: Help -> View Help -> Simulator -> Known issues in Simulator -> General issues AT90CAN*/ATmega*C*, AT90USB*/ATmega*U*, AT90PWM*, and ATtiny87/167 devices will never be supported by simulator models, for these devices the 8-bit instruction set simulator will have to be used. Bisher habe ich noch keinen AVR-Simulator erlebt, der die Hardware komplett und korrekt abbildet. Gehe mal in deinem Fall auch davon aus. MfG Spess
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.