UART und STK500....interne Takt????

Gast #93225
Lesenswert?
• ▲
▼
Hallo an Alle!

Ich versuche das 1.Mal die UART zu verwenden und komme nicht so recht
weiter, obwohl ich schon sämtliche Beiträge dazu gelesen habe. Also
bitte nicht sauer sein, wenn es für Euch alter Kaffee sein sollte.

Ich möchte Daten am PC empfangen und benutze folgendes Programm:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>


#define F_CPU            8000000      /* 8Mhz */
#define UART_BAUD_RATE      9600      /* 9600 baud */


#define BAUD (F_CPU/(UART_BAUD_RATE*16l)-1)

void USART_INIT( unsigned int baud)
{
  UBRRH = (0x00);

  UBRRL = (unsigned int) baud;

  UCSRB = (1<<RXEN) | (1<<TXEN);

  UCSRC = (1<<URSEL) | (1<<USBS) | (3<<UCSZ0);
}

void USART_Transmit(unsigned char data)
{
  while ( !(UCSRA & (1<<UDRE)))
  ;

  UDR = data;
}

void main(void)
{
  USART_INIT(BAUD);

  for(;;)
  {
    USART_Transmit('H');
    USART_Transmit('a');
    USART_Transmit('l');
    USART_Transmit('l');
    USART_Transmit('o');
    USART_Transmit(0x0A);
    USART_Transmit(0x0D);
  }

}

Leider empfange ich nur Müll.

Ich besitze das STK500 und ich denke es liegt an der Programmierung des
internen Taktes?

Ich programmiere das STK500 gleich mit WINAVR, wo ich auch das Programm
schreibe.

Was für Einstellungen könnten jetzt noch falsch sein?????

Bitte helft mir....ich verzweifle bald!!!

Danke Thomas
Gast #93229
Lesenswert?
• ▲
▼
Man kann auch den Takt über ein externen Quarz erzeugen, dazu muss man
den Jumper OSCSEL in Position 2-3 bringen. Auf dem Stecker CRYSTAL kann
man nun ein eigenen Quarz anbringen.

Dann musst du bei Fuses wie oben schon Britneypunter gesagt hat genaue
Einstellungen machen. Dann sollte es eigentlich gehn.

PS ich hab das mit 8 MHz auch schon versucht es kommt nur müll an, ich
weiss bis heut nicht was das genau ist. Ich hab dann wieder auf die
3,68 Mhz gewechselt und es ging wieder. Kann auch sein, das dein µC
nicht mehr als 3,68 Mhz unterstützt ? Oder die 8 Mhz  nicht in den
Specs deines µC liegen ? Mal anderes Quarz versucht ?
Gast #93230
Lesenswert?
• ▲
▼
Hallo an Alle!

Erstmal vielen Dank für Eure zahlreichen Antworten. Leider habe ich es
noch nicht ganz in den Griff bekommen, aber ich habe folgendes
herausgefunden. Und zwar ist noch der interne Takt von 1MHZ
voreingestellt. Ich habe in meinem Programm zur Berechnung der Baudrate
auch 1MHz genommen. Bei 9600 Baud bekomme ich ein "Ä" übertragen,
obwohl ich ein "D" senden wollte. Oder bei 55hex empfange ich D5hex.
Läßt sich daraus schließen, dass der interne Takt nicht genau genug
ist?

Wie kann man den internen Takt ausschalten? Habe den letzten Beitrag
gelesen. Aber ich wollte eigentlich keinen anderen Quarz stecken,
sondern auf dem STK500 einen anderen einstellen. Da kann man doch auch
bis 3,68MHZ einstellen. Nur was muss man noch ändern, damit dieser auch
verwendet wird? FUSEBITs??? Wenn ja, welche?

Vielen Dank....

Ciao Thomas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren