Das ist schon richtig, das musst du aktivieren. zuerst die Fuses lesen, dann nur das für den Quarz ändern und wieder schreiben, dann kann nichts schief gehen.
Druckbare Version
Das ist schon richtig, das musst du aktivieren. zuerst die Fuses lesen, dann nur das für den Quarz ändern und wieder schreiben, dann kann nichts schief gehen.
Alles klar hat funktioniert er läuft jetzt über den externen Quarz!!
Habs natürlich gleich wieder getestet das mit dem senden aber es kommt immer noch nichts!!
Nur wenn ich die beiden Leitungen von TX und RX verbinde kommen diesmal nicht mehr so komische Zeichen sonderen irgendwelche buchstaben und Zahlen weiß auch nicht was das bedeutet!!
MFG
Thomas
UBRR hast du aber laut Datenblatt eingestellt. Kontrolliere noch mal alles, das es mit den Terminaleinstellungen überein stimmt.
Ja hab UBRRH auf 0 gestellt und UBRRL auf 51 gestellt!!!
Hab ja jetzt die 8MHz Tabelle benutzt und auf eine Baudrate von 9600
gestellt!!
Auch das Gerät selbs also die COM Schnittstelle hab ich auf 9600 gestellt und 1 Stoppbit!!
Im Terminal hab ich die glecihen einstellungen wie auf der COM Schnittstelle!!
UCSRB hab ich auf 0x18 gestellt für senden und empfangen!!
Und UCSRC hab ich auf 0x86 gestellt für 8 Datenbits!!
Hab ich noch irgendetwas vergessen??
MFG
Thomas
Ich denke mal nicht das du was vergessen hast. Es sollte so funktionieren.
Aber an was könnte es dann noch liegen??
Bin echt verzweifelt hab alles mögliche schon ausprobiert und es klappt trotzdem nicht!!
MFG
Thomas
Schick mir noch mal deinen aktuellen Code, dann probier ich es mit meinem Testboard.
Gut ist echt toll da du ihn mal testest für mich!!
Hir der aktuelle Code:
#include <avr/io.h>
#include <stdio.h>
#include <avr/delay.h>
int main (void)
{
UBRRH = 0;
UBRRL = 51;
UCSRC = 0x86;
UCSRB = 0x18;
while(1)
UDR = 's';
return 0;
}
MFG
Thomas
So läuft es bei mir, allerdings auf einem Mega16, das sollte aber egal sein.
Code:#include <avr/io.h>
#include <stdio.h>
//#include <avr/delay.h>
int main (void)
{
UBRRH = 0;
UBRRL = 51;
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(3<<UCSZ0);
//UCSRC = 0x86;
//UCSRB = 0x18;
for(;;){
while ( !( UCSRA & (1<<UDRE)) ) ;
UDR = 's';
}
}
Gut hab auch den Fehler gefunden jetzt läufts bei mir auch!!
Hab TX und RX mal umgedreht und schon läuts!!
MFG
Thomas