mit Gleichstrommotor, Gabellichtschranke mit
2-Lochscheibe (4mm Bohrungen)
Motorregler Schaltplan
.include
"C:\Programme\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn13def.inc"
.def A = r16
.def C = r17
.def C1 = r18
.def Flag = r19
.def soll =
r20
.def soll1 = r21
.def timer = r22
.def dem = r23
.def wait = r24
rjmp Anfang
.org 0x0001
rjmp EXT_INT0
Anfang:
;init
PWM
sbi ddrb,
0 ;Datenrichtung
PB0 auf Ausgang
ldi A,
0x83 ;nur Kanal
A
out TCCR0A, A
ldi A,2
out TCCR0B, A
;Vorteiler /8
ldi A,
25
;Motoranlauf
out OCR0A, A
;init
Interrupt
ldi A,
3
;Auslösung neg.Flanke
out MCUCR, A
ldi A, 0x40
out GIMSK,A
;Enable
sei
;Globaler Interrupt
frei
ldi timer,50
;Startwert
Schleife:
ldi wait,25
;Anpassung an 2
Lochscheibe
Bremse:
dec wait
brne
Bremse
ldi soll,128
;Solleingabe
cpi
timer,255
;Verhinderung timerüberlauf
breq OV
inc timer
OV:
mov
C,timer
mov
soll1,soll
cp
soll,C
;Soll / Ist-Vergleich
brlo negativ
sub soll1,C
;-xw, Motor zu schnell
sub soll,soll1
mov
dem,soll
;Demand
rjmp Schleife
negativ:
mov C1,C
sub
C1,soll1
;+xw; Motor zu langsam
add soll,C1
mov
dem,soll
;Demand
rjmp Schleife
EXT_INT0:
sbrc Flag,0
rjmp
stop
ldi timer,0
;Timer löschen
ldi Flag,
1 ;setze
flag
reti
stop:
mov
C,timer ;Zählerstand = 1/2 Umlaufzeit
ldi
Flag,0 ;lösche
Stopflag
out OCR0A,dem
;Ausgabe
reti
Rolf Grauer, 06.10.2024