Okay. also muss ich wohl oder übel doch den Bot nochmal komplett zerlegen^^
Schade, wird wieder viel Arbeit xD
Werd das dann mal die nächste Woche angehen und Bericht erstatten ^^
Okay. also muss ich wohl oder übel doch den Bot nochmal komplett zerlegen^^
Schade, wird wieder viel Arbeit xD
Werd das dann mal die nächste Woche angehen und Bericht erstatten ^^
Es gibt keine Probleme, es gibt nur Lösungen
...oder man schaut ins Datenblatt! Da steht folgendes:Wenn man in der Serviceroutine die Löschung des IRQ-Flags unterlässt, wird derselbe IRQ immer und immer wieder ausgeführt und der Prozessor kommt nicht mehr zur Bearbeitung des Hauptprogramms.
Nun weiss ich aber nicht wie Bascom das handhabt; dazu müsste sich ein Kenner äußern.
"When an event on the INT0 pin triggers an interrupt request, INTF0 becomes set (one). If the Ibit
in SREG and the INT0 bit in GICR are set (one), the MCU will jump to the corresponding
Interrupt Vector. The flag is cleared when the interrupt routine is executed"
Heißt also im Klartext, dass das IRQ-Flag automatisch gelöscht wird, wenn die ISR ausgeführt wird. Soviel ich weiß gilt dies für alle Interrupts in allen AVR-Controllern. Und da die Löschung des IRQ-Flags auf Hardware-Ebene geschieht, ist es auch egal welche Sprache man zum programmieren des Controllers verwendet!
Danke dir, Sauerbruch, für die Korrektur!
Hab ich nicht gemacht, weil es nicht meine µC-Welt ist. Da habe ich mir wohl aus früheren Threads zu AVR-Interrupts falsch zusammengereimt, dass es mit dem Löschen der IRQ-Flags gleich wie bei den PICs wäre.
Eine Fehlerquelle weniger, das macht ja auch Sinn. Wieder was gelernt.
Gruß
RoboHolIC
Beim AVR hat jeder Interrupt eine eigene ISR. Entsprechend kann die Hardware das Interruptflag auch löschen. Beim PIC geht das nicht, weil man die Flags ggf. noch braucht um die genaue Interruptquelle zu finden.
In der Regel löscht die Hardware beim AVR auch das Interruptflag. Es gibt aber wohl ausnahmen bei der UART / USI, wo man man die Empfangenen Daten auslesen muss zum löschen. Aber das macht man in der ISR in aller Regel sowieso.
Also hab jetzt mal den Bot auseinander gebaut und nachgeschaut. Der Inkrementalgeber funktioniert soweit noch. Das Problem ist wohl, dass die Inkrementalscheibe beim Zusammenstecken des Getriebes nicht richtig gerade drin sitzt und dadurch kein sauberes Signal entsteht.
Da muss ich mir jetzt was einfallen lassen. Aber bin erstmal froh, dass die Elektrik funktioniert
So schaut das Teil von innen aus:
![]()
Es gibt keine Probleme, es gibt nur Lösungen
Hast du wirklich gemessen, ob/dass die Geberausgänge bei optimaler Stimulation bessere Signale geben können als die, die du anfangs gezeigt hattest? Sonst könnte das Problem ja doch in der Elektronik liegen.
Kann man denn ein "eiern" der Segmentscheibe beobachten? Beim Asuro ist das Problem wohl häufig das axiale Spiel der Segmentscheibe; es lässt sich anscheinend mit Passcheiben in den Griff kriegen.
Sieht die Segmenscheibe wirklich richtig kräftig schwarz und weiß aus? Reflexkoppler leben ja vom Kontrast der Segmentscheibe (Strichscheibe).
Lesezeichen