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
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
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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.