www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega, RS232 need help


Autor: Peter Kaiser (opa-peter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich hoffe ich habe keinen Thread übersehen der mir helfen könnte, daher 
mein Problem hier.

Ich möchte mit dem ATMega128 und Peaktech 3315 Messgerät ein paar Daten 
loggen. Nach etwas ausprobieren (DTR > 3V und RTS 0V oder kleiner) 
sendet nun mein Peaktech die Daten jetzt schön wie erwartet. Laut 
Datenblatt soll es "2400,o,7,1" (JIS 7 Bit Startbit immer 0, erst LSB 
dann MSB) senden, aber ein VB Testprogramm am PC liest die Daten mit 
""2400,n,7,1" prima aus.

D.h. ich habe mit einem Oszi kontrolliert die Daten kommen als ca. +5V 
schön am Eingangspin der seriellen Schnittstelle des ATMega an 
(Respektive des verbauten MAX232 Chips).

Leider schaffe ich es nicht diese einzulesen obwohl die Kommunikation 
des ATMega mit einem PC z.Bsp via Hyper Terminal einwandfrei 
funktioniert.

D.h die Standard Verarbeitung in BASCOM die ungef. so aussieht:
---------------------------------------------
$baud1 = 2400

Open "COM2:" For Binary As #1
Do
   Inputhex #1 Z
 oder
   Input #1 Z
...

Ich habe es auch mit der zusätzlichen Eingabe von

Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , 
Databits = 7 , Clockpol = 0
mit diversen Parametern nicht geschafft.

Auch die Versuche mit
Open "COM2:2400,7,n,1" For Input As #1
und ähnliches halfen leider nicht.
----------------------------------------------
D.h. der ATMega empfängt einfach keine Daten obwohl definitiv Daten am 
Eingang liegen. Kann es ein Problem des +5V Pegels sein? Obwohl RS232 
doch ab 3V gehen sollte. (On Board des ATMega ist der MAX232 der dies 
doch managen können sollte). Oder ....


Hat jemand eine Lösung? Oder einen guten Tip?
Gruß
Peter

Autor: Markus R. (maggus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist der AVR genau mit dem Messgerät verbunden? In obigem datenblatt 
steht etwas von -3 / 0 Volt Pegel, der AVR arbeitet aber mit 0 / 5 Volt 
Pegel.

Autor: Peter Kaiser (opa-peter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
das Messgerät hat eine "normale" serielle Schnittstelle die an jedem PC 
funktioniert. D.h. die Pegel sind in der Spezifikation -15..-3 und +3 .. 
15V.

gemessen habe ich beim Anschluss an den PC Pegel von ca. 9V.

Angeschlossen ist
PIN 2 RxD Out (Datenstrom)
PIN 3 TxD In (habe nicht ohne getestet)
PIN 4 DTR In (mindestens +3V, getestet mit +5V und +9V)
PIN 5 Ground
PIN 7 RTS In (mindestens 0V, besser -3 bis -15V, getestet mit Masse (0V) 
war ok: soll heißen wenn Leitung offen sendet das Messgerät nicht. Aber 
bei Pegeln 0V ... -9V sendet es Daten.

Gruß
Peter

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du zwischen Max232 und ATmega mit dem Oszi misst und da auch 
saubere daten ankommen, dann muss das problem irgendwo in der 
Software/konfig des USARTs liegen.
Ich würde evtl. auch mal einen anderen Max232 probieren. Bei mir machen 
die manchmal (wenn auch selten) aus unerfindlichen gründen probleme.

Autor: Peter Kaiser (opa-peter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... gemessen habe ich nicht zwischen Max232 und AtMega sondern am 
seriellen Anschluss (außen). Aber schreiben hilft, ich habe noch mal 
nachgedacht:

Die Schnittstelle vom Messgerät wird möglicherweise von dem RS232 des 
PC/AVC mit Spannung versorgt. D.h. nicht wie ich zuerst dachte das DTR / 
RTS die Freigabe bewirken, nein diese könnten auch das Power Supply 
sein. Dann wären die 5V genug für das funktionieren der Sschnittstelle 
aber zu wenig für den AVC Eingang.
Ich werde dies mal probieren. Kann ich dazu die +/- 10V von dem MAX232 
nehmen? Oder darf man diese nicht extern belasten? Die Stromaufnahme des 
Schnittstelllenkabels kenne ich noch nicht, vielleicht hat diese ja 
einer zur Hand?

Gruß
Peter

Autor: Helmut -dc3yc (dc3yc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du schreibst als Datenformat: 2400, 7, o, 1, programmierst aber 
COM2:2400,7,n,1
Da zwischen No Parity und Odd Parity doch ein Unterschied ist, solltest 
du da auch mal nachschauen! Vielleicht macht da Bascom einen 
Fehlercheck?

Servus,
Helmut.

Autor: Peter Kaiser (opa-peter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich alle möglichen und unmöglichen Parameter ausprobiert, d.h. natürlich 
auch o,n,e...
Habe eben die Idee ausprobiert die SSt zum Messgerät mit +/- 10V vom 
Max232 zu speisen. Funktioniert gut, d.h. es kommen jetzt schöne +/- 
Impulse auf Rx des AVR an. Leider ließt er diese immer noch nicht.

Ein Versuch das Messgerät mit Windows Hyperterminal zu lesen 
funktioniert auch nicht. D.h. ich vermute doch noch ein Protokoll 
Problem. Hier für alle mitleser das was im Interface Protokoll steht (s. 
Anlage).

Gruß
Peter

Nachtrag: Anlage schaffe ich nicht??? Steht aber direkt am Anfang des 
Threads als peaktech... pdf.

Autor: Peter Kaiser (opa-peter)
Datum:
Angehängte Dateien:
  • preview image for te.jpg
    te.jpg
    103 KB, 195 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Sorry noch ein Nachtrag.

Schlieese ich das Messgerät an den Win. PC an kann ich mit einem
eigenen VB Programm die Daten prima auslesen
---------------------------------
Die wichtigsten Parameter sind:
Set CommP = CreateObject("MSCommLib.MSComm")
CommP.Settings = "2400,N,7,1"
CommP.InputMode = comInputModeText
CommP.InBufferSize = 26
CommP.PortOpen = True
CommP.RThreshold = 1
CommP.SThreshold = 1
CommP.InputLen = 0
CommP.DTREnable = True
CommP.RTSEnable = False
CommP.EOFEnable = False
------------------------------------
Beim Versuch das Messgerät mit Hyper-terminal zu belauschen geht aber 
nicht, obwohl ich alle Parameter probiert habe (wie bereits gesagt HT 
direkt am AVC funktioniert.
-----------------------------------

Autor: Peter Kaiser (opa-peter)
Datum:
Angehängte Dateien:
  • preview image for 1.jpg
    1.jpg
    28,3 KB, 168 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Hi,
langsam komme ich der Sache näher......
Ich berichtete das die Kommunikation AVC - PC mit Hyperterminal 
funktioniert.
Das stimmt auch, aber nur mit Baudrarten >= 9600

Bascom hat zwar Baud 2400 im Programm nie angemeckert, aber wenn man 
2400 bei den AVR Options (Communications) einträgt, kommt die antwort 
"not possible".

D.h. ich versteh das so, entweder hat der AVC keinen genügend großen 
Teiler um von 16 MHz auf 2400 Baud zu kommen. Ist das so? Wenn ja gibt 
es eine Umgehungslösung?

Gruß
Peter

Autor: Peter Kaiser (opa-peter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich mache einen neues Thema auf weil ich jetzt ziemlich weit weg von dem 
zuerst angenommen Problem bin...

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.