Hallo Folks, hoffe ihr könnt mir helfen da ich alles schon versucht habe. Also das Problem : Als AVR nutze ich einen ATMEGA64L bei 3.3V davor hängt ein FTDI232RL (I/O auch auf 3.3V) dran. Beide sind über UART verbunden, der FTDI232RL funzt einwandfrei. Das habe ich über HTERM getestet (also senden und empfangen verbunden). Als Anzeige ob der AVR läuft habe ich am Ausgang PA7 eine LED (lowCurr) dran. Diese funtzt auch so lange ich nicht auf die Idee komme meinen UART0 einzustellen. Soll bedeuten sobald ich im AVR nur zu der LED noch den UART0 einstellen will läuft auch die LED nicht. hier das Prog: (UART rausgeflagt damit LED läuft) void uart_init(void) { //modus //UCSR0B |= (1<<RXEN0)|(1<<TXEN0); // enable receiver and transmitter //UCSR0C &= ~(1<<USBS0); // 1 stop bit //UCSR0C |= (1<<UCSZ01)|(1<<UCSZ00); // 8Bit Data //UCSR0C &= ~(1<<UPM01)|(1<<UPM00); // Parity Disabled DDRE |= (1<<DDE0)|(1<<DDE1); //TX/RX Pins als output //baudrate 2400 @8Mhz unsigned int ubbr = 207; UBRR1H = (ubbr>>8); UBRR1L = ubbr; } void uart_putc(int data) { while (!(UCSR0A & (1<<UDRE0))); /* warten bis Senden moeglich */ UDR0 = data; /* sende Zeichen */ } int uart_getc(void) { // wait for data to be received while(!(UCSR0A & (1<<RXC0))); // get and return received data from buffer return UDR0; } main(void) { char funktion; DDRA |= (1<<DDA7); //PA7 als Ausgang uart_init(); while(1) { PORTA |= (1<<PA7); uart_putc(121); } } Hoffe jemand hat da eine Idee ich bin am ende:(
Naja wenn du in der uart_init alles auskommentierst, dann wird der UART ja auch nicht richtig initialisiert :D Achja, das "UCSR0B |= (1<<RXEN0)|(1<<TXEN0);" sollte als letztes passieren. > DDRE |= (1<<DDE0)|(1<<DDE1); //TX/RX Pins als output Der UART setzt die Ports automatisch, nichtsdestotrotz wäre RX auf jeden fall ein Input und kein Output. > while(1) > { > PORTA |= (1<<PA7); > uart_putc(121); > } Ich weiß ja nicht wie deine LED gepolt ist, aber wenn die Kathode schaltest, wäre sie in diesem Fall immer aus, da du den Port nie wieder auf "0" setzt.
Also habe noch weiter rumprobiert und wenn ich alle Routinen in die main packe klappt alles wie Butter. Nur warum nicht wenn ich seperate Routinen nehme. @Timmo meine LED ist Hige aktive also sollte sie immer leuchten was sie ja auch tut solange ich keinen Uart nutze bzw. ich alles in der main stehen habe.
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.