hy
so hab ma das nochmal angschaut also
@ stromi
' Interrupt Int0 config
On Int0 Irq0
steht doch eh vor do
oder muss man die flanke nicht nehmen falling/rising?
jedenfalls hab ich ma mal dacht wenn ich schon ein lcd hab, dann lass ich mal den irq0 anzeigen, gut ein paar programmzeilen eingebaut:
hängt nix & berührung mit finger zählt er hoch teilweise schon wenn ein kabel hängt.
häng ich den optokoppler ausgang dazu, bleibt er stehen und zählt nix, auch dann nicht wenn impulse kommen sollten
häng ich den widserstand von int0 gegen vcc tut sich das selbe nichts
also überhaupt keine zählung
ich denk mal es liegt an dem optokoppler, wie könnte man den am besten ohne AVR testen, hab leider nur so ein mist messgerät das ströme >30ma nur schlecht anzeigt oder gar nicht, bzw beim diodentest bin ich mir auch nicht sicher
aber müsste eigentlich mit einer led am ausgang vomoptokoppler funktionieren?! led dann wieder mit47k gegen vcc??
mfg
piri
aja hier code inklusive int0 auswertung am display
Code:
$regfile = "m8def.dat"
$baud = 9600
$crystal = 8000000
Config Pinb.2 = Input
Config Portb.1 = Output
'LCD-Ausgabe
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2
'' Interrupt Int0 config
Config Int0 = rising
On Int0 Irq0
Enable Interrupts
Enable Int0
Dim Irq0 As Word
Do
Cls
Cursor Off
Lcd Irq0
Print
''abfrage ob taste gedrückt & Kontrolle ob irq0 noch nicht über 800
Abfrage:
If Pinb.2 = 0 Then
Gosub Rauf
End If
Waitms 100
If Irq0 > 250 Then
Gosub Halt
Else
End If
Loop
'' bei Int0 wird irq0 um 1 erhöht
Irq0:
Incr Irq0
Return
'' wenn 800 impulse ereicht dann motor stopp
Halt:
Irq0 = 0
Portb = &B00000000
Waitms 100
Return
'' wenn 800 interruptimpulse noch nicht erreicht sind motor läuft weiter
Rauf:
Portb = &B11111111
Waitms 100
Return
Lesezeichen