AVR: Debug-Ausgabe fehlt

#4896676
Lesenswert?

Hallo zusammen,

ich versuche, einen m168 unter Ubuntu zu programmieren mit Eclipse, was 
auch soweit funktioniert.

Allerdings bekomme ich keine serielle Ausgabe über UART hin.

Der Code wird fehler- und warnungsfrei übersetzt, ich habe einen MAX3232 
an /dev/ttyS0. Wenn ich RX und TX verbinde (loopback) dann kann ich vom 
PC z.B. eine Datei senden und sehe die LEDs auf dem MAX-Adapter blinken.

Die LED an PB0 leuchtet auch, daher vermute ich mal, dass der m168 bis 
zu der Stelle kommt, allerdings hätte ich auch an /dev/ttyS0 eine 
Ausgabe erwartet.

Der m168 läuft auf internen 8 Mhz und ist mit 10kR VCC an Reset sowie 
einem 100nF Kerko zwischen VCC und GND direkt an den Pins beschaltet.
Weiterhin hängt noch ein OLED an I2C was ich programmieren möchte, aber 
das ist dann die nächste Geschichte.

Was habe ich übersehen oder falsch gemacht?

Hier der Code:
1
int main(void)
2
{
3
    _delay_ms(500);
4
    DDRB |= (1 << PB0);  //LED an PB0
5

6
    uart_init(9600);
7
    sei();
8

9
    uart_puts("**** Start ****\n");
10
    PORTB |= (1 << PB0);
11

12
    i2c_init();
13
    uart_puts("Nach i2c_init \n");
14
[...]
15
}
#4897000
Lesenswert?

An welcher Stelle und auf welchen Wert ist F_CPU gesetzt?

Die internen 8Mhz aus dem RC-Oszillator können zu ungenau sein.
Musst du ggf über OSCCAL-Register abgleichen. Dazu brauchst du aber 
wieder eine bekannte, externe Referenz. Einfacher wirds mit einem 
externen Quarz als taktgeber. Da sind die nominell 8MHz auch ziemlich 
genau 8 MHz. Was beim internen RC-Oszillator nun mal nicht der Fall ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren