Guten Tag zusammen, beginne gerade die ersten Schritte mit einem STK500 mit ATMEGA8 und versuche eine Serielle Kommunikation zwischen STK500 und einen PC, via USB->RS232 Schnittstelle zu bewerkstelligen. Problem: Am PC werden seltsamme Zeichen dargestellt und mir gehen langsam die Ideen aus ! Das Programm kommt aus dem AVRBUCH.de, heißt "SERIELLMINIMAL" Der Text "AVRBUCH.DE - RS232 [OK]..." sollte vom PC empfangen werden. Das wird angezeigt Anhang AVR_Terminal. Was bisher probiert wurde: 1. beide USB-> RS232 Adapter geprüft mit Looptest PIN 2 +PIN 3 gebrückt ;Zeichen werden korrekt gesendet und empfangen (Dargestellt mit AVR_TERM und alternativ HTERM) 2.Verbindungskabel RxD auf PD0 von PORTD, TxD auf PD1 von PORTD 3. Lauflicht in das STK500 Programmiert (Funktioniert) 4. Benutze XP SP2,AVR Studio 4.15 Build 623, ATMEGA8 5. STK RS 232 Ctrl bei mir auf COM8 (im Gerätemanager sichtbar), STK RS 232 SPARE bei mir auf COM9 (im Gerätemanager sichtbar) Vielen Dank für die Hilfe :-) /* Serielle Kommunikation Minimale Ausführung ATMEGA8/16/32 und kompatibel STK500 mit dem STK500 Oszillator (3.68 MHz) Baudrate: 9600 (8N1) Roman Mittermayr AVRBUCH.DE */ #include <avr/io.h> #define TAKT 3680000 #define UART_BAUDRATE 9600 // Berechnung der Konfigurationsparameter #define UART_SETTING ((TAKT/16L/UART_BAUDRATE)-1) void setup_uart() { /* Baudrate einstellen */ UBRRH = (char) (UART_SETTING >> 8); UBRRL = (char) (UART_SETTING); /* Empfänger und Sender einschalten */ UCSRB = (1<<RXEN) | (1<<TXEN); /* Asynchron, 8N1 */ UCSRC = (1<<URSEL) | (3<<UCSZ0); } void uart_putchar(char c) { // Warten bis Buffer bereit ... while (!(UCSRA & (1 << UDRE))) ; // Senden... UDR = c; } void uart_putstring(char *str) { unsigned char i; for (i=0;i<255;i++) /* Maximal 255 Zeichen ausgeben ... */ { if (str[i] != 0) uart_putchar(str[i]); else break; // Ende des Strings erreicht } } int main(void) { /* RS232 einschalten ... */ setup_uart(); /* Willkommensnachricht senden ... */ uart_putstring("AVRBUCH.DE - RS232 [OK]...\r\n\r\n"); while (1) { } return 0; }
Läuft dein Controller wirklich mit "#define TAKT 3680000", also 3,68MHz?
Wo kann ich das sehen ? Ist das die Einstellung unter FUSES -> SUT_CKSEL? Da steht bei mir: Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms; default value Das dichteste wäre etwas mit 4MHZ
>Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms; >default value Dein Controller ist noch jungfreulich/nackich... Du mußt ihn auf die externe Clock per Fuses programmieren.CKSEL = 0000? Die Start-up-Time sollte im Moment egal sein.
Glaube mit den FUSES war ich falsch, unter HW Settings stehen die 3.686 MHz
>Glaube mit den FUSES war ich falsch, unter HW Settings stehen die 3.686 >MHz Nee, die Fuses kümmern sich um die Konfiguration des Controllers (in deinem Fall hat er noch die Werkseinstellungen mit dem internen 1MHz RC-Oszillator), und die HW-Settings um die Einstellungen des STK500. Hier im Forum schwirrt irgendwo auch das STK500-Handbuch in Deutsch herum...
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.