PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : $regfile, $baud und $crystal (Anfänger)



RCO
18.09.2004, 14:26
ICh lese in Quelltexten immer z.B. folgende Anweisungen:


$regfile = 'm8def.dat'
$baud = 19200
$crystal = 3690000

Ich selber will einen AT90S2313 benutzen, was muss ich dann statt 'm8def.dat' einsetzen? Muss ich '$crystal' überheupt engeben und kann ich eine beliebige BAudrate angeben auch 150 oder so?
Kann Bascom-AVR nicht für mich immer diese informationen schreiben?

MFG Moritz

18.09.2004, 14:48
Ich glaube, das hast das Prinzip des USART noch nicht wirklich verstanden?! Wenn du dir die Passagen im Datenblatt durchliest, solltest du Klarheit erlangen. Ansonsten frage nochmal :-)

RCO
18.09.2004, 16:26
'USART' ich glaub ich hab was missverstanden?

recycle
18.09.2004, 16:52
....
$regfile = 'm8def.dat'
$baud = 19200
$crystal = 3690000
....
....
Kann Bascom-AVR nicht für mich immer diese informationen schreiben?

Wenn du in Bascom über "Options-Compiler" die Einstellungen für den richtigen Controller, die Quarzfrequenz und die Baudrate einstellst, brauchst du die 3 Zeilen oben im Programmcode normalerweise nicht.

Wenn du ein Programm downloadest kennst du aber die Bascom-Einstellungen von dem Author nicht, da bist du dann wohl besser dran, wenn sie im Quellcode angegeben sind.

Ich würde die Einstellungen aber auch in eigenen Programmen lieber immer wie oben im Quellcode festlegen, weil man sie da immer vor Augen hat.
Wenn du mal aus irgendeinem Grund die Einstellungen in Bascom änderst, wunderst du dich sonst warum dein Programm plötzlich nicht mehr funktioniert.

Für den AT90S2313 lautet die Angabe $regfile = '2313def.dat'

Was die Baudrate angeht, macht es grundsätzlich wenig Sinn irgendwelche Werte einzustellen, die die Gegenstelle nicht beherrscht. Wenn du mit dem Controller z.B. über ein Terminalprogramm am PC kommunizieren willst, solltest du eine der Einstellungen wählen, die dein Terminalprogramm beherscht und die für deinen Controller nicht zu schnell ist.

Auf Controllerseite spielt der verwendete Quarz eine wichtige Rolle. Je höher dessen Frequenz ist, desto höhere Baudraten kanst du erzielen.

Was den Gast angeht, vermute ich mal er hat deine Frage noch nicht wirklich verstanden, aber wenn er sie oben nochmal nachliest erlangt er ja vielleicht Klarheit und ansonsten kann er ja nachfragen ;-)

Die Tabelle im Datenblatt sind sicherlich interessant, aber um in Bascom eine serielle Verbindung zu programmieren brauchst du die nicht.

Die Baudrate ist eine Teiler der Quarzfrequenz. Da als Baudrate nur ganzzahlige Werte in Frage kommen, die Quarzfrequenz durch den entsprechenden Teiler aber meist kein ganzzahliger Wert ist, ergeben sich je nach Kombination aus Quarzfrequenz und Baudrate unterschiedlich grosse Fehler.
Diese Zusammenhänge sind im Datenblatt tabellarisch aufgelistet und interessant, wenn du in Assembler programmierst oder wenn du unbedingt eine möglichst geringe Fehlerrate erzielen willst.

In Bascom kannst du über Optionen-Communication eine Baudrate einstellen und direkt ablesen, welcher Fehler sich bei der von dir verwendeten Quarzfrequenz ergibt.
Da die serielle Kommunikation eine automatische Fehlerkerrektur beinhaltet, darf sich da auch ruhig ein Fehler ergeben.
Die Kommunikation funktioniert trotzdem. Bei grösserem Fehler-Werten wird sie nur langsamer, aber ich bezweifle, dass du davon etwas mitbekommen wirst.

Da der AT90S2131 keinen internen Oszillator hat, wirst du wohl zwangsläufig einen externen Quarz anschliessen müssen.
Bei einem 4 MHz Quarz (oder grösser) würde ich für 9600 oder 19200 als Baudrate einstellen. Das funktioniert, ist in fast allen Terminalprogrammen einstellbar und für die meisten Belange schnell genug.

Frank
18.09.2004, 16:57
Man kann auch alles in der Benutzeroberfläche einstellen, dann kann man oben genannte Anweisungen weglasseen.
Aber ich empfehle sich anzugewöhnen diese als erste im Programm zu verwenden. Der Code ist dann auch übersichtlicher.

Bei den baudraten kann man glaube nur alle Standard-Werte einstellen, Zwischenwerte benutzt ja eh kein Mensch. Also z.B. 300,600,1200,9600 usw.
Aber die meisten verwenden 9600 Baud, da sist auch ein guter Kompromiss zwischen Fehlerrate und Geschwindigkeit.

Ich würde ein Bascom-Grundgerüst einfach als Standard speichern. Wenn du ein neues Programm schreibst, lädst du dieses und speicherst es unter anderem Namen. So hast du keine Arbeit mehr damit

Gruß frank

19.09.2004, 12:29
Na, na na!!! "Zwischenwerte" benutze ich um DMX-Signale zu erzeugen. (250kBaud) ;)
Die Baudraten sind individuell Einstellbar. Dann muss man allerdings daruf achten, das die Quarzfrequenz dazupasst. Sonst steigt die Fehlerrate ratztfatz auf weit mehr als 5% an.
Im Netz sind diverse Baudratenrechner frei verfügbar mit denen man die Erforderliche Quarzfrequenz ausrechnen kann.
Einziger Haken: Man muss dann sämtliche Zeitkritischen Programmabläufe an das Quarz anpassen und nicht umgedreht was bei den "schiefen" Werten der Frequenzen, die man unter Umständen benötigt, manchmal etwas Nervig werden kann.

RCO
19.09.2004, 19:30
Danke erstmal für die Antworten, die Einstellungen werde ich dann wohl immer oben reinschreiben. Dass ich bei den baudraten nciht vollkommen beliebige Werte nehme ist klar. Nur ist es ja, hab ich mir zumindest gedacht besser eine hohe Baudrate zu nehmen, weil dann beim übertragen weniger Zeit verloren geht, oder?

Was passiert eigentlich, wenn ich ein 9,2313 Mhz Quarz verwenden würde.
(bezogen jetzt auf krumme Zahl, z.B. auch 4,231312)
solange ich dann sagen würde $crystal = 9231300 wäre das doch kein Problem, oder? Also bezogen auf die Kommunikation und den Timer etc. ?

MFG Moritz

Rama-k
27.09.2004, 18:13
Hallo,


Was ist die $regfile vom mega 32?


mfG Rama-k

Rama-k
27.09.2004, 18:32
Hat sich erledigt!


mfG Rama-k