Hi, Ich versuche gerade verzweifelt mit meinem Atmega168 etwas zu empfangen. Hatte damals mein MyAVR Board mit einem Atmega8 und da ich mich vor kurzem aus meinem Atmega8 ausgesperrt habe durch falsche FuseBits hab ich mir den 168er gekauft. Das versenden vom µc an den PC funktioniert ohne Probleme... Hier mal der Code: <code> #define F_CPU 3686400 #define USART_BAUD_RATE 9600 #define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16L)-1) #include <avr/io.h> #include <avr/interrupt.h> void sendUart(char* cmd) { do { while (!(UCSR0A & (1<<UDRE0))) {} // Warten bis man senden kann UDR0 = *cmd++; // senden und zum nächsten zeichen wechseln } while(*cmd); // so lange bis das ende erreicht ist } unsigned char USART_Receive( void ) { /* Wait for data to be received */ while ( !(UCSR0A & (1<<RXC0)) ) ; /* Get and return received data from buffer */ return UDR0; } void USART_Init( unsigned int baud ) { /* Set baud rate */ UBRR0H = (unsigned char)(baud>>8); UBRR0L = (unsigned char)baud; /* Enable receiver and transmitter */ UCSR0B = (1<<RXEN0)|(1<<TXEN0) | (1<<RXCIE0); /* Set frame format: 8data, 2stop bit */ UCSR0C = (1<<USBS0)|(3<<UCSZ00); } ISR(USART_RX_vect) { PORTC = 0xFF; } int main(void) { USART_Init(USART_BAUD_SELECT); sei(); DDRC = 0xFF; sendUart("Programm gestartet\n"); PORTC = 0x00; //USART_Receive(); //PORTC = 0xFF; for(;;){} } </code> USART_Init() und USART_Receive() hab ich aus dem Datenblatt übernommen. Die Baudrate und das initialisieren müsste korrekt sein, da das Senden ja funktioniert. Nur egal ob ich die USART_Recieve(); verwende, oder die Interrupt-methode, es passiert beidesmal nichts!! Das Kabel hab ich auch schon durchgemessen, das müsste funktionieren. Ich verstehe das nicht. Mit dem Atmega8 hat damals der Empfang auch funktioniert ( ist aber schon 1 1/2 Jahre her) Der Code müsste doch richtig sein oder nicht? Was mache ich falsch?
Hardware-Probleme ausgeschlossen? D.h., die RXD-Leitung liegt auf 5V und das Multimeter "zuckt", wenn Daten vom PC ankommen?
> Das versenden vom µc an den PC funktioniert ohne Probleme... Am PC eventuell noch das Handshaking aktiv? > Hatte damals mein MyAVR Board mit einem Atmega8 und da ich mich > vor kurzem aus meinem Atmega8 ausgesperrt habe durch falsche > FuseBits hab ich mir den 168er gekauft. Du weist wie du den Mega8 wieder öffnen kannst?
Oliver Döring wrote: > Hardware-Probleme ausgeschlossen? > > D.h., die RXD-Leitung liegt auf 5V und das Multimeter "zuckt", wenn > Daten vom PC ankommen? Also die RXD und TXD Leitungen sind am µc gemessen beide auf 5v (PD0 und PD1) Wenn etwas ankommt müsste, zuckt aber nichts. Es bleibt ganz ruhig auf der gleichen Spannung. Karl heinz Buchegger wrote: >> Das versenden vom µc an den PC funktioniert ohne Probleme... > > Am PC eventuell noch das Handshaking aktiv? Keine Ahnung... ich benutze KontrollerLab und da war das einzigste was ich eingegeben hab die Baud rate und das Device ansonsten nichts. Später hab ichs mal mit echo "test" > /dev/ttyS0 nach dem ich mit setserial /dev/ttyS0 uart 16550A den comport für uart eingestellt habe. > Du weist wie du den Mega8 wieder öffnen kannst? So viel ich weis hab ich den µc wohl auf externe Clocksource eingestellt. Also müsste ich halt irgendwie nen Takt erzeugen eventuell mit nem anderen µc. Oder gibts noch was besseres?
Ich habe gerade festgestellt, dass mit dem myAvr Controlcenter (hab das myAvr board) die UART Kommunikation in beide Richtungen funktioniert!! Und sogar mit hyperterm funktioniert es plötzlich. Ich hatte einfach vergessen Flusssteuerung auf keine einzustellen. mit echo "test" > /dev/ttyS0 gehts jetzt auch. Jetzt würde mich nur noch sehr interessieren wieso es nicht mit Kontrollerlab funktioniert.
Hi! Ich bin einer der Entwickler von KontrollerLab. Es geht deshalb nicht, weil wir beim KontrollerLab standardmäßig (und ohne groß darüber nachzudenken, aber so entstehen ja die meisten Bugs :-) ) die Flußkontrolle per RTS/CTS eingeschaltet hatten. Das ist mittlerweile gefixt, man kann das jetzt einstellen wie man will (RTS/CTS, XON/XOFF oder keine Flusskontrolle). Das ist dann in der 0.7.1er Version drin, die in ca. 3 Tagen erscheinen wird. Für eilige: Man kann sich das ganze natürlich auch aus den Sourcen selber bauen und das ganze aus dem SVN repository ziehen. Bitte seid nicht irritiert, dass da bereits die Toolbar für den Debugger drin ist, die aber noch nicht funktioniert. Ignoriert sie einfach :-) Das kommt dann alles noch in einem guten Monat oder so. viele Grüße, Martin
Das freut mich! wird es auch gleich ein (K)ubuntu-deb geben? Gruß Manuel
Sorry, war länger nicht mehr hier. Nur der Vollständigkeit halber: Ja, den gibts. Das hast Du aber wahrscheinlich längst bemerkt ;-) Viele Grüße, Martin
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.