Forum: Mikrocontroller und Digitale Elektronik UART--> RS232 --> PC (Putty oder Termite)


von knebel (Gast)


Lesenswert?

Hallo,

ich habe folgendes Programm in BASCOM AVR erstell:
1
$regfile = "m8def.dat"
2
$crystal = 8000000
3
$baud = 9200
4
5
6
Config Portd.5 = Output
7
8
Dim Empfangen As String * 255
9
10
Do
11
12
   Empfangen = ""
13
   Input Empfangen
14
15
   Select Case Empfangen
16
      Case "0"
17
         Portd.5 = 0
18
         Print "LED ausgeschalet!"
19
      Case "1"
20
         Portd.5 = 1
21
         Print "LED eingeschalet!"
22
      End Select
23
24
Loop
25
26
End

Habe über Pony Prog das Fuse Bit CKOPT im ATMEGA 8 gesetzt. Da ich das 
Pollin Board nutze, wird nun der ATMEGA 8 mit 16MHZ Quarz betrieben.

Hatte im Forum gelesen, dass bei dem interen Takt die  Frequenz nicht 
genau genug ist und es daher Probleme geben kann.

Die erste Frage die ich habe, hoffe sie ist nicht zu peinlich,

Ich habe ein Modemkabel zur Programmierung über die ISP Schnittstelle.
Die Verkabelung ist 1:1. Sprich keine vertauschten Leitungen wie beim 
Null Modem Kabel.

Dieses Kabel kann ich auch für die RS232 Schnittstelle nutzen?

Wo könnte der Fehler liegen,dass ich mit Putty oder Termite keine 
Verbindung zum Pollin Board bekomme?

Bei Putty bekomme ich nur Straffierungen angezeigt. Laut dem Forum 
sollte dies an dem internen Takt und der Baud liegen. Aber ich denke das 
habe ich richtig eingestellt.

Man muss anmerken, dass ich noch einen USB --> RS232 Adapter nutze.

Kann dies zu Problemen führen? Der Adapter ist von Digitus.

Hoffe ihr könnt mir helfen.

von H.Joachim S. (crazyhorse)


Lesenswert?

"$crystal = 8000000"
"$baud = 9200"
"mit 16MHZ Quarz betrieben"

Passt nicht so zusammen, oder?
9200 Baud sind möglich, aber i.a. sinnfrei. Terminalprogramme können 
meist nicht :-)

von Detlef K. (deka65)


Lesenswert?

Hallo,
wenn du den Mega mit 16MHz rennen läßt, mußt du es im Programm auch
eintragen. "Crystal=16000000"
Was ich im Programm noch vermisse, sind HW-, SW-Stack und Framesize.
Trag das mal ins Programm ein.

Gruß
deka65

von knebel (Gast)


Lesenswert?

Hallo,

habe den Code nun wie folgt verändert
1
$regfile = "m8def.dat"
2
$crystal = 16000000
3
$hwstack=40
4
$swstack=16
5
$framesize = 32
6
$baud = 9200
7
8
9
Config Portd.5 = Output
10
11
Dim Empfangen As String * 255
12
13
Do
14
15
   Empfangen = ""
16
   Input Empfangen
17
18
   Select Case Empfangen
19
      Case "0"
20
         Portd.5 = 0
21
         Print "LED ausgeschalet!"
22
      Case "1"
23
         Portd.5 = 1
24
         Print "LED eingeschalet!"
25
      End Select
26
27
Loop
28
29
End

Funktioniert trotzdem noch nicht.

termite kann nicht verbinden und Putty reagiert garnicht

von Detlef K. (deka65)


Lesenswert?

Hallo,

H.Joachim S. schrieb
> 9200 Baud sind möglich, aber i.a. sinnfrei.

Probier mal $BAUD=9600
das ist eine gängige Baudrate. Nicht vergessen, das
auch in Putty einzutragen.

Gruß
deka65

von knebel (Gast)


Lesenswert?

Oh Mann,

habe es gelöst.

Fuse Bits können ja auch invertiert sein.

Nutze nun den internen Takt von 4MHZ.

Unter den folgenden Einstellungen läuft die Kommunikation zum UART
1
$regfile = "m8def.dat"
2
$crystal = 1000000
3
$hwstack=40
4
$swstack=16
5
$framesize = 32
6
$baud = 2400
7
8
9
Config Portd.5 = Output
10
11
Dim Empfangen As String * 255
12
13
Do
14
15
   Empfangen = ""
16
   Input Empfangen
17
18
   Select Case Empfangen
19
      Case "0"
20
         Portd.5 = 0
21
         Print "LED ausgeschalet!"
22
      Case "1"
23
         Portd.5 = 1
24
         Print "LED eingeschalet!"
25
      End Select
26
27
Loop
28
29
End

Musste mich auf 1MHZ begrenzen mit Baud 2400

von H.Joachim S. (crazyhorse)


Lesenswert?

Wie bist du denn drauf? Ein Durcheinander nach dem nächsten.
Jetzt verwurstet du wieder 1MHz mit 4MHz...

Mit dem internen Takt wirst du bei UART-Kommunikation auf Dauer nicht 
froh, zumindest nicht auf die primitive Art von konstanter Frequenz 
auszugehen, da gibts hier ganz viel drüber zu lesen.

Hat der gegenüber eine konstante Bauddrate, kann man sich daran 
orientieren und nachregeln (via OSCAL und/oder Baudrate-Teiler). ABer 
davon scheinst du meilenweit weg zu sein.

von knebel17 (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ist halt noch alles ein bißchen neu.

BASCOM ist noch relativ neu und dann die Funktion UART mit Fuse Bit.

Ich habe die Taktfrequenz soweit reduziert, bis es funktioniert.

Denn ich war mir nicht sicher, ob eventuell der USB-RS232 Adapter einen 
Einfluss hat.

Da ich aber immer gerne dazu lerne, anbei ein Screenshot von den 
Fuse-Bits,

vielleicht lese ich diese noch falsch und habe nur 1MHZ als 
Taktfrequenz.

Vielleich kannst du mir dieses erklären.

Wie muss ich das im Datenblatt deuten:

CKOPT =1 --> unprogrammiert oder programmiert?

Analog dazu die Fuse im Controller:

checked --> programmiert--> Bit =0;

Heißt das im Datenblatt die 1 =  programmiert  oder Bit = 1 --> was 
unprogrammiert bedeutet?

Ich gebe dir Recht dass es mehr Sinn macht mit einem externen Takt in 
Zukunt zu arbeiten.

Gruß,

Knebel

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.