Forum: Mikrocontroller und Digitale Elektronik UART spinnt total


von Wolfgang Raider (Gast)


Lesenswert?

Hi Freunde!

habe mir seit längerem einen atmega8515 gekauft.

das problem ist, ich hab mich entschlossen, nun die grafiken über die
rs232 zum avr zu senden. jetzt hab ich probiet dieses
uart-geschwindigkeitsregister einzustellen.
allerdings streikt dieses uart-berechnungsprogramm immer wieder da es
sagt, das 35mhz eine unzulässige frequenz ist.

aber der avr funktioniert ja einwandfrei, und ohne fehler. weil bilder
am fernseher kann er ja hochauflösend anzeigen.

gibt es eine andere möglichkeit das mit dem uart. weil die formel geht
auch nicht, weil mir da immer so kleine zahlen rauskommen.

von Peter D. (peda)


Lesenswert?

"allerdings streikt dieses uart-berechnungsprogramm"

Wozu braucht man denn sowas ?


Schon mal dran gedacht, den Compiler den Baudratenteiler selber
berechnen zu lassen ?

Einfach die Formel hinschreiben und per #define die Baudrate und die
Quarzfrequenz eintragen.

Wenn die Abweichung zur nächsten Ganzzahl aber zu hoch ist (>2%), dann
gehts eben nicht und Du mußt ein Baudratenquarz nehmen, z.B.
14,7456MHz).


Daß ein 16MHz AVR bei 35MHz noch funktioniert, ist falsch.
Du hast eben nur noch keine Fehlfunktion bemerkt.
Bestimmt wird das aber bei einer so extremen Übertaktung bald der Fall
sein. Ist alles nur eine Frage, welche Befehle an welcher Adresse
stehen und welche Temperatur und Betriebsspannung herrschen.


Soweit ich gehört habe, ist z.B. der Tabellenlesebefehl (LPM) etwas
kritisch. Fülle mal den kompletten Flash mit Zufallszahlen und mache
per LPM eine CRC darüber. Da dürften mit Sicherheit unterschiedliche
Werte bei 35MHz und bei 8MHz rauskommen, wenn das Programm überhaupt
durchläuft.


Peter

von Wolfgang Raider (Gast)


Lesenswert?

Hmm... leider bin ich noch totaler AVR-Frischling.

Ich erklär dir mal meine Situation:
Ich hab mir vor ein paar Monaten bei eBay ein billiges Testboard
gekauft. Und der Verkäufer hat mir gesagt, dass der bis 50MHz geht.
Allerdings hatte er so einen Frequenzbaustein nicht mehr, und jetzt hat
er mir einen 35MHz baustein raufgetan. und auf dem board ist auch
wirklich so ein kleines alu-teil wo 35.000 draufsteht. und ein
atmega8515 is auch drauf, und halt noch ein zwei andere chips (max282
und beim anderen steht nix drauf).

Weiteres war auch eine CD dabei mit dem WinAVR Programm und einige
Testprogramme drauf.
Und da is halt ein Programm für den AVR draufgewesen, dass Video-PAL
Signale erzeugt, und ein schaltplan war auch dabei (nur widerstände).

und dann hab ich das kompiliert und raufkopiert. und wie ich das
aufgebaut hab, und mit dem fernseher verbunden hab, sind dann lauter
kleine striche am fernseher gewesen, aber recht scharf halt.
jetzt möcht ich halt nicht nur so striche sehen, sondern richtige
bilder halt gg.

von Hagen (Gast)


Lesenswert?

Sorry, aber entweder hatte der Verkäufer selber keine Ahnung oder er hat
dich über den Nuckel gezogen.

Der ATMega8515 kann laut datenblatt nur bis 16MHz betrieben werden.
Zu erstmal ist es immer wichtig die Datenblätter lesen zu können, man
kommt darum nicht rum und somit schnapp dir dein Englishwörterbuch und
kämpfe dich durch. Mit ein bischen Übung kann auch ein Anfänger
ziemlich schnell Erfolge erzielen.

Nun im Datenblatt schaust du dir die Seite 142ff an. Das Register was
du nun einstellen willst ist das UBRRL und UBRRH, diese beiden 8 Bit
Register bilden ein gemeinsammes 16 Bit Register und stellen das
Baudrate Register dar. Auf Seite 167 findest du dann auch eine Tabelle
mit verschiedenen Baudraten, was du in UBRR einstellen musst und für
welche Taktfreqeunz diese gilt. Mit ein bischen Mathematik, nämlich mit
Verhältnisgleichungen aus der 5. Klasse, wirst du dann auch schnell
sogar selber die Formel finden. Auf diesem Wege lernste es richtig.
Denoch auf Seite 145 findest du dann nochmal diese Formeln.

Ich glaube das dir diese Infos als Einstieg ausreichen werden.

Gruß Hagen

von Hagen (Gast)


Lesenswert?

Sorry, jetzt will ich dir helfen und leite dich in die falsche Richtung.
Obiges Positing bezog sich auf den 8535 und nicht dem 8515.
Nungut, auch der ATmega8515 geht nur bis 16Mhz.
Auf Seite 133ff findest du im datenblatt den USART.
Auf Seite 136 die Formel zur Baudraten Berechnung, versuche es manuell
per Taschenrechner nachzuvollziehen und nicht per extra Program, sonst
lernt man es niemals richtig.
Auf Seite 157 dann die Registerbeschreibung.

Wenn du mal die beiden Datenblätter vergleichst so wirst du starke
Ähnlichkeiten erkennen, es lohnt sich also sich einmalig richtig in die
Datenblätter reinzukien, beim nächsten Kontroller fällts dir dann
leichter.

Gruß Hagen

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
Noch kein Account? Hier anmelden.