Forum: Mikrocontroller und Digitale Elektronik Fuse Bits und F_CPU


von Sebastian (Gast)


Lesenswert?

Hallo Leute,

ich hänge gerade fest.

Versuche gerade Daten über die Serielle Schnittstelle zu senden.

Doch leider stimmt die Baudrate nicht.

Verwende das STK 500 mit Atmega8515


habe folgende Einstellungen vorgenommen:
1
 #define F_CPU 3686000UL 
2
3
USART_Init(2400);

in der Usart.c :
1
void USART_Init( unsigned int baud )
2
{
3
/* Set baud rate */
4
baud= ((F_CPU+baud*8)/(baud*16)-1);
5
6
UBRRH = (unsigned char)(baud>>8);
7
UBRRL = (unsigned char)baud;
8
9
/* Enable receiver and transmitter */
10
UCSRB = (1<<RXEN)|(1<<TXEN) | (1<<RXCIE);
11
12
/* Set frame format: 8data, 2stop bit */
13
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
14
15
}

Im Makefiel folgende Fuse Bits
1
MCU = atmega8515
2
3
#Fuse settings for ATmega8515
4
ifeq ($(MCU), atmega8515)
5
  FUSE_BITS = -u -U lfuse:w:0x1e:m -U hfuse:w:0xd9:m
6
  HEX_FILE_NAME = MEGA8515
7
endif

Vielen Dank für eure Hilfe

Gruß Sebastian

von Rolf Magnus (Gast)


Lesenswert?

> baud= ((F_CPU+baud*8)/(baud*16)-1);

Wie kommst du auf diese Formel? Das Datenblatt nennt eine andere.

von Sebastian (Gast)


Lesenswert?

Es funktioniert!

Keine Ahnung, hatte ich irgendwo mal kopiert und bisher immer verwendet.

Warum es dieses mal nicht funktioniert hat verstehe ich leider nicht.

Benutze jetzt die Formel: baud= (F_CPU / (baud * 16L) - 1);

F_CPU 3686000UL

und FuseBits habe ich auf
FUSE_BITS = -u -U lfuse:w:0xff:m -U hfuse:w:0xd9:m
abgeändert.

Danke Gruß Sebastian

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.