Forum: Mikrocontroller und Digitale Elektronik auf UART lauschen bis Zeichen erscheint


von Mats M. (elektrofreak)


Lesenswert?

Hi

ich möchte gerne auf einem ATMega den UART benutzen, um Daten von einem 
ATM auf einen anderen zu übertragen.

Das senden geht ja durch Print einfach von statten.

jetzt habe ich mir gedacht, da ich nicht durch waitkey den gesammten 
controller lahm legen möchte, einfach mit Inkey den im Buffer liegenden 
Buchstaben or Whatever herauszuholen und an einen String inten dran zu 
hängen.

Wenn nun hinen am string ein bestimmtes Zeichen hängt, wird mit dem 
bearbeiten der Daten begonnen.


Wie ist dies in Bascom möglich?

Gedacht habe ich mir das in etwa so:


Dim Akey As String * 16
Dim Bkey As String * 16

Do

Akey = Inkey()

If Akey <> 0 Then Bkey = Bkey & Akey

if right(bkey, 1) = "?" then 'mach die Berechnung

Loop


aber wie mache ich das, dass der die in ascci-Code eintreffenden Zahlen 
in Zeichen umwandelt und dass der beide Variablen "Bkey = Bkey & Akey" 
zusammen fasst, da der kein Und-Zeichen kennt wie basic.

Vielen Dank im Vorraus

von Rahul, der Trollige (Gast)


Lesenswert?

Schade, dass du Bascom benutzt. In C wäre das Pippifax (zumindest für 
mich).

von jack (Gast)


Lesenswert?

Klappt denn eigentlich das 'geteilt' und 'mal-Rechnen' schon?

von Mats M. (elektrofreak)


Lesenswert?

ja, danke das klappt.

Also mit chr(var) hab ich herausgefunden, dass ich die ascii-Zahlen 
wieder in buchstaben konvertieren kann.

aber mit dem "hintereinandersetzten" von mehreren strings klappts noch 
nicht

von Rahul, der Trollige (Gast)


Lesenswert?

Wie wäre es mit "On UART gosub" oder wie sich das 
UART-Interrupt-Geraffel bei Bascom schimpft?!

von Mats M. (elektrofreak)


Lesenswert?

und wie kann ich dann die uart-daten lesen? inkey?

Edit: mag der nicht. Er sagt "Variable expected UART"

danke für den anstoß ;-)

von Rahul, der Trollige (Gast)


Lesenswert?

>und wie kann ich dann die uart-daten lesen?
Vermutlich mit A=UDR.

http://avrhelp.mcselec.com/bascom-avr.html

Guck da mal nach "ischarwaiting"

von jack (Gast)


Lesenswert?

>aber mit dem "hintereinandersetzten" von mehreren strings klappts noch
>nicht

Kann man denn Strings nicht einfach addieren wie in anderen Sprachen
auch?

von Michael U. (Gast)


Lesenswert?

Hallo,

Man kann vermutlich auch in Bascom Strings addieren.

Mit einem + Zeichen vermutlich, womit sollte man sonst addieren? ;)

Zumindest behauptet das diese Fundstelle bei
http://www.rowalt.de/mc/avr/avrboard/06/avrb06.htm

'0011.BAS: Einfacher String-Empfang
$Regfile = "2313def.dat"
$Crystal = 3686400
$Baud    = 9600

Dim s As String*10

On URXC OnRxD
Enable URXC
Enable Interrupts

Main:
  If Len(s) > 9 Then
    Print s
    s = ""
  End If
Goto Main

OnRxD:
  s = s + Chr(UDR)
Return

Ach ja, Strings wurden in Basic schon anno 1723 mit + zusammengefügt.

Gruß aus Berlin
Michael

von jack (Gast)


Lesenswert?

Da fragt man sich schon, warum der TO nicht selber bei Roland Walter
vorbeigeschaut hat. Aber fragen ist halt leichter.

von Michael U. (Gast)


Lesenswert?

Hallo,

keine Ahnung. ;)
Naja, ich mußte meine Google Suchanfrage auf 2x ändern, mit
bascom uart string empfangen
ist es dann aber der erste Treffer. :)

Eigentlich hatte ich ja in die BasCom-Dokz geschaut, die ist aber im 
Ernstfall wirklich nur auf dem Klo zu gebrauchen.
Zum Lesen natürlich! ;)

PS: ich programmieren nicht in BasCom, habe aber früher etliche 
Basic-Dialekte benutzt und bin nicht der Meinung, daß man in Basic nicht 
programmieren sollte.
Allerdings halte ich Basic auf einem µC für relativ ungünstig, machmal 
auch C, das wird aber eher an meiner Unkenntnis bei C liegen.
Also bleibe ich vorerst bei Assembler auf dem AVR. :)

Gruß aus Berlin
Michael

von Rahul, der Trollige (Gast)


Lesenswert?

>Da fragt man sich schon, warum der TO nicht selber bei Roland Walter
>vorbeigeschaut hat.

Darüber braucht man Leuten, die Bascom zum "Programmieren" benutzen 
nicht mehr nachdenken: Entweder kommen sie (fast) komplett alleine damit 
klar oder sie stellen dauernd Fragen.

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.