Hi, ich habe zur Zeit nen Prob. mit dem UART von meinem Board. Es werden keine korrekten Signale geschickt bzw. nicht richtig Empfangen. Habe das Standart Terminal Programm von Win Xp genutzt. Wenn ich Dezimal 255 schicke kommen 8 high bits an, aber sobald ich was anderes schicke kommen diese nicht richtig an. BSP.: TX am Board: X=88 X=01011000 RX am PC: 248 11111000 Habe zu Erst vermutet das es an der Baudrate liegt, ABER habe dann den Codewizzard CVAVR benutzt und da wird es wie bei mir Init.. Es ist ein Atmega8 16PU mit einem 4mhz Quarz verbaut(Übungsboard von der Schule). Vielleicht findet einer von euch den Fehler. Habe den Überflüssigen Code rausgelassen(Display Init, EXT_Int). #include <mega8.h> #include <delay.h> #include <stdlib.h> void transmitUART(unsigned char send); void uartInit(unsigned int baud); void main (void) { uartInit(25); #asm("sei"); do { transmitUART('X'); PORTC.2=!PORTC.2; delay_ms(100); } while(1); } void uartInit(unsigned int baud) { UCSRB=0x18; //0b00011000; UCSRC=0xA6; //0b10100110; UCSRC&=0xEF; //0b01111111; UBRRH=(baud>>8); UBRRL=baud & 0xFF; //0b11111111 UCSRC|=0x80; } void transmitUART(unsigned char send) { while(!UCSRA & (1<<5)); UDR=send; while(!UCSRA & (1<<6)); }
Sorry konnte Schaltplan nicht nachträglich einfügen. Deswegen hier nochmal der Schaltplan im Anhang
Sebastian R. schrieb: > Wenn ich Dezimal 255 schicke kommen 8 high bits an, aber sobald ich was > anderes schicke kommen diese nicht richtig an. Das sieht nach falscher Geschwindigkeit aus. Steht der Controller auf "externer Quarz"? Oder läuft er mit dem internen Oszillator? mfg.
Wo stelle ich das denn ein? Bin mich gerade am durchlesen. Darauf war ich auch schon am rum Rätseln. Habe schon auf paar Seiten gelesen das man einen Externen verwenden soll. Kannst du mir eventuell sagen, wo ich das Einstellen muss? Sind das die Fuse Bits??? Hab im Datenblatt was drüber gefunden. CKSEL1-3 müssen 1 CKSEL0 muss 0 SUT1-0 müssen 00 habe ich da recht? Muss ich irgend Etwas bei den Fuse Bits beachten?
Sebastian R. schrieb: > Es ist ein Atmega8 16PU mit einem 4mhz Quarz verbaut(Übungsboard von der > Schule). Wie willst Du denn bei 4 milliHertz eine vernünftige Baudrate einstellen?
Habe mich jetzt mal eingearbeitet. Standart mässig steht der Codevision Compiler schon richtig. Aber trotzdem geht das nicht mit der Übertragung. Hat jemand noch nen Tipp woran es liegen kann?
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.