vielen Dank für die Antworten. habe den code wie folgt verändert:
Wait in ISP entfernt und nur schalter setzen... - leider ohne erfolg. Das servo zuckt immer noch nicht. Nur manchmal geht es eine sechstel umdrehung weiter - ist aber nicht davon abhängig, ob der magnet grade vorbei ging oder nicht. - ein sehr merkwürdiges verhalten. Mit dem Multimeter habe ich den Strom gemessen, der sich beim vorbeifahren des Magneten vom Output des Hallsensors verändert. Da scheint alles soweit in Ordnung zu sein. Also wenn der Magnet davor ist schaltet der Ausgang auf Low sodass eine Differenzspannung zu Plus und dem Ausgang in Höhe der eingegebenen Spannung (hier 12V) herrscht.
Die für die vorgeschlagene Schaltung notwendigen Teile müsste ich erst noch bestellen - Ein weiterer Test mit der Schaltung kann daher also bis ende nächster Woche dauern.
Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000 'Quarzfrequenz
$baud = 9600
Declare Sub Rnb_servo(byval Servonummer As Byte , Byval Position As Byte)
Config Int0 = Low Level 'Interrupt bei steigender Flanke
On Int0 Irq0 'Festlegen wo bei externem Interrupt hin gesprungen wird
Enable Int0 'Diesen Interrupt aktivieren
Enable Interrupts 'Alle aktivierten Interrupts einschalten
Dim Irqschalter As Integer 'Schalter für Interrupt definieren.
Irqschalter = 0
Do
If Irqschalter = 0 Then
Call Rnb_servo(1 , 1)
Waitms 1000
Else
Call Rnb_servo(1 , 255)
Waitms 1000
End If
'goto IRQ0
'$PROG &HFF,&HEF,&HD9,&H00' generated. Take care that the chip supports all fuse bytes. Goto Irq0
Loop
Sub Rnb_servo(byval Servonummer As Byte , Byval Position As Byte)
Print "#s" ; Chr(servonummer) ; Chr(position)
End Sub
End
Irq0:
Irqschalter = 1
Return
Lesezeichen