WinAVR vägrar kompilera USART-exempelkod

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Malm
Inlägg: 215
Blev medlem: 22 februari 2004, 12:55:06
Ort: Borås

WinAVR vägrar kompilera USART-exempelkod

Inlägg av Malm »

Hej!

Blir snart galen på att exempelkoden från databladet inte kompileras av avr-gcc. Koden det hela gäller:

Kod: Markera allt

#include <stdint.h>
#include <avr/io.h>

#define FOSC 8000000 // Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1

void USART_Transmit(unsigned char data);
void USART_Init(unsigned int ubrr);

int main(void) {

	USART_Init(MYUBRR);
	
	while(1) {

		USART_Transmit('a');

	}

	return 0;

}

void USART_Transmit(unsigned char data) {

	// Wait for empty transmit buffer
	while ( !( UCSRnA & (1<<UDREn)) )
	;
	// Put data into buffer, sends the data
	UDRn = data;
	
}

void USART_Init(unsigned int ubrr) {

	//Set baud rate
	UBRR0H = (unsigned char)(ubrr>>8);
	UBRR0L = (unsigned char)ubrr;
	// Enable receiver and transmitter
	UCSR0B = (1<<RXEN0)|(1<<TXEN0);
	// Set frame format: 8data, 2stop bit
	UCSR0C = (1<<USBS0)|(3<<UCSZ00);

}
Jag får följande fel vid kompilering:

main.c: In function 'USART_Transmit':
main.c:58: error: 'UCSRnA' undeclared (first use in this function)
main.c:58: error: (Each undeclared identifier is reported only once
main.c:58: error: for each function it appears in.)
main.c:58: error: 'UDREn' undeclared (first use in this function)
main.c:61: error: 'UDRn' undeclared (first use in this function)

Jag har definitivt valt rätt processor i Makefilen. Vad kan vara fel?

Tack på förhand!
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Hehe, n är ett nummer på vilken UART du använder, tex 0.
UCSRnA --> UCSR0A
Malm
Inlägg: 215
Blev medlem: 22 februari 2004, 12:55:06
Ort: Borås

Inlägg av Malm »

Haha, det där var ju faktiskt rätt lustigt :)

Nu kompilerar den som jag vill. Tackar :)
Skriv svar