USR.RXC rücksetzen?

Gast #257342
Lesenswert?

hallo,

ich frage mit usr.rxc ab, ob etwas am uart ansteht, dass funzt auch so
weit. das problem ist nur, wenn ich etwas empfangen hab spricht die
abfrage des usr.rxc nicht mehr an, anscheinend geht er dann immer davon
aus etwas zu empfangen.er wartet dann so lange bis ich im etwas zu
empfangen gib. Eigentlich sollte er den wert um 1 erhöhen und die
routine wiederholen.

code:

if usr.rxc=1 then
 inputbin x
 print "x"
else
 incr x
loop

gruß

xeus
Gast #257343
Lesenswert?

usr.rxc ist das interruptflag. Das musst du etweder selbst löschen oder
die entsprechende Interruptserviceroutine aufrufen. Diese erledigt das
dann für dich. In dieser Interruptserviceroutine kannst du aber mal
auch gleich INPUTBIN x machen.
AxelR.
Gast #257345
Lesenswert?

Habs jetzt mal getestet,
bevor ich etwas an den mc sende funktioniert es tadellos, er sendet so
lange pakete bis er etwas erhält. aber wenn er dann einmal etwas
empfangen hat, wartet er nur noch, als ob er etwas empfangen würd,
eigentlich sollte er aber an dieser stelle weiter so lange senden bis
etwas kammt.

HILFE, BITTE;(

gruß

Xeus
Gast #257348
Lesenswert?

bascom kann ich nicht wirklich, in FastAVR sähe das so aus:
...
$Baud =9600
Dim x As Byte
Declare Interrupt Urxc()
Declare Sub main()
...
Enable Urxc
...
Enable Interrupts
...
Interrupt Urxc(), Save All
InputBin x
End Interrupt

Sub main()
 If x>0 Then
  'mach was mit x
 End If
End Sub

Gruß
AxelR.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren