www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART und STK500....interne Takt????


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Britneypunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den externen Oszilator mußt du über die Fuses konfigurieren. Wie das
allerdings bei deiner Software funktioniert weiß ich nicht. Ansonsten
mach es eben mit Pony Prog, da klappt es wunderbar. Hier steht wie's
geht:
http://www.elektronik-projekt.de/include.php?path=...

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der interne Takt vom STK500 beträgt maximal 3,68MHz. Somit ist deine
eingestellte Baudrate viel zu niedrig.
Setze einfach F_CPU gleich 3680000, und es müsste funktionieren.
Gruß Rahul

Autor: Werner A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den internen Takt des STK kannst Du in der Karte "Board" ablesen (wenn
Du die Programmiersoft aufgerufen hast. Read Osc.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an Alle!

habs jetzt hinbekommen, dank ext. Oszillator vcm STK500. Änderung der
Fuses war notwendig!!!

DAnke an Alle!!! Brauche bestimmt bald wieder mal Eure Hilfe!!!

Ciao Thomas

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.