mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Board von Pollin


Autor: xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab mir das evolution board von pollin geholt, soweit bin ich damit
auch ganz zufrieden. nur ich bekomme es einfach nicht hin eine uart mit
einem terminal prog zu realisieren.

hat es von euch schon mal jemand versucht

gruß

xeus

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Baudratenquarz benutzt?

...

Autor: xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie darf ich das verstehen 'Baudratenquarz benutzen'?

gruß xeus

Autor: Niko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sollst nicht unbedingt eine gerade Anzahl an MegaHerz haben.
z.b: 16 Mhz, 8Mhz ...

Schau mal in das Datenblatt zu deinem AVR, da sollten die Frequenzen
aufgelistet sein.

Autor: xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei dem board ist ein ext. quarz von 8 mhz dabei, mit dem müsste es doch
eigentlich funzen. hat keiner ne idee von euch

Autor: Werner A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du liest die Antworten aber schon durch, bevor Du erneut fragst...

Autor: xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, aber wie ist das gemint mit dem quarz, wenn da 8 mhz drauf sind
müsste es doch eigentlich auch mit 8 mhz  funktionieren. habs auc schon
mit dem int. 1mhz versucht, klappt leider auch nicht

Autor: Gerd Laschinski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo xeus,

ok, Du hast einen 8 MHz-Quarz auf dem Board. Welche Baudrate
hast Du denn eingestellt. Und mit welcher Programmiersprache
programmierst Du?

Gruß
Gerd

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Quarzfrequenz sollte nach dem Teilen möglichst genau die Frequenz
egeben, die Du am PC eingestellt hat, also ohne Fehlerrate, also müßte
Deine Quarz schon ein wenig krummhertzig sein, z.B. 7,3728 MHz.

Autor: xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich programmiere mit avr bascom, hab schon mit 4800, 9600 versucht, aber
mit keier klappt es. das komische ist, dass er nicht mal bitfolgen
sendet. normalerweise, müsste er doch auch bei falscher baudrate
bitfolgen senden, oder?

gruß

xeus

Autor: Gerd Laschinski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo xeus,

schau' mal im Bascom unter Options->Compiler->Communication nach. Da
muß neben der gewünschten Baudrate auch die Taktfrequenz (8MHz)
eingetragen werden. Basom rechnet Dir dann den Fehler aus. Bei 8 Mhz
kannst Du Übertragungsraten bis 38400 Baud nehmen, der Fehler liegt bei
0,16 %.

Wichtig ist auch, daß Du in den Fuse-Bits die richtige Taktquelle
wählst. Nur weil Du außen 8 MHz stecken hast, muß der Controller nicht
auf 8 Mhz laufen. Vielleicht läuft er auf internen 1 MHz.

Gruß
Gerd

Autor: xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist mir schon klar, komisch ist nur, das mein m8 der mit 1mhz läuft
auch mit 4800 läuft. warum klappt das selbe nicht mit einem m16?

Autor: Gerd Laschinski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der interne RC-Oszillator ist halt nicht so genau. Ich glaube mich
dunkel an bis zu 10 Prozent Fehler zu erinnern. Kann mich aber auch
täuschen.

Gruß
Gerd

Autor: xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, aber müsste ich nicht selbst mit einer fehlerhaften einstellung
einen bitschrott bekommen. wenn ich z.b mit dem m8 eine falsche
baudrate einstell erhalte ich bitmüll.

gruß xeus

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja, leider hat sich im Schaltplan ein kleiner Fehler eingeschlichen. Tx
und Rx Leitung am UART wurden vertausch, so das der RS232 Pegelwandler
blockiert. Das bedeutet Pin 10 und 12 müssen am Pegelwandler vertauscht
werden. Dann läufts.

Achtung: Ohne gesetzte CLOCK Bits läuft der ATmega nur mit 1MHz. Wer
kennt die richtige Einstellung für 8Mhz?

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Datenblatt!

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

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich benutze yaap und habe folgende Konfiguration mit einem
externen Quarz.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer will denn 8MHz für USART nutzen?
Nehmt einen Baudratenquarz! Dann funktioniert RS232 auch ohne Fehler.

...

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also hannes,
laut atmel datenblätter kann der Atmega16 einen externen Quarz bis zu
16 Mhz vertragen und daraus die Standard UART Datenraten erzeugen. Der
Punkt ist aber, dass der UART TX Ausgang auf den RX Ausgang des
Pegelwandlers gelegt ist.
Das hier ist aber die richtige Konfiguration:
Atmel     =>    Pegelwandler          =>   RS232
TX(out)   =>    Tx(in)        Tx(out) =>     Tx
RX(in)    <=    Rx(out)       Rx(in)  <=     Rx

Leider wurde dies zumindest auf meiner Platine vertauscht und sah so
aus:
Atmel     =>    Pegelwandler           =>   RS232
Tx(out)   =>    Rx(out)        Tx(out) =>     Tx
Rx(in)    <=    Tx(in)       Rx(in)    <=     Rx

Und da leider nichts funktioniert, wenn Ausgang mit Ausgang und Eingang
mit Eingang verbunden ist, dann hilft auch kein Baudratenquarz.

P.S. Nach dem Vertauschen der Tx und Rx Leitung zwischen Pegelwandler
und Atmega16 lief alles perfekt.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das Board nicht, kenne daher die Schaltung auch nicht.

Ich wollte nur darauf hinweisen, dass man keine "glatten" Quarze
(glatte Zahlen wie 4MHz, 8MHz...) für den AVR nimmt, wenn man die
serielle Schnittstelle nutzen möchte. Dazu gibt es sogenannte
"Baudratenquarze" mit (scheinbar) krummen Frequenzen.

Schau dir mal die Baudratentabellen im Datenblatt genauer an, dann
weißt du was ich meine. Nur mit diesen Baudratenquarzen werden auch
längere Telegramme sicher übertragen.

Mit 3,6864MHz, 7,3728MHz oder 14,7456 hast du bedeutend weniger Fehler
als mit 4,0MHz, 8.0MHz oder 16,0MHz.

Gruß...
...HanneS...

Autor: tf1973 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@leif: Was verwendest du für ein Kabel zum Verbinden, ein 1:1 oder
Nullmodemkabel?

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bin mir jetzt selber nicht so sicher. Muß aber erst zu Hause
nachschauen.
Der Fehler liegt aber darin, dass das Tx signal am Pegelwandler
invertiert werden muss. Leider liegt dieses Signal auf einen Inverter
Ausgang und da der Atmega16 auf dieser Leitung sendet, kann nichts
durch den Pegelwandler durchgehen.
Hier hat man den Fehler schon erkannt:

http://www.roboternetz.de/phpBB2/viewtopic.php?t=1...

leider tauscht man die Leitungen direkt am Controller und hat dadurch
etwas mehr Aufwand.

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@hannes,

guter tipp. Ich habe das Board erst 2 Tage und wollte die RS232
Schnittstelle nur zum Debuggen benutzen, da ich bisher noch kein JTag
besitze. Werd dann demnächst mal nen krummen Quarz auflöten.

Autor: Hartmut Gröger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Am 8MHz Qurz liegt es bestimmt nicht. Wie Gerd ausgerechnet hat liegt
der Baudratenfehler bei 8MHz und 38400 Baud bei 0,16%. Atmel lässt für
die Verbindung von 2 AVRs Toleranzen von 2,5 bis 1% (in Abhängigkeit
von der Bitzahl) zu. Bisher hatte ich bei der Verbindung
AVR(4MHz Quarz, 4/8 MHz interner RC-Oszillator nie Probleme. Einziger
'Störfall' war bisher ein PIC.
Die 'Baudratenquarze' sind nur notwendig, wenn zwischen Baudrate und
Quarzfrequenz ein bestimmtes Verhältnis unterschritten wird.

MfG HG

Autor: xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich be auch den fehler mit rx und tx ausgebessert, zudem hab ich auch
gleich die kondensator-quarz kombination gegen einen rc-oszilator
getauscht. und zack schon läuft mein m16 mit gigantischen 20mhz und
eine baudrate von 19200 ist auch kein problem mehr

gruß

xeus

ps: ich finde es eine unverfrohrenheit von pollin, auf ihrer homepage
nichteinmal auf den fehler hinzuweisen

Autor: Netbandit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oi ein RC Oszilator auf 20MHz, das hört sich aber nicht alzu
Frequenzstabiel an :)
Naja solange es läuft....

Autor: xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann halt 19,998mhz

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub das mit den Baudratenquarzen ist nicht so ganz verstanden
worden:

Die Baudfrequenz wird von der SystemClock gespeist.
Bsp.

UART-Clock 115200 Baud
System Clock 8000000 Hz (8Mhz)

Der Teiler, der nun gebraucht wird um die Systemclock (8Mhz) auf die
Baudfrequenz herunter zu teilen berechnet sich wie folgt:

UBRRVAL = CLOCK/(BAUD*16)-1

So.:
UBRRVAL = 8000000/(115200*16)-1
UBRRVAL = 3,34 ...

würde man jetzt einfach abrunden (Wie es zB ein Compiler machen würde,
wenn er das UBRRVAL ausrechnet) dann hätte man 3.

Lädt man aber UBRR mit dem Wert 3, so Stellt sich eine Baudrate von
125000 Baud ein.. Und das stimmt nicht mehr mit der Gegenseite überein.
Folglich stimmen die Timings nich mehr -> Mist.

Blöd nur, dass das UBRRVAL Register diesen Wert nicht annimmt, da es
nur Werte von 0-255 (bei Megas und Tinys usw.. bis 65535 (UBRRH,
UBRRL)) ohne Kommastellen annehmen kann.

Und nu? Ganz einfach: BaudratenQuarz:

UART-Clock 115200 Baud
System Clock 14745600 Hz (14,7456Mhz)

UBRRVAL = 14745600/(115200*16)-1
UBRRVAL = 7,00 !

Diese Zahl kann geladen werden und die BaudClock läuft mit genau 115200
Baud


PS: Eine Baudrate mit (zu) hohem Fehler heißt nicht, dass wenigstens
noch irgendein Datenmüll ankommen MUSS! Es kann sein, dass das
Stopframe bedingt durch die Hohe Fehlerrate nicht mehr erkannt wird.
Dann wird das komplette UART-Datenpaket einfach weggeworfen -> Ergo:
Nix kommt an.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Simon:

Danke für deine Erklärung. Hoffentlich nutzt es etwas.

Denn seit Jahren ist es Cool, den Prozessor des PC zu übertakten, das
Letzte aus den Rechnern rauszuholen, egal ob dadurch Fehler auftreten
oder nicht.

Und da steckt man so in dieser Tuning-Manie, dass man sich nicht
vorstellen kann, dass es Vorteile haben kann, den Controller mit etwas
weniger als der maximalen Taktrate laufen zu lassen.

Dafür wird dann aber gerne ein Programmierstil angewendet, bei dem der
Controller von einer Delay-Schleife in die andere stolpert und nicht in
der Lage ist, mehrere Arbeiten (pseudo-) gleichzeitig zu erledigen...

...

Autor: knut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

kann man mit dem Board auch 8051er Verwenden/Programmieren?

Grüße

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zitat aus der Beschreibung bei Pollin:

"Diese Platine zum Anschluss an den PC ermöglicht die direkte 
Programmierung der ATmega8535, ATmega16, ATmega32, ATmega8, ATtiny2313, 
ATtiny12 und ATtiny15."

Kenne mich mit den 8051 nicht aus, gehe aber davon aus, dass deren 
Programmierung anders funktioniert, auch wenn Atmel sowohl die AVR als 
auch 8051-kompatible herstellt...

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.