mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UCSRC0 bei ATMega128 - nicht einstellbar


Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
mein Problem ist folgendes: Ich benutze einen ATMega128 und möchte gerne 
USART0 benutzen. Beim Initialisieren der Schnittstelle sollte ich auf 
das Register UCSR0C zugreifen, weil ich dort synchron/asynchron-Betrieb 
bzw. Anzahl der Stop-Bits einstellen möchte. Leider ist dieses Register 
"nicht vorhanden" - vermutlich ein Problem mit einem Fuse-Bit, dass 
ausgeführt ist, um den 128er voll kompatibel zum 103er zu machen. Nur 
wie kann ich beim Simulieren im AVR-Studio dieses Register UCSR0C 
freigeben?
Danke schon mal im Voraus!

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du in der Source geschrieben UCSRC0 wie im Betreff oder UCSR0C 
wie im Nachrichtentext?

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Sourcecode habe ich UCSR0C geschrieben.
Wenn ich mir im AVR-Studio die Register von USART0 anschaue, dann wird 
in der Spalte "Address" folgendes angegeben: na (0x95). Für mich ergibt 
sich daraus, dass "na" die Bezeichnung für "nicht vorhanden" ist. Das 
Gleiche übrigens beim Register UBRR0H (Adress na(0x90).
Kann das mit dem Fuse-Bit für die Kombatibelität mit dem 103er zu tun 
haben?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unwahrscheinlich.

Das AVR-Studio weiss zum Zeitpunkt des Programmierens, Kompilierens und 
Simulierens nicht, dass die M103C Fuse in dem Stück Silizium auf deinem 
Basteltisch gesetzt ist oder nicht.

Das AVR-Studio erzeugt stur ein Programm für den Prozessor, den du in 
den Projektoptionen angegeben hast (sollte atmega128 sein). Aufgrund 
dieser Einstellung sucht es sich über die ersten Zeilen in deinem 
Programm (#include <avr/io.h>) das für den Atmega128 passende 
Includefile mit den entsprechenden Registernamen.

auch beim Simulieren/Debuggen kann man den AVR einstellen. Dort sollte 
es der gleiche sein, für den das Programm erzeugt wurde. Normalerweise 
ist das automatisch so, aber man kann das auch von Hand umstellen. 
Kontrolliere das mal.

Erst wenn das fertige Programm dann auf das Stück Silizium geschrieben 
wird, spielt es eine wichtige Rolle, ob auf dem die M103C Fuse gesetzt 
ist oder nicht. Wenn der Atmega128 im Atmega103 Modus läuft, dann 
funktionieren für den Atmega128 geschriebene Programme i.a. nicht oder 
falsch.

Vorschlag: Pack dein problematisches Projekt in ein Archiv und zeige das 
her.

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, in der Zwischenzeit hab ich mir das Datenblatt mal (sehr) genau 
durchgelesen - zumindest was es mit der seriellen Schnittstelle auf sich 
hat. Der ganze Clou liegt darin, dass u.a. das Register UCSR0C im 
erweiterten I/O-Bereich liegt und nicht mit den Befehlen "ldi" bzw. 
"out" bearbeitet werden kann. Nachdem ich "ldi" in "std" geändert habe, 
beschreibt mir mein Sourcecode das Register UCSR0C wie gewünscht.
Jedenfalls möchte ich mich bei dir für deine Antworten bedanken!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.