www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Problem mit Mega16 auf STK500


Autor: Tseug Halt (tseug)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

erstmal muß ich an dieser Stelle anbringen, dass ich dieses Forum super 
finde. Ihr habt mir schon soo häufig bei diesen genialen Hobby helfen 
können. Also, danke ans Forum und an die Leute die Ihr Wissen und ihre 
Erfahrung  bereitwillig anderen zur Verfügung stellen.

Zu meinen Problem.
Ich verwende den Mega16 im STK500 nun habe ich mal den den SPARE mit den 
Rx und Tx von meinen Mega16 verbunden und wollte mit folgenden Code ein 
Echo am Hyperterm erzielen.



#include <avr/io.h>
#include <stdint.h>

#ifndef F_CPU
#define F_CPU 3686400
#endif
#define UART_BAUD_RATE 9600
#define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) 
((F_CPU)/((UART_BAUD_RATE)*16L)-1)

unsigned char get;

int uart_putc(unsigned char c)
{
  while (!(UCSRA & (1<<UDRE)));
  UDR = c;
  return 0;
}

int main(void)
{

  UCSRB |= (1<<TXEN);  //Transmitter Enabled
  UCSRC |= (1<<URSEL) | (3<<UCSZ0);  //Asynchron 8N1

  UCSRB |= (1<<RXEN);  //Emfpang enabl

  UBRRH=(uint8_t) (UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
  UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);

  DDRB = 0xFF;
  PORTB = 0xFF;

  while(1)
  {

    while(!(UCSRA & (1<<RXC)))
    {
      PORTB = ~get;
    }
    get = UDR;
    uart_putc(get);

  }
}


Denke da sollte alles richtig eingestellt sein. Im Hyperterm kommen aber 
nur so Sachen wie "8888888888>888" an. Hat da jemand nen Plan was ich 
falsch mache?? Da passt doch was mit dem Takt ned, oder?? Wie kann ich 
daran was rumstellen. Und vor allem welchen soll ich einstellen? Ist bei 
mir evtl der interne Oszillator (der ungenaue) aktiv? Wie schalte ich 
den ab?

Danke schon im voraus.
Timo


Autor: 1001. Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie schalte ich den ab?

Guck dir im Programmier-Werkzeug des AVRStudios die Fuses an und dann 
guckst du dir das Datenblatt in Bezug auf die Fuses an.

Autor: Tseug Halt (tseug)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dake für den Hinweis Rahul!!

Hab nun die Fusebits so eingestellt, dass der ext. Oszillator verwendet 
wird und schon geht die Sache.

Also hier nun der Hinweis für alle die auf den STK500 einen UART mit dem 
Mega16 aufbauen möchten.

- Fuses beim Mega16 stehen bei Auslieferzustand auf internen Oszillator. 
Mit diesen Oszillator ist ein UART kaum möglich weil der Takt zu ungenau 
ist. Man sollte deshalb den Oszillator von intern auf extern mit Hilfe 
der Fusebits (siehe Datenblatt bzw. Checkboxen beim AVRStudio im 
Programmodus)stellen und hat somit den sehr genauen Takt von 3686400Hz 
bei Verwendung des STK500.

- Der Code oben funktioniert dann so und gibt das was man im Hyperterm 
eingibt als Echo zurück. Besser ist allerdings die Bib von Fleury. 
http://homepage.hispeed.ch/peterfleury/.

Timo

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schön, dass mal jemand nicht nur schreibt "Es funktioniert! Danke!".

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.