auch die hilfsvariable funzt nicht.
Der DIP schalter hängt an Port C. auf on steht hier PINC0 und PINC2
ergibt somit 5. diese 5 Lese ich auch wunderbar per UART aus.
z.B. direkt im uart init:
void myuart_init(void) {
UBRRH = UBRR_VAL[5] >> 8;
UBRRL = UBRR_VAL[5] & 0xFF;
// Enable receiver and transmitter; enable RX interrupt
UCSRB = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1
myuart_putc(DIP_SW);
<- gibt schön die 5 aus
}
Verwende ich aber:
UBRRH = UBRR_VAL[DIP_SW] >> 8;
UBRRL = UBRR_VAL[DIP_SW] & 0xFF;
oder das Beispiel von lippy wird da eine
240 drauß (0x11110000)
vermutlich weil er da irgendwas falsches einstellt
Was mich hier wundert:
Die Veränderung von UBRRHx wirkt sich doch sofort aus. Also ist die
"empfangene" 255 nicht sicher. Es kann auch ein falsch eingestellter
Empfänger sein. Ich würde mir das mal mit dem Oszi ansehen.
Matthias Lipinsky schrieb:> Die Veränderung von UBRRHx wirkt sich doch sofort aus.
Nö, das sind doch nur zwei Hilfsvariablen, nicht die UARRT-Register.
Und falls meine Frage oben (Definition von UBRR_VAL sieht wirklich exakt
so aus) mit Ja zu beantworten ist, dann zeige mal die Kommandozeile für
die HEX-File-Erzeugung. Denn dann dürfe dort die .data-Section fehlen.
also ein progmem ist nicht im spiel, irgendwie bin ich bisle ratlos.
Ich werd morgen nochmal schaun ob man das irgendwie debuggen kann.
verwendet wird hier:
avrdude-5.10
avr-libc-1.7.1
gcc-4.6.1
Stefan Ernst schrieb:> Matthias Lipinsky schrieb:>> Die Veränderung von UBRRHx wirkt sich doch sofort aus.>> Nö, das sind doch nur zwei Hilfsvariablen, nicht die UARRT-Register.
Woran erkennst Du das?
Simon schrieb:> also ein progmem ist nicht im spiel, irgendwie bin ich bisle ratlos.
Das sind alle anderen auch, wenn du nur stückweise Infos lieferst.
Wie soll da jemand helfen?
Ist es so schwer, ein vollständiges Programm, einen Schaltplan und
wenigstens den verwendeten PRozessor zu verraten?
Man hat ja auch noch anderes vor im Leben als nur herumzuraten.