Hi vohopri,
danke schön.
Schaltplan ist recht einfach, auf der Nibobee sind bereits Stiftleisten mit diversen Ports des ATMega16 verbunden. Unter anderem ist dort am Connector X5 RXD und TXD der UART des Chips ausgeführt. Die hab ich über Widerstände an ein BTM-222 angeschlossen (Weil verschiedene Pegel BTM222 3,3V und Nibobee 5V). Mit einem 3,3V Stabi-IC wird das Modul versorgt. Status LEDs kann man am Modul anschließen, muss man aber nicht.
Die Software dazu:
Code:void writeChar(uint8_t data ) { while ( !( UCSR0A & (1<<UDRE0)) ); UDR0 = data; } void writeString(char *string) { while(*string) writeChar(*string++); } /*void uart_init(void) ATMEGA16 { UCSRB |= (1<<TXEN); // UART TX einschalten UCSRB |= (1<<RXEN); // UART RX einschalten UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1 UBRRH = UBRR_VAL >> 8; UBRRL = UBRR_VAL & 0xFF; }*/ void uart_init(void) //ATMEGA1284 { UCSR0B |= (1<<TXEN0); // UART TX einschalten UCSR0B |= (1<<RXEN0); // UART RX einschalten UCSR0C |= (1<<USBS0)|(3<<UCSZ00); // Asynchron 8N1 UBRR0H = UBRR_VAL >> 8; UBRR0L = UBRR_VAL & 0xFF; } uint8_t uart_getc_nb(void) //non blocking { if (!(UCSR0A & (1<<RXC0))) { return 0; } else { return UDR0; } // Zeichen aus UDR an Aufrufer zurueckgeben } uint8_t uart_getc(void) { while (!(UCSR0A & (1<<RXC0))) // warten bis Zeichen verfuegbar ; return UDR0; // Zeichen aus UDR an Aufrufer zurueckgeben } void uart_gets( char* Buffer, uint8_t MaxLen ) { uint8_t NextChar; uint8_t StringLen = 0; NextChar = uart_getc(); // Warte auf und empfange das nächste Zeichen // Sammle solange Zeichen, bis: // * entweder das String Ende Zeichen kam // * oder das aufnehmende Array voll ist while( NextChar != '\n' && StringLen < MaxLen - 1 ) { *Buffer++ = NextChar; StringLen++; NextChar = uart_getc(); } // Noch ein '\0' anhängen um einen Standard // C-String daraus zu machen *Buffer = '\0'; }
Es gibt Anleitungen im Netz dazu aber so ganz haben die dann doch nicht funktioniert. Deswegen hab ich dann die Grundfunktionen einfach nach dem Datenblatt nach implementiert.






Zitieren

Lesezeichen