Dieses Progrämmchen empfängt auf der seriellen Schnittstelle einzelne Bytes und schickt sie gleich wieder zurück (sendet ein 'x'). tiny2313 @ 4MHz, max232 an serieller schnittstelle pin 2&3 9600 baud, 8 bit, keine parity, 1 stopbit. Bei 4MHz 0,2% Fehler, siehe Datenblatt Falls es nicht funktioniert: Fuses prüfen (läuft er wirklich so schnell wie gedacht?) Hardware prüfen Sonst: # AVR Checkliste # AVR-GCC-Tutorial Viel Erfolg. #include <avr/io.h> #include <stdint.h> // Ceramic Resonator #ifndef F_CPU #define F_CPU 4000000 // 4MHz #endif // UART #define UART_BAUD_RATE 9600 #define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_CPU)/((UART_BAUD_RATE)*16L)-1) int main(void) { // USART UBRRH =(uint8_t) (UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8); UBRRL =(uint8_t) UART_BAUD_CALC(UART_BAUD_RATE,F_CPU); UCSRB = (1<<RXEN) | (1<<TXEN); // enable receiver and transmitter UCSRC = (3<<UCSZ0); // 8 bit (default: asynchronous, no parity, 1 stop-bit) // VARIABLES uint8_t get; // PROGRAM // wait for empty transmit buffer while (!(UCSRA & (1<<UDRE))); /* put data into buffer, sends the data*/ UDR = 'x'; while(1) // forever { // wait for data to be recieved while (!(UCSRA & (1<<RXC))); // get received data from buffer get = UDR; // wait for empty transmit buffer while (!(UCSRA & (1<<UDRE))); // put data into buffer, sends the data UDR = get; } }
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.