PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : uart mit at90s2313



Ford
05.08.2006, 17:26
ich habe ein problem mit meinem c testsourcecode

#include <avr/io.h>
#include <util/delay.h>
#ifndef F_CPU
#define F_CPU 10000000
#endif
#define UART_BAUD_RATE 9600

int main(void)
{
UCR |= (1<<TXEN);
UBRR =((F_CPU/(UART_BAUD_RATE*16l))-1);


while (1){
while(!(USR & (1 << UDRE)));
UDR ='x';
}
}

ich habe den at90 mit einem max232 an die serielle schnittstelle meines pcs angeschlossen, doch da kommt kein zeichen an. sieht irgendjemand den fehler?
hardwarefehler kann nicht sein...

mfg Ford

linux_80
05.08.2006, 21:44
Hallo,
da bei diesem AVR nicht soviele Einstellungsmöglichkeiten beim UART vorhanden sind, kanns fast nur an der Baudrate liegen, denke ich mal.

Also läuft der AVR mit 10MHz ?
Wurde F_CPU evtl. schon woanders gesetzt mit einem anderen Wert als 10MHz, zB. im makefile !?

Evtl. mal probieren und den Wert bei UBRR direkt angeben, um sicher zu gehen, das der richtig rechnet !?
Oder das ifndef F_CPU da rausnehmen !?

Ford
05.08.2006, 21:55
ok jetzt läufts!!!
ich hab das #ifndef F_CPU rausgenommen und jetzt tuts... da verhäddert sich warscheinlich avr-gcc.

danke trozdem für die schnelle hilfe linux_80!

mfg Ford

linux_80
05.08.2006, 22:24
Der verhäddert sich nicht, der macht genau das was da stand.

Weisst Du warum es jetzt geht ?
Schau mal ins Makefile, ob da auch irgendwo F_CPU vorkommt !

Ford
06.08.2006, 18:58
ja da hab ichs auch mal reingepackt gehabt, aber das war genau die gleiche angabe... dann hättes doch auch funzen müssen oder?