Ich dreh noch durch!
Erstmal herzlichen Dank an wkrug für den Tipp. Du hast Recht, auch wenn das Register und die Bits beim Tiny2313 anders benannt sind. Jedoch habe ich nun einen mir absolut unerklärlichen Effekt vorliegen.
Meine Schleife sah anfangs so aus (alles überflüssige wie USART_init(), LED-Spielchen etc. habe ich weggekürzt):
Code:
for(;;) {
//
if( UCSRA & (1<<RXC) ) { //bei einer Eingabe wird diese direkt zurück ans Terminal geschickt
USART_transmit(UDR);
}
}
Dabei wurde einfach jedes empfangene Zeichen zurück ans Terminal (bei mir HTerm) geschickt. Das hat perfekt funktioniert! Dann wollte ich mal die EEPROM-Funktionen testen und hab das ganze folgendermaßen erweitert:
Code:
unsigned char cTest[2];
//
//EECR &= ~( (1<<EEPM1)|(1<<EEPM0) ); //(1)
//
EEPROM_write(0,'A');
EEPROM_write(1,'B');
EEPROM_write(2,'C');
myWait(2000);
cTest[0] = EEPROM_read(0);
cTest[1] = EEPROM_read(1);
cTest[2] = EEPROM_read(2);
myWait(2000);
USART_transmit(cTest[0]);
USART_transmit(cTest[1]);
USART_transmit(cTest[2]);
for(;;) {
//
if( UCSRA & (1<<RXC) ) { //bei einer Eingabe wird diese direkt zurück ans Terminal geschickt
USART_transmit(UDR);
USART_transmit(cTest[0]);
USART_transmit(cTest[1]);
USART_transmit(cTest[2]);
}
}
Dann empfing ich, wie gesagt, nur Schrott über die EEPROM-Funktionen. Zumindest dachte ich, dass es daran liegt. Als ich dann aber gesehen habe, dass USART_transmit(UDR) auch nur noch Blödsinn schickt, habe ich die Funktion durch Auskommentieren wieder in den Ursprungszustand versetzt.
Das Ergebnis ist erschütternd: Jetzt liefert mir USART_transmit(UDR) dauerhaft seltsame Werte (jedenfalls nicht die zuvor eingegebenen!). Z.B. kommt 5 mal hintereinander 0xff (255), dann z.B. 0xc0 (192). Dabei kommt es scheinbar nicht darauf an, welche Zeichen ich sende.
Den 2313 habe ich auch mal ausgetauscht, daran kann es nicht liegen. Hat jemand dafür eine Erklärung?
Zu (1): Ich kenne mich noch nicht so gut mit bitweisen Operationen aus. Ist dieser Ausdruck richtig, wenn ich die Bits EEPM1 und EEPM0 löschen will? Dann hätte ich zumindest schonmal die Lösung für mein ursprüngliches Problem, dank des Tipps von wkrug.
Schonmal vielen Dank für jede nützliche oder unnütze Antwort!
Gruß Matze
Lesezeichen