Ich habe ein Problem mit dem USART auf einem Atmega164P. Wenn der ISP-Programmierer angeschlossen ist, funktioniert alles einwandfrei. Wenn ich den Programmierer trenne, bekomme ich nur eine verstümmelte Seriennummer und der Chip reagiert nicht auf Zeichen, die ich sende. Hier ist der Code
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)) )
;
/* Put data into buffer, sends the data */
UDR0 = data;
}
void sendString ( unsigned char str[16] )
{
int i=0;
for ( i = 0 ; i < len ( str ) ; i ++ )
{
USART_Transmit ( str [ i ] );
}
}
Verschiedene Funktionen rufen sendString auf und alle funktionieren gut, bis der Programmierer getrennt wird. Dann geht nichts.
Die Verbindung zum PC ist ein USB->TTL Serial Adapter.
Auf der elektrischen Seite habe ich nach gemeinsamen Masse- / Masseschleifen, unterschiedlichen Spannungen an den Programmierstiften und anderen Eingängen gesucht, die die Programmierstifte beeinflussen könnten. Außer dem Programmierer selbst ist nichts mit den Programmierstiften verbunden.
Wir haben auch versucht, den Programmierer an ein USB-Wandladegerät anzuschließen. Dadurch funktionierte der Chip wie erwartet, ebenso wie der Anschluss an einen Laptop, der nur mit Akku betrieben wurde.
Wir haben auch die RESET-Leitung mit und ohne Pullup-Widerstand an VCC angeschlossen, keiner dieser Tests hat zu erfolgreichen Ergebnissen geführt (noch eine verstümmelte Serie erhalten).
Das Problem wurde gelöst, indem ein 0,1-uF-Kondensator am Ausgang des 7805 hinzugefügt wurde. Dies hält die Leistung stabil und vermeidet die verstümmelte Seriennummer, die wir sahen
Ignacio Vazquez-Abrams
Austin
Großer Josch
scottinthebooth
scottinthebooth
JimmyB
scottinthebooth
Adam Lawrence