Forum: Mikrocontroller und Digitale Elektronik atmega8 uart, frequenz


von gregor (Gast)


Lesenswert?

Hi,
ich arbeite mit einem Atmega8 und will empafangene Daten von meinem 
Laser an uart senden.

Soweit ist alles ok daten kann ich per uart an die Hterm senden und 
empfangen sobald meine Frequenz = 4Mhz.

Und auch kann mein Mikrokontroller auch Daten vom Laser richtig 
empfangen, leider mit einem Frequenz von 16 Mhz.

Jetzt wollte ich die 16 MHz für den Ganzen Programm einstellen. Und 
bekomme nur wirre Zeichen.

ich habe die Baud Berechnung vom tutorial AVR. wie unten genohmen:
1
#ifndef F_CPU
2
/* This "Prevention" can lead to Debugger, if AVRStudio use a another, not the hardware fitting Clock rate: 
3
   Then the    following definition doesn't use, but instead the default value (1 MHz?) of AVRStudio - hence 
4
   the Output of a warning if F_CPU yet does not define:*/ 
5
#warning "F_CPU was not defined yet, now make up with 16000000"
6
#define F_CPU 16000000L   // Systemtakt in Hz 
7
#endif
8
9
10
#define BAUD 9600L
11
#define UBRR_VAL ((F_CPU+BAUD * 8)/(BAUD*16)-1)     //clever round
12
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))         //real baud rate
13
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000)     //Error per thousand
14
15
16
#if ((BAUD_ERROR>10)||(BAUD_ERROR<-10))
17
#error Systematic error in the baud rate more than 1% and thus too high!
18
#endif
19
...


Wie kann ich für die Daten transfert auch die frequent : 16 Mhz 
benutzen?

ich danke euch für die Antworten.

MFG
Gregor

von Karl H. (kbuchegg)


Lesenswert?

gregor schrieb:

Deine Beschreibung ist ein wenig wirr.

> Soweit ist alles ok daten kann ich per uart an die Hterm senden und
> empfangen sobald meine Frequenz = 4Mhz.

Du meinst die CPU Frequenz?
Wie wird die eingestellt? Quarz?

> Und auch kann mein Mikrokontroller auch Daten vom Laser richtig
> empfangen, leider mit einem Frequenz von 16 Mhz.

Selbe Frage.

> Jetzt wollte ich die 16 MHz für den Ganzen Programm einstellen. Und
> bekomme nur wirre Zeichen.

Dann wird wohl irgendwo in der Baudratenberechnung und oder der 
Einstellung der CPU-Taktfrequenz ein Bock sitzen.

von gregor (Gast)


Lesenswert?

>Du meinst die CPU Frequenz?
>Wie wird die eingestellt? Quarz?

CPU Frequenz: 16 Mhz
Quarz: 4Mhz

danke
gruß

von Stefan B. (stefan) Benutzerseite


Lesenswert?

gregor schrieb:

> CPU Frequenz: 16 Mhz
> Quarz: 4Mhz


Geht nicht. CPU Frequenz kann Quarz-Frequenz sein oder - bei 
entsprechend gesetzter Fuse - Quarz-Frequenz/8.

von Michael M. (mikmik)


Lesenswert?

gregor schrieb:
> CPU Frequenz: 16 Mhz
> Quarz: 4Mhz

???
Hast Du deinen Controller mit internen 16Mhz laufen und zusäzlich einen 
4Mhz Quarz angehängt? In diesem Fall ist der Quarz natürlich nutzlos. 
Und nur so am Rande: auch wenn ich es persönlich noch nicht erlebt hab, 
hier im Forum wird die Meinung vertreten, dass UART mit internem 
Taktegeber eines MC nicht funktioniert weil zu ungenau.

von gregor (Gast)


Lesenswert?

danke an alle
klappt
mit einer externer Quarz von 16 Mhz
gruß

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.