Hallo zusammen, ich muss bis morgen ein kleines Programm schreiben, welches Daten von der seriellen Schnittstelle auswertet und diese in das EEPROM schreibt. Nun habe ich keine Erfahrung mit UART, aber ICH MUSS es hinbekommen... Deswegen bitte ich Euch, über den folgenden Code mal drüberzuschauen, habe lt. Datenblatt alle notwendigen Bits gesetzt hoffe ich. Desweiteren verstehe ich nicht, an welche Stelle ich denn jetzt die Subroutine hinschreiben soll und wie darauf verwiesen wird, die ausgeführt werden soll, wenn Daten im Lesepuffer bereitsliegen. Und die letzte Frage vorerst: wie schreibt man denn Daten in das EEPROM? Wenn z.B. eine Bedingung vorliegt, mit welchem Befehl schreibt man denn von der ersten Adresse des EEPROMS BITWEISE (z.B.LSB) eine "1" rein? Also sowas wie EEPROM_0x0001 = (1 << 1); Wenn einer Hilfe braucht, dann jetzt ;o) Danke schon mal im voraus Grüße PS: Controller: mega64 mit AVR-GCC popi
Sorry ;o) hier der nächste Versuch: <pre> #include <avr/io.h> #include <avr/interrupt.h> /* USART initialisieren */ void uart_init(void); int main(void) { /* USART initialisieren */ uart_init(); sei(); /* Nichts tun. Die Interrupts erledigten den Rest */ while (1) ; } void uart_init(void) { UBRR1L = 0x51; /* Baudrate einstellen ( Normaler Modus ) */ UCSR1A = (1 << RXC1); //RX Interrupt erlauben UCSR1B = (1 << RXCIE1) | (1 << RXEN1) | (1 << TXEN1); /* Aktivieren des Empfängers, des Senders und des "Daten empfangen"-Interrupts */ UCSR1C = (1 << UCSZ10) | (1 << UCSZ11); //8 Datenbits, 1 Stoppbit, keine Parität } SIGNAL(SIG_UART_RECV) /* Interrupt wird ausgelöst sobald neue Daten im USART-Empfangspuffer liegen */ { unsigned char buffer; /* Daten aus dem Puffer lesen ... */ buffer = UDR1; /* ... warten bis der Sendepuffer leer ist ... */ while ( !( UCSR1A & (1<<RXC1)) ) ; /* ... hier in Speicher schreiben */ } <//pre> Stammt von einer Internetseite und habe ihn auf die Register des MEga64 angepasst, so hoffe ich zumindnst ;o) Laut Datenblatt müsste es so stimmen. Grüße popi
das stimmt, aber Montag früh fertigstellen bei der Antwortgeschwindigkeit und der Anzahl der nutzbaren Antworten??? nun ja... das wird dann wohl knapp...
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.