#define BAUD 2400
#define MYUBRR F_CPU/BAUD/16-1
#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
/* Inicjuje port szeregowy AVRa */
void USART_init(unsigned int myubrr)
{
/* Ustala prędkość transmisji */
UBRRH = (unsigned char)(myubrr>>8);
UBRRL = (unsigned char)myubrr;
/* Włącza nadajnika */
UCSRB = (1<<TXEN);
/* Format ramki: 8 bitów danych, 1 bit stopu, brak bitu parzystości */
UCSRC = (1<<URSEL)|(3<<UCSZ0);
}
/* Wysyła znak do portu szeregowego */
static int USART_Transmit(char c, FILE *stream)
{
while(!(UCSRA & (1<<UDRE)));
UDR = c;
return 0;
}
/* Tworzy strumienia danych o nazwie 'mystdout' połączony
z funkcją 'USART_Transmit' */
static FILE mystdout = FDEV_SETUP_STREAM(USART_Transmit, NULL, _FDEV_SETUP_WRITE);
/* GŁÓWNA FUNKCJA */
int main(void)
{
/* Inicjalizuje port szeregowy AVRa */
USART_init(MYUBRR);
/* Przekierowuje standardowe wyjście do 'mystdout' */
stdout = &mystdout;
/* Główna pętla */
while(1)
{
printf("Temperatura powietrza: /n") ;
}
}
A wynik kompilacji to:
Compiling C: main.c
avr-gcc -c -mmcu=attiny2313 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o
main.c: In function 'USART_init':
main.c:33: error: 'URSEL' undeclared (first use in this function)
main.c:33: error: (Each undeclared identifier is reported only once
main.c:33: error: for each function it appears in.)Czy aktualizacja winAVR pomoże??