PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Getrc5 problem nach rc5send



P_II
06.06.2006, 21:44
Hallo

ich will folgendes erreichen:
der controller soll ständig kontrollieren ob er rc5 empfangen hat und auf tastendruck der auf int1 geht soll er rc5 senden. funktioniert auch fast alles ausser, dass er nach dem interrupt leider nicht mehr richtig empfängt. das lcd zeigt dann immer 32" an.
für hilfen wäre ich sehr dankbar



$regfile = "attiny2313.dat"

$crystal = 1000000


Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1 , E = Portd.1 , Rs = Portd.0
Config Lcdbus = 4

'init interrupts und deklaration der var
Enable Interrupts
Enable Int1
Config Int1 = Falling
Disable Int0
Cls
Config Rc5 = Portd.2
Config Portb.3 = Output
Config Pind.4 = Input
Portb.4 = 1
Dim T As Byte , A As Byte , C As Byte , Reload As Long , Asend As Byte , Csend As Byte
Asend = 10
Csend = 10
T = 0
Set Portb.3

On Int1 Send Nosave


Do

Getrc5(a , C)
If C <> 255 Then

Lcd C
Lcd " "


End If

Loop

Send:

Rc5send T , Asend , Csend
Return

-tomas-
07.06.2006, 21:46
Du schreibst:

On Int1 Send Nosave
ohne die Register in der ISR zu sichern.

dass er nach dem interrupt leider nicht mehr richtig empfängt. das lcd zeigt dann immer 32" an
Die ISR überschreibt Deine Variablen.

Nehme Nosave raus und erhöhe
$hwstack = 64 (davon 32 für eine ISR)

P_II
09.06.2006, 09:27
habe ich gemacht. bringt aber keine verbesserung. ich habe jetzt heraus bekommen, dass das problem nicht bei getrc5 sondern beim lcd liegt. der empfang stimmt aber wird leider nicht richtig angezeigt. kann es sein, dass lcd und rc5send irgendwas gemeinsam verwenden(timer....). aus der hilfe werde ich leider nicht schlau.

-tomas-
09.06.2006, 23:33
Ich kenne Deine Schaltung nicht (AT90S2313 ?)


kann es sein, dass lcd und rc5send irgendwas gemeinsam verwenden
Klar :-)
Du schreibst:
Config Lcdpin Db5 = Portb.3
das ist jedoch gleichzeitig Dein Ausgabeport von RC5Send beim AT90S2313 (portB.3 =OC1A)

Wenn Du unsicher bist, kürze den Code und werfe den Interrupt raus.
Bringe die Bascom-Samples zum laufen.
Immer einen Schritt nach den anderen.

P_II
10.06.2006, 08:38
Upps das kommt davon wenn man per drag and drop programmiert. :-b

danke. werde es gleich mal richtig probieren.