PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BASCOM 2te UART oder software UART



Snecx
16.02.2009, 23:09
Hallo

so wie ich das laut der Suchfunktion in den Beiträgen gelesen habe kann Bascom keine 2te UART ansprechen (zb beim ATMega 162)
Oder geht das jetzt doch mit neueren Versionen?

Was ich brauche ist folgendes. 2 serielle Schnittstellen. Beide Endgeräte senden und empfangen mit 9600 Baud.
Allerdings haben die Daten die hin und hergeschickt werden einen overhead den ich jeweils abschneiden muss oder hinzugefuegt werden muss. Mehr soll der Atmel nicht machen.

Im Endeffekt heisst das ein par Zeichen vor dem senden hinzufuegen und ein par Zeichen vor dem Empfang "abbeissen"

Wie kann ich das am besten machen?

Jaecko
18.02.2009, 10:24
Ich hab bei Bascom noch die 1.11.9.1; und da kann ich von nem ATMega2560 eigentlich alle 4 UARTs verwenden.

Zum Empfangenen Text lässt sich mit Bascom mit + ein Text anfügen, zum Abschneiden von Textteilen gibts LEFT, MID, RIGHT, TRIM.

Snecx
18.02.2009, 17:48
Hallo

danke fuer die antwort. ich haette mein problem besser formolieren muessen.
soweit ich weiss kann ich in BASCOM nur eine UART mittels interupt abfragen. die zweite,dritte,vierte muss ich mit open befehl oeffnen und in den stream lesen und schreiben.
dann besteht aber die gefahr bytes zu verlieren bzw ist "unschoen" zu programieren.
es waere schoener wenn ich beide schnittstellen per interupt programieren koennte.
wenn ich das richtig nachgelesen habe geht das nicht.
stimmt das oder liege ich falsch?
das reine zerstuecklen eines strings ist mir klar wie das geht.

for_ro
18.02.2009, 18:00
Die Hardware UARTs kannst du mit dem Bytematch usw abfragen. Von denen hat dein 162er doch 2, also kein Problem.

Gruß

Rolf

Snecx
18.02.2009, 23:54
Ich habe mir die neue Testversion von bascom runtergeladen.
dort gibt es eine anweisung das auch der 2te uart ueber einen interupt ausgeloesst wird. siehe mein beispielcode.

allerdings habe ich nichts gefunden wie ich in den 2ten port etwas schreiben kann (analog zu dem befehl print) und wie ich ein zeichen von der zweiten schnittstelle einlesen kann (anlog zu udr)

ueberlese ich da etwas oder gibt es da tatsaechlich keine befehle?
wenn nein warum gibt es dann ueberhaupt die moeglichkeit den uart 2 ueber interupt abzufragen?



$regfile = "m162def.dat"
$crystal = 3684000
$hwstack = 42
$swstack = 40
$framesize = 40

$baud = 9600
$baud1 = 9600


On Urxc Onrxd
On Urxc1 Onrxd1
Enable Urxc
Enable Urxc1

Enable Interrupts


Do




Loop

End

Onrxd:
Print "1"
Return

Onrxd1:
Print "2"
Return

for_ro
19.02.2009, 00:25
Ab und zu kommt man auch weiter, wenn man mal in der Hilfe nachsieht.
Du hast doch schon $baud1 gefunden. Wenn du genau dazu die Hilfe öffnest, siehst du, wie es geht.

Gruß

Rolf