PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerprobleme von Umsteiger Basic >> C



Spurius
22.03.2005, 16:38
Hallo,
ich habe mich jetzt länger mit diversen Tutorials und dem Datenblatt des ATMega8 beschäftigt, und will ein Zeichen über USART an den PC senden, leider geht der Code nicht:


#include <avr/io.h>

void init_usart(void)
{
UCSRB |= (1<<RXEN) | (1<<TXEN);

UBRRL |= 0b01100111;
UCSRC |= (1<<URSEL);
UCSRC |= (1<<UCSZ1) | (1<<UCSZ0);

}

void main(void)
{
unsigned int i;
i = 0;
init_usart;
DDRB = 0xFF;
PORTB = 0b00000001; //Nur zur Kontrolle
do
{
while (!(UCSRA & (1<<UDRE))) {}
UDR = 'C';
} while (i != 0);
}

Einstellungen am Hyperterminal:
Parität: Keine
Baudrate: 9600
Stopbits: 1

Es kommt einfach nichts im Hyperterminal an, die Hardware geht, da Bascom-Basic Programme funktioneren.

Ich hoffe ihr könnt mir helfen
Gruß
Spurius

Dino Dieter
22.03.2005, 18:13
Hallo

Dein Code sieht soweit gut aus. Das einzige, was ich finden kann ist das hier.


UCSRC |= (1<<URSEL);
UCSRC |= (1<<UCSZ1) | (1<<UCSZ0);

Sollte so sein



UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);

Oder besser so. Man kann ja nie wissen.


UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);



UCSRC teilt sich mit UBRRH das Register. Siehe dazu auch Datenblatt Seite 150

MFG
Dieter

Spurius
22.03.2005, 18:22
Ok, geht, vielen Dank!