Ist das derselbe Code, den Du auch mir verlinkt hattest? Die .zip lad ich mir nicht aufs Mobile...
Im mir vorliegendem Code hast Du ja die TOV0-ISR auskommentiert, der Interrupt wird aber trotzdem freigegeben, der Timer gestartet. somit werden die IRQs auch ausgelöst.
Die außerdem verwendeten IRQs (OCIE1A und INT0) besitzen eine höhere Priorität, stehen davor in der IVT.
Ich weiß jetzt nicht, wie C das handhabt, Bascom beschreibt die IVT regulär mit RETIs, in ASM ist das ja generell Sache des Programmierers...
Default stehen da ja NOPs (No Operations) drin.
Wenn C die da läßt, und der Interrupt zuschlägt (bei jedem Überlauf von T0), wird also die IVT angesprungen. Da steht am Einsprungpunkt ein NOP, also macht der Controller einen Takt nichts, und mit der nächsten Zeile weiter. Das ist ein weiteres NOP (UART-RX-IRQ-Einsprungpunkt) usw usw. Die verwendest Du ja alle nicht - überall ein Takt nichts tun.
Nach der IVT folgt dann der Code der Main (wo Du die IRQs wieder freigibst) und die leere loop, die solange läuft, bis Du entweder INT0 auslöst, oder der TOV0 wieder zuschlägt.
Außerdem müßte es irgendwann zu einem Stacküberlauf kommen (IRQs werden nach dem TOV0 ja in der main trotzdem wieder freigegeben, aber es wird nie aus der "ISR" zurückgekehrt (also die Adresse vom Stack gepoppt).
Du hättest dann mit dem TOV0 sowas ähnliches (!!) wie 'nen automatischen Reset realisiert. Register, SRAM usw werden zwar nicht(!
) zurückgesetzt, das Programm startet aber trotzdem jedesmal neu.
Wie gesagt, ne mögliche Erklärung...
Trotzdem hat der Ansatz nicht allzu viel mit meinem Vorschlag zu tun.
Außerdem sind in dem Konzept einige Unstimmigkeiten/Unklarheiten, deswegen:
Hindert Dich irgendwas daran, das ganze(!) Projekt mal komplett(!) offen in einem neuen Thread zu schildern?
Stehst Du irgendwie (->Zukunftstag) unter Zeitdruck, oder könntest Du das ganze nochmal komplett neu angehen?
zB warum der SoftPWM? Warum immer 4 Pins simultan? Was für LEDs sind da wie angekoppelt? (macht vielleicht ein, durch den Tiny angesteuerter LED-Treiber Sinn?)
Dann hast Du ja auch noch ein paar, noch nicht realisierte Andeutungen drin. Mit dem SOS und dem Auto-Off benötigst Du ja ne Möglichkeit, sowas wie "Programme" (zeitlich getaktete Makros) abarbeiten zu können.
Mein Vorschlag: Hosen runter
I 'nem neuen Topic stellst Du Dein Ziel vor, also auch alles, was vielleicht noch rein soll. Insbesondere auch Fakten zu den LEDs usw.
Dann Kannst Du Deine eigenen Ansätze schildern, und auf unsere Vorschläge warten. Dino hat mit seinem Zauberstab ja was ähnliches realisiert - wenn sicher auch komplexer.
Wenn Du Dich dann für 'ne grobe Richtung entschieden hast (in seiner Gesamtheit), machst Du Dir Gedanken um das eigentliche Konzept Programmablaufplan), wo sicher auch wieder Vorschläge/Hinweise/Kritiken zu erwarten sind, als letztes gehts an die Implementierung.
Dinos Thread zum Magierstab kennst Du ja sicher, ich hatte auch mal mit dem Tiny2313 'ne dimmbare Lampe realisiert (wo der Tiny eigentlich nur UART-Kommandos von'nem PC auf das PWM-Dimming über einen LM3407 oder so umgesetzt hat. Das Teil befindet sich jetzt übrigens in irgendeiner Beamline vom ESRF.)
Hier im Forum existiert noch irgendwo ein Bild von einem Teil (Beschaltung des Treiber-ICs) der Schaltung.