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







Zitieren

Lesezeichen