mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Prob bei verschiedenen Taktfrequenz


Autor: Marcel Mischke (marcel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hey!
Ich hab im Bascom AVR folgende Zeilen programmiert:
$regfile = "m8535.dat"
$crystal = 4000000
$baud = 1200
Do
Print "Hello World!"
Loop

Allerdings hat es nicht richtig funktioniert. Daher habe ich die
Taktfrequenz auf 1 Mhz geändert. Ergebnis: Alles lief Fehlerfrei!
Ich benötige die Funktion aber bei 4Mhz. Kann mir jemand sagen warum es
bei 4Mhz nicht funktioniert? Im Anhang habe ich ein Bildschirmmitschnitt
von dem was das Terminalprogramm ausgespuckt hat.

Danke schonmal!

Autor: Marius S. (lupin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du schonmal versucht 4000000 durch 1200 zu teilen? das haut nicht
hin, oder?

Also besorg dir einen quarz dessen frequenz man durch 1200 teilen kann
oder benutze eine baudrate die halt besser passt (allerdings lässt sich
die serielle schnittstelle nicht dazu bewegen solch eine baudrate zu
benutzen)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ganz einfach Stolperfalle Nr. 1 (kommt jede Woche):

Ab Werk ist der interne 1MHz RC aktiv, Du mußt die Fuses
umprogrammieren dann klappt es auch mit dem Nachbarn (4MHz).


Peter

Autor: Marcel Mischke (marcel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also kann das eigentlich sehr gut Teilen.
Mit der Formel zum berechnen von UBR komme
ich auf eine Baudrate von 1202.
Das dürfte funktionieren.
Aber ich hab gerade mal andere Baudraten probiert.
Die gehen ebenfalls nicht bei 4Mhz

Autor: Marcel Mischke (marcel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Peter:
Hab ich gemacht im PonyProg
Hab eigentlich auch an die umgedrehte Logik gedacht.
Und im Code hab ich das $crystal = 4000000 auch geändert.

Autor: Marius S. (lupin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
entferne doch einfach mal den quarz und schau ob er dann immernoch
funktioniert - wenn er noch irgendwas sendet dann ist der interne RC
noch an :)

Autor: Marcel Mischke (marcel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will ihn doch mit dem internen Quarz benutzen.
Ich hab den Quarz jetzt mal ausgeschalten und nen externen
drangehangen. Siehe da, es klappte!
Also habe ich ihn mal was senden lassen, und das UBR in jedem Zyklus
erhöht. Es zeigte sich das er bei einer Baudrate von 2400 (im Terminal
eingestellt) und dem Registerwert 109 (statt 103) keine Fehler mehr
gemacht hat. Daher würde ich davon ausgehen, das der RC-Oszillator sehr
starke Temperaturschwankungen zeigt. Aber war ja auch gutes Wetter
heute:-)

Autor: Marius S. (lupin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also der RC-Oszillator läuft eigentlich immer auf 1 mhz, den kann man
nicht verstellen.

Ja ich glaub aufgrund der synchronisation geht das mit 2400 baud noch.
aber bei höheren geschwindigkeiten bekommst du bestimmt probleme.

Autor: Marcel Mischke (marcel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also mit den Fusebits kann man den Oszillator verstellen (siehe Auszug
aus dem Datenblatt)

Autor: Thomas K. (thkais)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Marius: Datenblätter lesen.

@Marcel: Der interne Oszillator ist nicht sehr genau. Deshalb gibts
eine Möglichkeit zum "Feintuning" mit dem OSCCAL-Register.
Temperaturstabiler ist aber ein externes Quartz.

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.