Hallo
Ich habe ein Problem mit der Initialisierung des USART bei meinem ATMega8.
Zu meiner Hardware:
Ich habe einen ATMega8 an dem ein PortExpander PC9555 angeschlossen ist, an diesem hängt eine 7-Segment Anzeige mit 6 Segmenten (diese werden vom PCA9555 angesteuert - ein 74LS138 für die Transistoren und ein 74HC5411für die Anzeigen).
Am ATMega8 sind auch 2 Potis an den ADC Eingängen angeschlossen, benutzt wird nur 1 Kanal.
Initialisiere ich den USART mit "UCSRB = (1 << RXEN)|(1 << TXEN)|(1 << RXCIE);" läuft der ATMega8 völlig problemlos, wenn ich NICHT den PortExpander und die 7-Segmentanzeige benutze - ich kann problemlos Daten zwischen PC - ATMega8 austauschen mit 38400 Baud. Der ATMega8 macht auch keine sporadischen Neustarts. Einlesen der ADC und Ausgabe am PC fkt problemlos.
Initialisiere ich den USART mit "UCSRB = (1 << RXEN)|(1 << TXEN)|(1 << RXCIE);" läuft der ATMega8 NICHT problemlos, wenn ich den PortExpander und die 7-Segmentanzeige benutze. Der ATMega8 macht sporadische Neustarts (der Watchdog ist nicht aktiv, sondern wurde auskommentiert) - erkennbar daran, dass die LED an PORTD PD5 sporadisch aufleuchtet, die LED an PORTD PD6 geht aus (wenn sie vorher aktiviert worden war.
Die Initialisierung des ATMega8 dauert sehr lange (mind. 20 sek), bis die Anzeige des Analogwertes (Poti an Kanal 0) erscheint.
Wenn ich aber beim USART "UCSRB = (1 << RXEN)|(1 << TXEN)|(1 << RXCIE);" auskommentiere und nur "UCSRB = (1 << RXEN)|(1 << TXEN);" habe, dann fkt der ATMega8 wie gewohnt - die Initialisierung erfolgt
sofort, es gibt keine Neustarts - auch wenn der PortExpander und die 7-Segmentanzeige aktiv sind; Datenaustausch PC - ATMega8 ist problemlos und korrekt.
Anbei mein Programm; es wäre schön wenn jemand wüßte, was da den ATMega8 so
"durcheinander" bringt; vor allem wüßte ich gerne, warum der ATMega8 einen
Neustart macht, wenn ich beim USART (1 << RXCIE) mache und der PortExpander "mitarbeitet"...
mfg
Hero_123
Ich habe ein Problem mit der Initialisierung des USART bei meinem ATMega8.
Zu meiner Hardware:
Ich habe einen ATMega8 an dem ein PortExpander PC9555 angeschlossen ist, an diesem hängt eine 7-Segment Anzeige mit 6 Segmenten (diese werden vom PCA9555 angesteuert - ein 74LS138 für die Transistoren und ein 74HC5411für die Anzeigen).
Am ATMega8 sind auch 2 Potis an den ADC Eingängen angeschlossen, benutzt wird nur 1 Kanal.
Initialisiere ich den USART mit "UCSRB = (1 << RXEN)|(1 << TXEN)|(1 << RXCIE);" läuft der ATMega8 völlig problemlos, wenn ich NICHT den PortExpander und die 7-Segmentanzeige benutze - ich kann problemlos Daten zwischen PC - ATMega8 austauschen mit 38400 Baud. Der ATMega8 macht auch keine sporadischen Neustarts. Einlesen der ADC und Ausgabe am PC fkt problemlos.
Initialisiere ich den USART mit "UCSRB = (1 << RXEN)|(1 << TXEN)|(1 << RXCIE);" läuft der ATMega8 NICHT problemlos, wenn ich den PortExpander und die 7-Segmentanzeige benutze. Der ATMega8 macht sporadische Neustarts (der Watchdog ist nicht aktiv, sondern wurde auskommentiert) - erkennbar daran, dass die LED an PORTD PD5 sporadisch aufleuchtet, die LED an PORTD PD6 geht aus (wenn sie vorher aktiviert worden war.
Die Initialisierung des ATMega8 dauert sehr lange (mind. 20 sek), bis die Anzeige des Analogwertes (Poti an Kanal 0) erscheint.
Wenn ich aber beim USART "UCSRB = (1 << RXEN)|(1 << TXEN)|(1 << RXCIE);" auskommentiere und nur "UCSRB = (1 << RXEN)|(1 << TXEN);" habe, dann fkt der ATMega8 wie gewohnt - die Initialisierung erfolgt
sofort, es gibt keine Neustarts - auch wenn der PortExpander und die 7-Segmentanzeige aktiv sind; Datenaustausch PC - ATMega8 ist problemlos und korrekt.
Anbei mein Programm; es wäre schön wenn jemand wüßte, was da den ATMega8 so
"durcheinander" bringt; vor allem wüßte ich gerne, warum der ATMega8 einen
Neustart macht, wenn ich beim USART (1 << RXCIE) mache und der PortExpander "mitarbeitet"...
mfg
Hero_123