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


von Thomas (Gast)


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

von Britneypunter (Gast)


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=content/articles.php&contentid=29&PHPKITSID=563c6048af9592f5f67cc445b69b4ca5

von Rahul (Gast)


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

von Werner A. (Gast)


Lesenswert?

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

von Michael (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 ?

von Thomas (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

von Thomas (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.