hi,
ich versuche gerade einen Gleichstrommotor mit Hilfe einer herkömmlichen
Multi-Fernbedienung, einem IR-Sensor (TSOP 1736, Datenblatt:
http://www.scribd.com/doc/13663771/tsop1736) und einem
Microcontroller-Board (AT89S8253) zu realisieren. Die Fernbedienung hab
ich auf den RC5-Code programmiert. Glaub ich zumindest, das Signal der
Taste 1 entspricht laut Oszi auf jeden Fall dem des RC5-Codes. Den
Empfänger hab entsprechend dem Datenblatt aufgebaut, allerdings hab ich
den 10k-Widerstand durch einen 1k-Widerstand ersetzt, da es trotzdem
noch zu Schwingungen beim Signal gekommen ist, wenn der Empfänger mit
dem Microcontroller verbunden war. Den Empfängerausgang hab ich an einem
beliebigen PIN angeschlossen. NUN zur Programmierung:
1
CSEGAT0
2
3
;IR-Signal-Auswertung
4
IRinputBITP1.3
5
IRCodeDATA7fh
6
IRempfadrDATA7eh
7
8
;ZuweisungderFernbedinung
9
10
IRrechtsEQU00101110b
11
IRlinksEQU00101011b
12
IRvorEQU00101101b
13
IRzurueckEQU00101100b
14
IRstoppEQU00101111b
15
16
;Gleichstrom-Motor-Steuerung
17
MotorenDATAP2
18
MstoppEQU00000000b
19
MvorEQU11001100b
20
MzurueckEQU10101010b
21
MrechtsEQU11001000b
22
MlinksEQU10001100b
23
24
LEDsDATAP0
25
26
start:
27
MOVMotoren,#Mstopp
28
29
;RC5-Empfang
30
31
ireinlesen:
32
JBIrInput,ireinlesen
33
CLRA
34
LCALLZeit34
35
MOVB,#7
36
loopAdr:
37
MOVC,IrInput
38
RLCA
39
LCALLZeit
40
DJNZB,loopAdr
41
ANLA,#00111111b
42
MOVIRempfadr,A
43
CLRA
44
MOVB,#6
45
loopDaten:
46
MOVC,IrInput
47
RLCA
48
LCALLZeit
49
DJNZB,loopDaten
50
MOVIRcode,A
51
CALLzeit
52
CALLzeit
53
54
;EndeRC5-Empfang
55
MOVA,IRempfadr
56
ANLA,#11011111b
57
JNZIReinlesen
58
59
;Motorsteuerung
60
MOVA,IRcode
61
CJNEA,#IRrechts,m1
62
MOVmotoren,#Mrechts
63
SJMPanzeigen
64
m1:
65
CJNEA,#IRlinks,m2
66
MOVmotoren,#Mlinks
67
SJMPanzeigen
68
m2:
69
CJNEA,#IRvor,m3
70
MOVmotoren,#Mvor
71
SJMPanzeigen
72
m3:
73
CJNEA,IRzurueck,m4
74
MOVmotoren,#Mzurueck
75
SJMPanzeigen
76
m4:
77
CJNEA,IRstopp,anzeigen
78
MOVmotoren,#Mstopp
79
SJMPanzeigen
80
81
;LED-Anzeige
82
anzeigen:
83
MOVLEDs,IRCode
84
SJMPIReinlesen
85
86
;Zeitverzögerung1768us
87
Zeit:
88
MOVR6,#5
89
loop1:
90
MOVR7,#172
91
loop0:
92
DJNZR7,loop0
93
DJNZR6,loop1
94
RET
95
96
;Zeitverzögerung1328us
97
98
Zeit34:
99
MOVR6,#5
100
loop3:
101
MOVR7,#131
102
loop2:
103
DJNZR7,loop2
104
DJNZR6,loop3
105
RET
106
107
END
Das Programm ist äußerst schlecht kommentiert, ich weiß! Aber wer fragen
hat kann diese ruhig stellen. Wenn ich das Programm auf den
Microcontroller (Flashspeicher) spiel, passiert aber an den Ausgängen
vom Motortreiber nichts, nada! Hardware-Fehler dürften es nicht mehr
sein, darum suche ich jetzt Fehler in der Software. Vllt kann mir ja
einer von euch bei der Suche helfen. Ganz bin ich aus dem Programm auch
nicht schlau geworden. Soll dieses Programm nur abändern, hab es nicht
selbst geschrieben. Zu den einzelnen Stellen. Die Zeitverzögerungen sind
klar, LEDAnzeige auch, Motorsteuerung und auslesen der 6 Kommandobits
auch. Nur wie kommt der Autor des Programms auf z.B. diese Zuweisung:
1
IRrechtsEQU00101110b
Diese entspricht nach einer Überprüfung des Signals mit dem Oszi nicht
den 6 Kommandobits. Bin für jede Hilfe dankbar.
so long, lg slimer
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.