www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega8: UBRR in BASCOM


Autor: Thurys (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebes Forum.
Bei meinem ersten Projekt mit Mikrocontrollern bin ich ziemlich schnell 
schon auf das erste Hindernis gestoßen.
Ich möchte den ATMega8 über die serielle Schnittstelle (RS232) mit dem 
Computer verbinden.
Den Schaltkreis habe ich aufgebaut und als Taktgeber verwende ich einen 
4MHz Quarz.
Dies ist das Programm, welches ich auf dem Controller laufen lasse:
$regfile = "m8def.dat"

$crystal = 4000000

$baud = 9600


Do

  Print "Hello World"
  Waitms 250
Loop



End

Jedoch kommt am Rechner nur Müll an (ich benutze den von Bascom 
integrierten Terminal).
Jetzt habe ich gelesen, dass man den UBRR ändern muss, jedoch weiß ich 
nicht, wie dieses in BASCOM geht.
Die Formeln habe ich mir auch schon angeguckt und ich verstehe auch, 
warum man es ändern muss, nur nicht wie.
Es wäre nett, wenn mir das jemand zeigen könnte.

Liebe Grüße
Thurys

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thurys schrieb:

> Jedoch kommt am Rechner nur Müll an (ich benutze den von Bascom
> integrierten Terminal).

Das lässt vermuten, dass die Baudrate nicht stimmt.

> Jetzt habe ich gelesen, dass man den UBRR ändern muss, jedoch weiß ich
> nicht, wie dieses in BASCOM geht.

Das macht Bascom bereits für Dich, da Du Controllertakt und Baudrate 
angegeben hast. Wie gut Bascom das macht, kann ich Dir allerdings nicht 
sagen.

> Die Formeln habe ich mir auch schon angeguckt und ich verstehe auch,
> warum man es ändern muss, nur nicht wie.

Schau Dir im Datenblatt die I/O-Register an (Zusammenfassung ganz 
hinten), Du kannst mit einfachen Zuweisungen (Registernahme=Zahl) darauf 
zugreifen.

> Es wäre nett, wenn mir das jemand zeigen könnte.

Ich vermute aber, dass es gar nicht daran liegt. Du hast zwar einen 
(nicht besonders für Baudraten geeigneten) Quarz angeschlossen. Hast Du 
ihn aber auch angemeldet? Damit meine ich, hast Du dem Mega8 durch 
entsprechendes Einstellen der Fusebits mitgeteilt, dass er den Quarz 
auch benutzen soll?

Wenn nein, dann probiere bitte nicht wild und unverstanden drauflos, 
denn dann sperrst Du Dich mit hoher Wahrscheinlichkeit aus. Wenn man an 
die Fusebits geht, muss man wissen was man tut. Da gibt es einige 
Möglichkeiten, den Controller für weiteres ISP-Programmieren 
lahmzulegen.

>
> Liebe Grüße
> Thurys

MfG, Consulter

Autor: Spezi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Jetzt habe ich gelesen, dass man den UBRR ändern muss, jedoch weiß ich
> nicht, wie dieses in BASCOM geht.

Warum sollte man das tun? Wenn bei BASCOM die Angaben

> $crystal = 4000000
> $baud = 9600

korrekt eingetragen sind, berechnet es den Wert richtig. Eine Änderung 
von Registern ist nicht nötig.
(In dem Compiler-Log von BASCOM kann man die Abweichung der realen 
Baudrate zum Soll nachlesen)

Wie sind die Fusebits vom Controller eingestellt? Externer Quarz 
aktiviert? (CKSEL3..0 = 1111) Sonst läuft der interne Oszillator mit 
1MHz ...

Autor: Thurys (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dir für deine Antwort.
Die Fusebits habe ich schon auf den externen Quarz umgestellt.
Habe jetzt auch die Fehlerrate bei 9600Bd ausgerechnet, die liegt bei 
0.1%, also sollte sie noch akzeptabel sein.
Habe es jetzt so versucht:
$regfile = "m8def.dat"

$crystal = 4000000

$baud = 9600
Ubrr = 25



Do

  Print "Hello World"
  Waitms 250
Loop



End
Bringt aber auch keinen Vorteil...
Die Schaltung habe ich jetzt auch noch einmal kontrolliert, es sollte 
alles richtig sein (es ist wie im Tutorial beschrieben geschaltet).
Prinzipiell sollte es doch auch mit meinem Quarz funktionieren oder ist 
ein Baudratenquarz Pflicht?


Liebe Grüße
Thurys

Autor: Spezi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für eine serielle Schnittstelle verwendest du? (USB-Wandler, direkt 
im PC eingebaut, ...) Steht die Baudrate vom Terminal richtig?

> Prinzipiell sollte es doch auch mit meinem Quarz funktionieren oder ist
> ein Baudratenquarz Pflicht?

Antworten:  Ja  /  Nein  (die Abweichung von 0,2% ist problemlos)

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt der Müll denn ziemlich genau 4mal pro Sekunde?  Erhöhe mal die 
Warteschleife auf 1000ms und zähl mal ab.

Autor: Thurys (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja es sind ziemlich genau 4 mal pro Sekunde (glaube ich, ich werde die 
Wartezeit gleich mal auf 1000ms erhöhen und gucke dann, ob es einmal die 
Sekunde kommt).
Ich verwende direkt den COM-Port an meinem Rechner.
Die Baudrate steht auch in dem Terminalprogramm richtig.
Danke für eure Hilfe schonmal, freut mich, dass so schnell Antworten 
kommen =)


So habe es auf eine Sekunde gestellt und das stimmt genau (Jedenfalls 
stimmt es mit meiner Uhr überein)

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht die Hardware aus, die an RxD und TxD des ATmega angeschlossen 
ist?

Autor: malte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Hast Du auch die Massen verbunden? Also die Masse Deiner Schaltung mit 
der Masse von Deinem Rechner? Ich meine mich dunkel zu erinnern, dass 
das Fehlen dieser Verbindung zu dem von Dir beschriebenen "Müll" führt. 
Nur so'n Gedanke...

Gruß
Malte

Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kommt den RX und TC vom µC zum PC?
Hast du einen Pegelwandler dazischen?
Wenn nicht wirds wohl daran liegen.


Gruss
David

Autor: Thurys (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Pegelwandler habe ich den MAX232 zwischengeschaltet. Dies habe ich 
genau so gemacht, wie im Tutorial beschrieben.
Masse ist auch angeschlossen. Die ganze Schaltung ist auf einem 
Steckboard (Breadboard) aufgebaut. Kann es vielleicht daran liegen?

Liebe Grüße
Thurys

Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also an der Hardware liegts dann höchstwahrscheinlich nich.

Aber dann geh mal ins Bascom Terminal, dann auf den Reiter "Terminal" 
und dann "Settings" und schau ob da auch die richtige Baudrate 
eingestelle is ;)

Und wenn das auchnix hilft schau mal ob der µC wirklich mit dem externen 
Quarz läuft und zieh den einfach mal raus und schau ob dann immernoch 
was ankommt aufem Terminal. Wenn ja läuft er aufem internen ;)


gruss
David

Autor: Thurys (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier habe ich mal einen Ausschnitt von dem Müll der rauskommt:
mdðålì߁zéÜìˆkÌðHelìoÀ{ëœÌC[Á•±q}ºíÜìˆiÄ𐕱±}téK±‘5Qü•±±ýº½Éq1m¤ðHell
½É1C[Á)a±ýºõ™áC[Á)aqýéõ‰áCkÄð)aqý¹½‘áC[Á)aq}]}áCKÁeììß ¯yáam¤ø
eÜìßôé\nˆu¢ø%±q};é“^nˆm¦ø%±±};é\îˆi¤ø)±qºé^îˆi¤ø%±q}zé\îˆi¤ø±c}
vé\îˆm¤ø5±q}ré\îˆmdø0)qñ}º½Éq!uÒüHelloÀ]½Éaa[ƒHelÜ}ôé—/‹WÁHÅaáyÑ+K¬
Bei genauerem Hinschauen sind Fragmente des "Hello World"s zu erkennen, 
was mich aber auch nicht weiterbringt.

Liebe Grüße

Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt hast du die Baudrate im Terminal überprüft?

Autor: Thurys (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe den Quarz während des Betriebs rausgezogen, der Controller macht 
jedoch weiter.
Ich bin mir aber sicher, alles richtig eingestellt zu haben. Anbei ist 
ein Screenshot von den Fusebits (ausgelesen mit PonyProg).

Liebe Grüße

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie lang dauert ein Wait 1 ?

Genau eine Sekunde ?


Oder stelle mal $crystal = 1000000 ein.

GGf. ist der ext. Quarz doch nicht aktiv.

Hast du einen Oszi ??

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst auch in BASCOM deine Fuses setzen.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es macht keinen Sinn, das UBRR zu benutzen, wenn man $baud = 9600 
benutzt.

Dabei wird schon alles richtig eingestellt.

UBRR ist nur bei manueller Festsetzung der Baudrate in Ass o.ä 
sinnnvoll.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thurys schrieb:
> Habe den Quarz während des Betriebs rausgezogen, der Controller macht
> jedoch weiter.

Dann wird dein Quarz nicht benutzt

> Ich bin mir aber sicher, alles richtig eingestellt zu haben.

Kann nicht sein.
Nochmal kontrollieren.

Wenn der µC auf Quarz steht und kein Quarz vorhanden ist, KANN der µC 
nicht arbeiten.

Autor: Thurys (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider bin ich nicht im Besitz eines Oszis, bin ja noch ein armer 
Schüler ;)
Waitms 1000 dauert genau eine Sekunde.
Wenn ich $crystal = 1000000 setze, denn stimmen die Zeitabstände 
überhaupt nicht mehr (es ist alles viel schneller, als es sein sollte).
Mit $crystal = 4000000 haben die Wait-zeiten gestimmt, was für mich 
eigentlich ein Zeichen war, dass der Quarz genutzt wird. Jedoch 
verwundert es mich, dass der Controller weiterarbeitet, wenn der Quarz 
gezogen wird.


Liebe Grüße

Autor: Samuel C. (dragonsam)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann hast du wohl deinen internen Quarz auf 4MHz gestellt.

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Samuel C. schrieb:
> Dann hast du wohl deinen internen Quarz auf 4MHz gestellt.

Es gibt keinen internen Quarz .

Sollte der interne RC-Oszillator auf 4 MHz gesetzt worden sein, dann 
sollte man auch bedenken, dass dann der Oszillator des Mega8 bei anderen 
Einstellungen als 1 MHz nicht kalibriert ist und der Oszillator nach der 
"Blankenheimer Sonne" geht. Damit ist ein funktionierender UART sehr 
unwahrscheinlich.

MfG, Consulter

Autor: Samuel C. (dragonsam)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kluchscheißender Consulter schrieb:
> Es gibt keinen internen Quarz .

Entschuldigung, da hab ich wohl nicht aufgepasst.

Autor: Thurys (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm das hilft mir jetzt auch nicht weiter.
Wie in dem Bild zu sehen ist, welches ich oben gepostet habe, sollten 
die Fusebits (meiner Meinung nach) richtig gesetzt sein. In BASCOM 
schaffe ich es übrigends nicht eine verbindung zu meinem Controller her 
zu stellen.

Grüße

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thurys schrieb:
> Hm das hilft mir jetzt auch nicht weiter.
> Wie in dem Bild zu sehen ist, welches ich oben gepostet habe, sollten
> die Fusebits (meiner Meinung nach) richtig gesetzt sein.

Ja, stimmt, ich hätte zwar noch SUT auf 11 gesetzt, aber daran wird es 
wohl nicht liegen.

Wenn Dein Mega8 wirklich diese Fusebit-Einstellung hat, dann darf er bei 
entferntem Quarz nicht laufen. Daher solltest Du mal prüfen, ob Dein PC 
Dich nicht narrt, also ob Du nicht irgeneinem anderen Irrtum am PC 
aufgesessen bist.

> In BASCOM
> schaffe ich es übrigends nicht eine verbindung zu meinem Controller her
> zu stellen.

Ich auch nicht, aber ich arbeite sowiso meist im AVR-Studio.

>
> Grüße

MfG, Consulter

Autor: Janosch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfache Hinweise für Anfänger (Schüler)

http://home.arcor.de/wosm/AtmegaProjekt/index.htm

... auch zum Programmieren mit BASCOM

Autor: Thurys (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kluchscheißender Consulter schrieb:
> Daher solltest Du mal prüfen, ob Dein PC
> Dich nicht narrt, also ob Du nicht irgeneinem anderen Irrtum am PC
> aufgesessen bist.

Hm gut und wie sollte ich das am besten herausfinden? Also auf welche 
Art und Weise finde ich das heraus?


Liebe Grüße

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Miß mal an den Anschlüssen 2 und 6 des MAX232 gegen Masse (15) die
Spannungen. Es müssen dort ca. + bzw. - 9,5 Volt erzeugt werden.

MfG Paul

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst von einem ausgehen:

Wenn dein µC ohne Quarz arbeitet, dann ist er nicht auf Quarzbetrieb 
umgestellt.

Solange du also den Quarz rausziehen kannst und dein µC arbeitet weiter 
als wäre nichts gewesen, dann ist der Quarz 100% nicht aktiv.

Autor: Thurys (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da stellt sich mir die Frage, wie ich diesen Quarz nun aktiv bekomme....
Habe es jetzt mit einem weiteren Mega8 probiert -> gleicher Fehler.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thurys schrieb:
> Da stellt sich mir die Frage, wie ich diesen Quarz nun aktiv bekomme....
> Habe es jetzt mit einem weiteren Mega8 probiert -> gleicher Fehler.


Dein Brennprogramm malträtieren.
µC auslesen
Fuses ändern
in µC reinschreiben

zur Kontrolle: µC aus der Fassung nehmen
Brennprogramm muss beim Ausleseversuch einen Fehler melden

µC wieder rein.
Fuses erneut auslesen. Stimmen die noch?

Nachdem du das Programm (über BASCOM) gebrannt hast: Fuses nochmal 
auslesen, nicht das der BASCOM Brenner sich an den Fuses vergreift, weil 
irgendwo in den Konfigurationsoptionen ein Häkchen eingeschaltet ist.

Du musst da ein wenig spielen und probieren.
Aber Fakt ist: Bei richtiger Einstellung läuft der µC nicht ohne Quarz.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seriell verbinden  ohne Quarz,
ärgert den Bediener schwarz!

(alte mongolische Volksweisheit)

;-)
MfG Paul

Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab bei mir paar Sachen im Einsatz die laufen auf den internen 
4Mhz vom Mega8, und da funzt der Uart wunderbar.

Ich glaub eher die Terminaleinstellungen sind falsch.

Autor: r-u (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke auch, daß Du den internen Oszillator auf 4MHz eingestellt 
hast, sondt würde der Chip ohne Quarz nicht laufen. Du kannst auch 
versuchen, etwas zu mogeln: Crystal=4100000 oder 3900000 probieren (bzw. 
an passende Werte 'rantasten) und die Fuses so lassen. Allerdings ist 
Deine Lösung dann chip- und temperaturabhängig.. :-)

Autor: kruemeltee (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
intern 1Mhz ist voreingestellt und wirds wahrscheinlich auch noch sein, 
klick im Ponyprog Fusebits Dialog auch mal auf Read, wenn du das noch 
nicht getan hast ;)

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.