mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Problem (Atmega 32)


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich möchte zum testen meines Atmels einfach nur etwas am PC
ausgeben. Anstatt der gewünschten ausgabe wir aber immer nur ein Ç
ausgegeben. Kann jemand sagen was ich falsch mache? Die Einstellungen
am PC (Baudrate, Frameformat hab ich schon mehrmals überprüft).

Danke!

Autor: Niels (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Benutzt Du den internen RC Oszillator ?

Der ist wohl für serielle Datenkommunikation zu ungenau. Benutzt mal
nen Quarz.

Gruß Niels

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann auf den externen umschalten?

Autor: Niels (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Fuse Bits programmieren.....

Gruß Niels

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Benutzt Du den internen RC Oszillator ?

Der ist wohl für serielle Datenkommunikation zu ungenau. Benutzt mal
nen Quarz."

Nein, das ist so nicht richtig. Die serielle Schnittstelle ist ziemlich
tolerant, was Abweichungen angeht.
Check lieber mal die Verkabelung und die Einstellungen in der
Software.

Bei mir funktioniert das immer mit dem internen RC.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Bei mir funktioniert das immer mit dem internen RC."


Schön für Dich.

Aber eben kein Beweis, daß es bei jedem anderen auf der Welt auch geht
!


Peter

Autor: Michael Schlagmueller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also der Internet RC längt völlig
ich hätte auch drauf getippt dass der Grundtakt nicht stimmt von deinem
µController.
Oder du hast die Teiler falsch programmiert....

Haste ein Oszi greifbar ? Dann könntest du es nachschauen

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, sooo tolerant ist die Schnittstelle auch nicht, mehr als 1-2%
sollte da nichts abweichen. Wenn du ein Oszilloskop hast, messe einfach
mal die Bitdauer.

Gruß
Thorsten

P.S.: Bei mir ging bisher der intern Oszillator (8 MHz) auch immer bis
38400 Baud problemlos, die Bitdauerabweichung war aber auch immer <2%.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oszi hab ich leide keins.
 Aber Wie muss ich die Fuse Bits einstellen damit der Quarz richtig
genutzt wird? möchte einen 8 Mhz Quarz benutzen aber aus dem Datenblatt
werde ich nicht so richtig schlau?!

Danke!

Autor: Niels (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Also ich habe mit dem internen RC Ozillator auch Probleme gehabt. Und
ich meine sogar ich hatte auch diese komischen Cs.

Umschalten auf externen Osc hat geholfen.

Mag sein das damals die Baudrate/eingestellte Clock nicht gut gewählt
war. Aber ich habe auch schon gelesen, dass extern die bessere Wahl
ist.
(Vgl. Temperatur-/Langzeitstabilität)

Gruß Niels

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UART-Kommunikation mit RC ist Murks, auch wenn es da und dort
funktioniert. Solange das Teilchen auf dem temperierten Schreibtisch
bei gleichbleibenden 22° liegt, mag das gut gehen - in der harten
Wirklichkeit nicht. Verstehe nicht, warum man nicht den
20Cent-Resonator spendieren soll.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Möchte ja gern den externen benutzen, weiss aber leider nicht wie ich
das anstellen soll. Ich glaub das geht über die Fuse Bits ( ja ich bin
Anfänger ) oder? Hab das schon versucht und jetzt erkennt Ponyprog den
Atmega gar nicht mehr. Kann mir jemand sagen wie ich die F-Bits richtig
setzen muss damit das beim zweiten Atmega nicht auch passiert?
Danke

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht umsonst gibt es ja das OSCCAL Register, mit dem man den internen
Oscillator kalibrieren kann. Auf der Amtel Seite gibt es dazu eine
Application Note dazu.

meine testroutine schreibe ich mit Winavr

#define test  <hier den Wert einsetzen>
DDRA = 0xff;
OSCCAL = test;

while(1)
{
PORTA ~= PORTA;
}
dafür brauch er genau 10 Takte also Frequenz an den Ports messen
multiplizieren mit 10 und dann hat man die Frequenz des internen
Oscillators. Bei zu starken abweichungen die Variable,Konstante,
#define Makro oder was auch immer verändern, neu programmieren
Frequenz messen vergleichen, und nach spätestens 10 durchläufen
hat man die gewünschte Frequenz. Damit habe ich bisher jede RS232 zum
laufen gebracht. Den Quartz kann man sich schenken, wenn man nicht
gerade den Atmega mit über 8Mhz betreiben will.

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.