mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STk500 (RS232) ->(USB)PC keine korrekte Übertragung


Autor: Eric S. (eric996)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag zusammen,

beginne gerade die ersten Schritte mit einem STK500 mit ATMEGA8 und 
versuche eine Serielle Kommunikation zwischen STK500 und einen PC, via 
USB->RS232 Schnittstelle zu bewerkstelligen.
Problem: Am PC werden seltsamme Zeichen dargestellt und mir gehen 
langsam die Ideen aus !

Das Programm kommt aus dem AVRBUCH.de, heißt "SERIELLMINIMAL"
Der Text "AVRBUCH.DE - RS232 [OK]..." sollte vom PC empfangen werden.
Das wird angezeigt Anhang AVR_Terminal.

Was bisher probiert wurde:

1. beide USB-> RS232 Adapter geprüft mit Looptest PIN 2 +PIN 3 gebrückt 
;Zeichen werden korrekt gesendet und empfangen (Dargestellt mit AVR_TERM 
und alternativ HTERM)

2.Verbindungskabel RxD auf PD0 von PORTD, TxD auf PD1 von PORTD

3. Lauflicht in das STK500 Programmiert (Funktioniert)

4. Benutze XP SP2,AVR Studio 4.15 Build 623, ATMEGA8

5. STK RS 232 Ctrl  bei mir auf COM8 (im Gerätemanager sichtbar),
   STK RS 232 SPARE bei mir auf COM9 (im Gerätemanager sichtbar)

Vielen Dank für die Hilfe :-)

/*
  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;
}

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft dein Controller wirklich mit "#define  TAKT      3680000", also 
3,68MHz?

Autor: eric996 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo kann ich das sehen ?

Ist das die Einstellung unter FUSES -> SUT_CKSEL?
Da steht bei mir: Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms; 
default value

Das dichteste wäre etwas mit 4MHZ

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms;
>default value

Dein Controller ist noch jungfreulich/nackich...
Du mußt ihn auf die externe Clock per Fuses programmieren.CKSEL = 0000?
Die Start-up-Time sollte im Moment egal sein.

Autor: eric996 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Glaube mit den FUSES war ich falsch, unter HW Settings stehen die 3.686 
MHz

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Glaube mit den FUSES war ich falsch, unter HW Settings stehen die 3.686
>MHz
Nee, die Fuses kümmern sich um die Konfiguration des Controllers (in 
deinem Fall hat er noch die Werkseinstellungen mit dem internen 1MHz 
RC-Oszillator), und die HW-Settings um die Einstellungen des STK500.
Hier im Forum schwirrt irgendwo auch das STK500-Handbuch in Deutsch 
herum...

Autor: eric996 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schönen Dank,
habe das Handbuch

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.