-
-
uart mit at90s2313
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
-
Erfahrener Benutzer
Robotik Einstein
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 !?
-
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
-
Erfahrener Benutzer
Robotik Einstein
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 !
-
ja da hab ichs auch mal reingepackt gehabt, aber das war genau die gleiche angabe... dann hättes doch auch funzen müssen oder?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen