Merkwürdige Zeichen AVR Terminal

OP #1698814
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:
1
/*
2
  Serielle Kommunikation 
3
  Minimale Ausführung
4

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

9
  Roman Mittermayr
10
  AVRBUCH.DE  
11
*/
12

13
#include <avr/io.h>
14

15
#define  TAKT      3680000
16
#define UART_BAUDRATE  9600
17

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

21

22
void setup_uart()
23
{
24
  /* Baudrate einstellen */
25
  UBRRH = (char) (UART_SETTING >> 8);
26
  UBRRL = (char) (UART_SETTING);
27

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

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

35
void uart_putchar(char c)
36
{
37
  // Warten bis Buffer bereit ...
38
  while (!(UCSRA & (1 << UDRE)))
39
    ;
40

41
  // Senden...
42
  UDR = c;
43
}
44

45
void uart_putstring(char *str)
46
{
47
  unsigned char i;
48

49
  for (i=0;i<255;i++) /* Maximal 255 Zeichen ausgeben ... */
50
  {
51
    if (str[i] != 0)
52
      uart_putchar(str[i]);
53
    else
54
      break; // Ende des Strings erreicht
55
  }
56
}
57

58

59
int main(void)
60
{
61
  /* RS232 einschalten ... */
62
  setup_uart();
63

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

67
  while (1)
68
  {
69
  }
70

71
  return 0;
72
}
Habe auch noch einen Screenshot gemacht(siehe Anhang)
Angehängte Dateien:
#1698921
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
1
#define F_CPU 3680000
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5

6
int main()
7
{
8
  DDRB = 0xFF;
9

10
  while( 1 ) {
11
    PORTB = 0xFF;
12
    _delay_ms( 1000 );
13
    PORTB = 0x00;
14
    _delay_ms( 1000 );
15
  }
16
}

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren