PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS Ports getrennt ansprechen???



EDatabaseError
27.06.2006, 10:38
$regfile = "m162def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600

so definiert man ja die baudrate für einen RS Port, aber wie definiere ich:
-Parität etc.
-Den 2. RS Port


Mfg
Tobi

Marco78
27.06.2006, 12:44
Mit Config, so wie es auch in der Hilfe steht.

EDatabaseError
27.06.2006, 18:17
Ich hab diesen Code:

$regfile = "m128def.dat" 'Define Chip ATmega128
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600
$baud1 = 9600

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

Schleife:
Open "Com2:" For Binary As #2
'Printbin #2 , Var
Close #2

Open "Com1:" For Binary As #1
'Printbin #1 , Var2
Close #1

Goto Schleife

End

(nicht getestet)

Und wie kann ich RS232 empfangen also wenn ich was in den Chip reinsende???

Mfg
Tobi

Marco78
27.06.2006, 18:50
Also...

Starte Bascom.
Füpge den Code ein oder öffne die Datei.
Setz den Cursor auf Config.
Drücke F1.
Dann kommt die Hilfe.
Es erscheint eine Liste mit alle möglichen Config-Befehlen für deine Bascom-Version.
In der Version .8.1 ist Config Com1 an achter Stelle von oben gezählt. Solltest du eine andere Version haben, wirst du den Befehl schon finden. PS: Sie sind alphabetisch sortiert, wird also nicht so das Problem.
Die entsprechende Zeile anklicken, dann kommt die Hilfe speziell zu Config Com1. Alternativ kannst du auch Config Com2 wählen, aber da ändert sich nicht viel außer das Com2.
Und da in der Hilfe steht wie man was empfängt!

Ein paar weitere Tipps:
1. Auf der HP vom MCS gibt es eine Anleitung zu Bascom. Ist zwar englisch, aber dennoch verständlich wenn man bedenkt, das die Befehle auch englisch sind und man mit ihnen auskommen muss.

2. Zu jedem Befehl gibt es eine Hilfe, mit der man die ersten größeren Anlaufschwierigkeiten überwinden kann. Einfach den Cursor auf den Befehl setzen und F1 drücken.

3. Zu vielen Befehlen gibt es im Bascom-Ordner auch Samples.

4. Erstmal klein anfangen: http://www.rowalt.de/mc/index.htm

5. Hier im Forum erstmal suchen, ob die Frage schon einmal gestellt wurde. https://www.roboternetz.de/phpBB2/search.php
Wenn ja, dann dort lesen, was da steht. Sollte das nicht helfen, die neue Frage oder den Zusatz ggf. in diesem Beitrag stellen, sonst gibt es irgendwann zum jeweils gleichen Thema 30 Beiträge und diejenigen, die die Suche benutzen haben dann keine Lust mehr alles zu lesen und stellen ihre Frage neu und dan sind es bald 50 Beiträge usw...

6. Auch mal was ausprobieren. Wie du schon geschrieben hast: Code nicht getestet. Warum nicht?

7. Bei einfachen Fragen (ich behaupte mal RS232 ist einfach) auch zeigen, das man es versucht hat. Dann bekommt man auch eher Hilfe von anderen als wenn die Hilfegebenden den Eindruck haben das der Hilfesuchende keine Lust hat sich selbst zu bemühen.

Amen!

EDatabaseError
27.06.2006, 19:00
zu 1:
Action
Configures the UART of AVR chips that have an extended UART like the M8.


Syntax
CONFIG COM1 = dummy , synchrone=0|1,parity=none|disabled|even|odd,stopbi ts=1|2,databits=4|6|7|8|9,clockpol=0|1


Remarks

synchrone 0 for synchrone operation (default) and 1 for asynchrone operation.
Parity None, disabled, even or odd
Stopbits The number of stopbits : 1 or 2
Databits The number of databits : 4,5,7,8 or 9.
Clockpol Clock polarity. 0 or 1.
Note that not all AVR chips have the extended UART.

daraus kann ich leider nicht lesen wie mn empfängt ;-)

zu 5:

Do
If USR.RXC = 1 Then 'Wenn Byte empfangen...
i = UDR 'Byte aus UART auslesen
Select Case i
Case "H"
Print "Hallo AVR"
Case "h"
Print "hallo avr"
Case Else
Print "Unbekannter Befehl"
End Select
End If
Loop
End Das ist zum empfangen (gefunden) leider auch nur für com 1 oder wi kann man das auf Com 2 umschreiben???

zu 6:
mein chip ist noch nicht da :-(

zu 7:
siehe oben die ganzen zusammen gekratzten codes ;-)


(Bin leider nur ein armer kleiner Delphi Win 32 Programmierer der jetzt auch nen Atmel proggen muss)


Mfg
Tobi

Marco78
27.06.2006, 20:13
(Bin leider nur ein armer kleiner Delphi Win 32 Programmierer der jetzt auch nen Atmel proggen muss)
Aber du machst es ja auch nicht erst seit gestern.

In der Hilfe zu Config Com1 steht auch was von Input. In der Hilfe zu Print steht auch das Gegenstück (Input) unter See also.

Zu 7:
Das hättest du in den Samples auch ausführlicher gefunden.

Mit Input un Inkey wirst du schonmal weiter kommen. Wenn es unbedingt mit USR.RXC sein soll, musst du im Datenblatt zum Mega128 mal schauen, wie die Register dort für Com2 heissen. Das ist dann allerdings etwas aufwendiger als von Bascom zur Verfügung gestellte Befehle zu nehmen.

EDatabaseError
28.06.2006, 14:06
Sodele. Mein AVR ist da :-)

Leider bekomme ich bei folgender Kommunikation folgendes Zurück wenn ich "DELETE" in den Chip sende:


Input #1 , Buffer1 'Daten lesen
Print #1 , Buffer1 ; "b" ' Und wieder zurück


das was zurück kommt ist:
"D"
"E"
"L"
"E"
"T"
"E"

:-( was mache ich falsch


Mfg
Tobi

(Die AVR Geschichten mache ich halt auch nicht jeden Tag und Delphi is doch ein bissel anders...)

EDatabaseError
28.06.2006, 17:40
ich hab ein Problem mit dem input Befehl. Dieser hält mein Programm an bis Daten in den Port gesendet wurden.
Kann man das irgentwie umgehen das er nur die Daten ausliest wenn auch welche vorhanden sind?

Mfg
Tobi

RHS
28.06.2006, 19:25
Schau bitte mal in der Hilfe unter Inkey. Das ist wahrscheinlich eher das, was Du suchst.

Edit:
Und schau mal in dem Verzeichnis auf Deinem PC: C:\Programme\MCS Electronics\BASCOM-AVR\SAMPLES\serial

PicNick
28.06.2006, 19:27
if ischarwaiting() then
input
end if
oder
if ischarwaiting(#channel) then
input
end if

Marco78
28.06.2006, 19:29
Kann man das irgentwie umgehen das er nur die Daten ausliest wenn auch welche vorhanden sind?
Das ist dann die Geschichte mit dem USR.RXC.
http://www.rowalt.de/mc/avr/avrboard/04/avrb04.htm Am besten ist es das ganze per INT auszuwerten. Aber das Problem beim M128 ist das was ich schon gesagt habe, das du im Datenblatt schauen musst, wie sich das Register für UART2 nennt.

Oder du benutzt einen externen Interrupt (INT0 oder INT1) um zu erkennen, ob was gesendet wird, wenn ja, springt das Programm in die ISR und dort kannst du die Daten auslesen.

Ich würd's aber erstmal für UART1 mit seinem Interrupt probieren.

Dann das Forum nach Mega128 and UART durchsuchen, und auch mal schauen, was dazu im Forum von MCS steht.

Aber wen UART1 erstmal funktioniert, ist der Rest auch nicht mehr so schwer.

PS: Ich hab da leicht reden, weil ich keinen Mega128 habe ;)

Aber wenn die Registernamen bekannt sind, geht das schon.

Marco78
28.06.2006, 19:43
Schau bitte mal in der Hilfe unter Inkey. Das ist wahrscheinlich eher das, was Du suchst.

Hatte ich ja auch schon geschrieben ;)

EDatabaseError
28.06.2006, 20:47
Super läuft! Danke!

Mfg
Tobi