hallo, beeinflusst die isp-frequenz die baudrateneinstellungen?muss ich da außer den "1/4 ..." beachten? hier mein code für den ATMega32 und ATMega8515: #include <avr/io.h> #include <util/delay.h> #ifndef F_CPU /* In neueren Version der WinAVR/Mfile Makefile-Vorlage kann F_CPU im Makefile definiert werden, eine nochmalige Definition hier wuerde zu einer Compilerwarnung fuehren. Daher "Schutz" durch #ifndef/#endif Dieser "Schutz" kann zu Debugsessions führen, wenn AVRStudio verwendet wird und dort eine andere, nicht zur Hardware passende Taktrate eingestellt ist: Dann wird die folgende Definition nicht verwendet, sondern stattdessen der Defaultwert (8 MHz?) von AVRStudio - daher Ausgabe einer Warnung falls F_CPU noch nicht definiert: */ #warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 16000000" #define F_CPU 16000000L // Systemtakt in Hz, das L am Ende ist wichtig, NICHT UL verwenden! #endif void sendUart(unsigned char c) { while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */ { } UDR = c; } int main(void) { UCSRB |= (1<<TXEN); // UART TX einschalten UCSRC |= (1<<URSEL)|(3<<UCSZ0); // Asynchron 8N1 UBRRH = 0; UBRRL = 11; while(1) { sendUart('@'); _delay_us(10); } return 0; } mit hilfe eines logicanalyzers habe ich herausgefunden, dass man mit "UBRRL = 11;" in etwa die baudrate hinbekommt. laut datenblatt soll dort aber eine 51 eingetragen werden...kann mir jemand weiterhelfen??? thx...
SPI und UART haben nichts miteinander zu tun. 16MHz und UBRR 51 sind 19k2.
> beeinflusst die isp-frequenz die baudrateneinstellungen? Wovon? Vom ISP? Ja. Von irgendwas, das später mal läuft? Nein. > muss ich da außer den "1/4 ..." beachten? Wie meinen? > #include <avr/io.h> > #include <util/delay.h> > ... > #define F_CPU 16000000L // Systemtakt in Hz, das L am Ende ist F_CPU muß vor den includes definiert sein. > mit hilfe eines logicanalyzers habe ich herausgefunden, dass man mit > "UBRRL = 11;" in etwa die baudrate hinbekommt. laut datenblatt soll > dort aber eine 51 eingetragen werden...kann mir jemand weiterhelfen??? Also willst du 19200 Bit/s. Offensichtlich läuft dein AVR nicht mit 16 Mhz Takt. Ein Wert von 11 würde eher zu einem Takt von ca. 4 Mhz passen. Vermutlich sind die Fuses falsch eingestellt. Dein Delay dürfte nicht viel bringen, da die Übertragung eines Bytes sowieso länger als 10 Mikrosekunden dauert. PS: Deine Shift-Taste scheint nicht richtig zu tun.
habe das STK500 board. die fuse-bits sind im anhang. habe einen 16mhz quartz auf dem board und will nicht den internen osc. benutzen, da der ja nicht so zuverlässig schwingt...
Der interne Oszillator arbeitet schon zuverlässig, aber es kann sein, dass die erzeugte Frequenz nicht genau genug ist um mit der UART arbeiten zu können.
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.