Fuse Bits und F_CPU

Gast #1093286
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
Gast #1093411
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren