www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Merkwürdige Zeichen AVR Terminal


Autor: Sebastian -.- (zettixzehner)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag zusammen,

ich beschäftige mich erst seit kurzer Zeit mit dieser Materie und 
arbeite mit dem STK 500 einem ATmega8 und dem AVR Studio sowie dem AVR 
Terminal.

Nun zu meinem Problem:

Habe das folgende Programm aus dem Buch von Roman Mittermayr auf meinen 
µC geladen und eine Verbindung über die serielle Schnittstelle zum AVR 
Terminal hergestellt. Auf dem Board habe ich die korrekten Pins mit TxD 
und RxD verbunden und bekomme auch eine ausgabe im Terminal allerdings 
nur merkwürdige Zeichen :(



Hier der Quellcode:
/*
  Serielle Kommunikation 
  Minimale Ausführung

  ATMEGA8/16/32 und kompatibel
  STK500 mit dem STK500 Oszillator (3.68 MHz)
  Baudrate: 9600 (8N1)

  Roman Mittermayr
  AVRBUCH.DE  
*/

#include <avr/io.h>

#define  TAKT      3680000
#define UART_BAUDRATE  9600

// Berechnung der Konfigurationsparameter
#define UART_SETTING  ((TAKT/16L/UART_BAUDRATE)-1)


void setup_uart()
{
  /* Baudrate einstellen */
  UBRRH = (char) (UART_SETTING >> 8);
  UBRRL = (char) (UART_SETTING);

  /* Empfänger und Sender einschalten */
  UCSRB = (1<<RXEN) | (1<<TXEN);

  /* Asynchron, 8N1 */
  UCSRC = (1<<URSEL) | (3<<UCSZ0);
}

void uart_putchar(char c)
{
  // Warten bis Buffer bereit ...
  while (!(UCSRA & (1 << UDRE)))
    ;

  // Senden...
  UDR = c;
}

void uart_putstring(char *str)
{
  unsigned char i;

  for (i=0;i<255;i++) /* Maximal 255 Zeichen ausgeben ... */
  {
    if (str[i] != 0)
      uart_putchar(str[i]);
    else
      break; // Ende des Strings erreicht
  }
}


int main(void)
{
  /* RS232 einschalten ... */
  setup_uart();

  /* Willkommensnachricht senden ... */
  uart_putstring("AVRBUCH.DE - RS232 [OK]...\r\n\r\n");

  while (1)
  {
  }

  return 0;
}

Habe auch noch einen Screenshot gemacht(siehe Anhang)

Autor: Lord Ziu (lordziu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht auf den ersten Blick nach falschen UART-Settings aus. Überprüfe 
mal Baudrate, Datenbit, Parität und Stoppbits.

Und zwar auf der Controllerseite und der PC-Seite. Die Settings müssen 
auf beiden Seiten gleich sein.

Autor: Thi Lo (flothi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian -.- schrieb:
> // Berechnung der Konfigurationsparameter
>
> #define UART_SETTING  ((TAKT/16L/UART_BAUDRATE)-1)

Sicher? Oder meinst du eher
#define UART_SETTING  ((TAKT/(16L*UART_BAUDRATE))-1)
, wie es in AVR-Tutorial: UART geschrieben ist?

vg

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lord Ziu schrieb:
> #define  TAKT      3680000

Stimmt der wirklich? Also 3,68MHz?

Autor: Sebastian -.- (zettixzehner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe die Einstellungen verwendet die im Buch geschildert wurden 
und der Quellcode ist ebenfalls von beigelegter CD bei dem Takt bin ich 
mir wirklich sicher der müsste stimmen.

Autor: manoh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die UART-Settings alle passen, dann schau mal ob dein µC auch mit 
3,68 MHz läuft.

Autor: Lord Ziu (lordziu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prüf mal, ob die CKDIV8-Fuse gesetzt ist. Das ist ein beliebter Fehler. 
Wenn die Fuse gesetzt ist, wird dein Controllertakt intern nochmal durch 
8 geteilt.

Autor: Sebastian -.- (zettixzehner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab sogar mit einem Oszilloskop gemessen der läuft mit 3,68Mhz -.-

Ich werd nochmal die UART settings prüfen kann doch nicht sein:(

Autor: Sebastian -.- (zettixzehner)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Lediglich diese 3 Fusebits sind gesetzt sonst keines.

Autor: Thi Lo (flothi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also läuft dein µC mit 1 MHz - schau mal hier rein: 
http://www.engbedded.com/fusecalc

VG

Autor: Lord Ziu (lordziu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau. Du hast zwar ein Quarz am µC, dessen Schwingungen du mit dem Oszi 
messen kannst, aber intern benutzt dein µC diesen Takt nicht. Sondern 
einen eingebauten 1MHz Takt.

Siehe hierzu: AVR Fuses

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian -.- schrieb:
> Hab sogar mit einem Oszilloskop gemessen der läuft mit 3,68Mhz -.-
>
> Ich werd nochmal die UART settings prüfen kann doch nicht sein:(

Da gibts noch viele Möglichkeiten, warum dein µC nicht mit 3.68Mhz 
läuft.

Da hilft nur noch ein Testprogramm
#define F_CPU 3680000

#include <avr/io.h>
#include <util/delay.h>

int main()
{
  DDRB = 0xFF;

  while( 1 ) {
    PORTB = 0xFF;
    _delay_ms( 1000 );
    PORTB = 0x00;
    _delay_ms( 1000 );
  }
}

Häng eine LED an PORTB, irgendeinen Pin zb 0.
Wenn die LED exakt 1 Sekunde an ist und danach 1 Sekunde aus, dann hast 
du die Gewissheit, dass dein µC auch tatsächlich mit 3.68Mhz läuft.
Läuft dein µC hingegen mit 1Mhz, dann ist die LED ca 3.6 Sekunden an und 
3.6 Sekunden aus. Diesen Unterschied kann man auch mit freiem Auge 
sehen.

Also: solange die Zeiten nicht 1 Sekunde sind, brauchst du gar nicht 
erst in eine andere Richtung weitersuchen.

Autor: Sebastian -.- (zettixzehner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Perfekt 1. Sahne nun läuft alles einwandfrei auch eine Analogwertmessung 
mit Ausgabe war echt nur der blöde Fehler mit dem Takt

Vielen Dank für die Hilfe :)

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.