PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMega8 -- PC: RS232



wassermann
06.03.2006, 17:53
Hallo zusammen,

als Anfänger tu ich mich mit dem Datenaustauch vom Mega8 über RS232 zum PC noch etwas schwer.
Wenn ich per Terminal ein Zeichen zum µC schicke, dort darauf warte und wiederum zum PC zurückschicke, kommts auch richtig an. Schicke ich jedoch per print-Befehl nur vom µC zum PC, kommt eigentlich nur Müll an. Einstellungen: 9600, 8, N, 1. Externer Quarz. Kann mir da jemand helfen?

Ich möchte einfach größere aufgezeichnete Datenmengen "auf Knopfdruck" auslesen und auswerten.
Hat vielleicht jemand ein Beispiel auf PC-Seite/µC (VB/Bascom) um ein bisschen mehr Einblick zu bekommen? Dass ich den COM-Port öffnen und dann einlesen muss, usw. weiss ich ja, aber was noch???

wassermann

veit
06.03.2006, 17:57
bravo, dreimal das gleiche thema erstellt ....

tu mal deinen quellcode posten, dann kann dir sicher geholfen werden.

wassermann
06.03.2006, 18:17
sorry für die dumme frage: post=attachment??
deshalb ausnahmsweise hier.

$regfile = "m8def.dat"
$crystal = 8000000 ' used crystal frequency
$baud = 9600 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 40 ' default use 10 for the SW stack
$framesize = 50 ' default use 40 for the frame space

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Postd.5

Config Lcd = 16 * 4

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Dim A As Byte
Dim Text As String * 15
Dim Laenge As Integer

Text = "asd"
Laenge = Len(text)

Cls


Config Serialout = Buffered , Size = 20

Enable Interrupts


Print "abcd";

Do
A = Waitkey()
Print A
Cls
Locate 1 , 1
Lcd A
Loop
End

lanic
06.03.2006, 21:06
hey!

wenn ich das richtig sehe geht es dir um den ausdruck der nicht ankommt


Print "abcd";


nehme mal das ; weg dann sollte es eigendlich gehen.

gruß Nico

wassermann
07.03.2006, 06:51
Ja es geht um den print-Befehl. Der Rest ist nur zum Test am LCD. Wenn ich's richtig verstanden habe, dann ist das ; ja nur für's CR/LF.
Auch ohne seh ich nicht meinen gewünschten Text.
Vielleicht liegt's auch am Steckbrett, da ich bei einer max-Wert-Erfassung per Interrupt um den Nulldurchgang des Signales auch ein Problem habe.
Ab und zu kommt's auch zu einem nicht gewollten Reset.

super_castle
07.03.2006, 09:18
....da ich bei einer max-Wert-Erfassung per Interrupt um den Nulldurchgang des Signales auch ein Problem habe....

sag mal, verstehst du deinen eigenen text den du da geschrieben hast überhaupt? der kann technisch überhaupt nicht hinhauen.

warum schreibt ihr keinen eigenen programme und kennt nur die copy- und paste-taste.

jojo3
07.03.2006, 09:25
Hast du daran gedacht die Fuse-Bits von deinem M8
auf externen Quartz umzustellen, sonst hast du nur
1 Mhz Takt und dann stimmt die Baud-rate nicht

wassermann
07.03.2006, 11:20
@super_castle:
Danke für deine tolle Hilfe. Aber ein externes Signal (z.B. Analogwert/Wechselspg) abtasten ist allemal hilfreich in definierten Zeitintervallen ... also Interrupt. Ich bin zwar Anfänger bei den µC, aber meistens nicht ganz dumm ...

@jojo3:
Letzter Eintrag in der Liste, oder? Werd's nochmal kontrollieren...
Hast du auf der PC-Seite schon mal die Ausleserei programmiert?
Danke.

jojo3
07.03.2006, 13:27
Ich hab das mal in Excel gemacht.
Man kann da ein Visul-Basic Macro erstellen;
bisher hab ich es aber leider nicht geschafft die
Serielle Schnittstelle "richtig" zu initialisieren.
D.H. man muss mal kurz z.B Hyperterminal starten
und wieder beenden.
Beim richtigen VB6 klappts besser mit MSComm Steuerelement

in excel gehts zb. so:
(mag nicht professionell sein, funktioniert aber, hab damit mal
einen AVR ausgelesen der als Daten-Logger fungierte)

Was mir bei deinem Programm noch auffällt, lass mal testweise
den serialbuffer weg, damit hatte ich mit bestimmten Konstellationen
auch schon mal Probleme.
Und geht das LCD wirklich mit: Db7 = Postd.5 statt Portd.5 ?

Ich hoffe das mit dem Anhang hat geklappt ;-)

Vitis
07.03.2006, 13:42
....da ich bei einer max-Wert-Erfassung per Interrupt um den Nulldurchgang des Signales auch ein Problem habe....

ich vermute mal er macht per Timer alle paar ms ne ad-wandlung um
den Nulldurchgang einer Analogspannung zu messen ...
ich vermute mal er hat schon gesehen, dass er mit dem
integrierten ADC am Mega keine negativen Spannungen messen kann?

Oder hat er gleichspannung entkoppelt und ne Mittenspannung angelegt
wo er dann den Wechselanteil drüber legt?

naja, wird wohl so sein, aber wofür er das hier drinn hat weiß ich nicht:

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

hat doch $baud gesetzt ...

wenn die UART mist sendet hats idR Fehler bei entweder:
a Einstellung des Terminalprogrammes
b falsche Fuse-Einstellung für Taktrate des AVR
c falsche Frequenzangabe ($crystal)

wassermann
07.03.2006, 15:01
@jojo3
Anhang seh ich nicht.
Aber mit den Augen hab ich anscheinend Probleme, sonst hätt ich die Post nicht mit dem Hafen verwechselt ;-) Danke ... wär mir wahrscheinlich nie aufgefallen. LCD geht, aber sporadisch Erscheinungen, die ich mir nicht erklären konnte (Reset, usw.)
MSComm hab ich drin, allerdings noch nie verwendet. Muss ich noch dran arbeiten. Bei mir ist's letzten Endes auch nur 'n Datenlogger. Vielleicht kannst du's nochmal mit dem Anhang probieren?

@Vitis
Damit hat er mich richtig verstanden. Das ganze arbeitet bei 2,5V als Nullpunkt. Das mit dem Config stammt aus der Hilfe ... die ist halt für Anfänger wie mich hilfreich. $baud reicht also aus??
Werd mich wie gesagt abends nochmal an die Einstellungen machen.

thx a lot

jojo3
07.03.2006, 17:06
@wassermann

Hallo leider hab ich die Datei grad nicht zur Hand,
ich schicks dann morgen
schönen Tag noch :-)

wassermann
08.03.2006, 07:28
... und er schickt die Daten doch ...
Man(n) sollte sich vor dem Einbau den Quarz auch genau ansehen und nicht nur darauf vertrauen was man kauft ($crystal).
Und die post-portale-Wechstabenverbuchslerei beim LCD macht auch was gut.

@Vitis/jojo3
Danke ... habt mir sehr geholfen.
Analogsignal mit überlagertem Offset funktioniert super.
Hätte sogar nen zusätzlichen Referenzwert für den Nullpunkt als AE.
Mach mich heut mal ans MSComm und an die EEProms.

@jojo3
Vielleicht klappt's noch mit dem Anhang.

jojo3
08.03.2006, 09:29
Also wie schon gesagt ich hab in Excel einfach Buttons erstellt
und dan Makros zugeordnet.
Hab damals von 4 Wechselrichtern über 4 serielle Schnittstellen Daten
im AVR gesammelt und dann mit Excel ausgelesen
Das Makro versuch in den Anhang zu packen.

wassermann
08.03.2006, 12:24
@jojo3
Danke für den Input.
Sieht mir ganz nach dem gleichen Anwendungsfall aus. Hab allerdings keine RS232 am Wechselrichter. Somit Strom und Spg selbst erfassen ... und dann ist da ja noch der VDE.
Werd mich feierabendlich/-nächtlich damit befassen.