Und jetzt gibt er mir bei den Fuses ne Fehlermeldung raus:
A problem occured when executing the command. SPIEN hat ein rotes Fragezeichen!? Kann also nicht mehr Programme aufspielen !? Was is denn da los ?
#include <avr/io.h>
#ifndef F_CPU
#warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 4000000"
#define F_CPU 4000000 // Systemtakt in Hz - Definition als unsigned long beachten
#endif
#define BAUD 9600L // Baudrate, das L am Ende ist wichtig, NICHT UL verwenden!
// Berechnungen
#define UBRR_VAL ((F_CPU+BAUD*/(BAUD*16)-1) // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000) // Fehler in Promille
#if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))
#error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch!
#endif
int main(void)
{
UCSRB |= (1<<TXEN); // UART TX einschalten
UCSRC |= (1<<URSEL)|(3<<UCSZ0); // Asynchron 8N1
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
while( 1 ) {
while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
{
}
UDR = 'm';
}
}
also die genannten Einstellungen hab ich gemacht...und er sendet immernoch so ein zeugs da ...was anderes kann es nicht sein !?
Und jetzt gibt er mir bei den Fuses ne Fehlermeldung raus:
A problem occured when executing the command. SPIEN hat ein rotes Fragezeichen!? Kann also nicht mehr Programme aufspielen !? Was is denn da los ?
Dann bringst du keinen Takt auf XTAL1
SPIEN kann ich gar nicht abschalten.
Mit 3<<UCSZ0 hast du 2 Stopbit
#define UBRR_VAL (((F_CPU)/(BAUD*16))-1) // clever runden
UDR = 'A';
_delay_ms(5);
Das habe ich geändert und hinzugefügt, bei mir läuft es.
Dieses Problem hab ich mittlerweile behoben...aber er gibt mir immernoch falsche Buchstaben aus!? Weiss so langsam nicht mehr weiter...also programmierbar ist er wieder
MFG
Am Anfang des Programms gehört noch #include <util/delay.h>
mhhh wuerde es dir was ausmachen deinen Quellcode hier reinzustellen? Irgendwie läuft grad nix mehr so richtig bei mir
Vielen Dank fuer deine Muehe!!!
Das läuft bei mir einwandfrei.Code:#include <avr/io.h> #include <util/delay.h> #ifndef F_CPU #warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 4000000" #define F_CPU 3686400 // Systemtakt in Hz - Definition als unsigned long beachten #endif #define BAUD 9600UL // Baudrate, das L am Ende ist wichtig, NICHT UL verwenden! // Berechnungen #define UBRR_VAL (((F_CPU)/(BAUD*16))-1) // clever runden #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000) // Fehler in Promille //#if ((BAUD_ERROR>10) || (BAUD_ERROR<=10)) //#error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! //#endif int main(void) { UCSRB |= (1<<TXEN); // UART TX einschalten UCSRC |= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1); // Asynchron 8N1 UBRRH = UBRR_VAL >> 8; UBRRL = UBRR_VAL & 0xFF; while( 1 ) { while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */ { } UDR = 'A'; _delay_ms(5); } }
Ich verwende normalerweise die uart-Lib von Fleury, da braucht man sich um nichts kümmern.
Hey,
vielen Dank fuer deinen Code...werd ihn am Montag direkt ausprobieren !!!
wünsch dir ein schönes Wochenende!
MFG
Lesezeichen