Hallo Forum! Ich bastle zur Zeit an einem kleinen Weihnachts-Projekt, bei dem 3 mal 2 LEDs mittels eines ATtiny10 einzeln heller und dunkler gedimmt werden sollen. Konkret geht es um mit Knopfzellen CR1216 betriebene Ohrringe. Einzeln blinken lassen kann ich die Teile, aber ich möchte eben eine Art pulsierendes Dimmen auf drei Kanälen erreichen. Auf zwei Kanälen ist das dank des internen Hardware-PWM-Moduls sogar mir möglich, für den dritten Kanal muss ich aber eine Implementierung in Software schreiben. Im angehängten Code habe ich versucht, den "zweiten Versuch" von hier https://www.mikrocontroller.net/articles/Soft-PWM mit weniger PWM-Frequenz und -Auflösung in einen 1MHz ATtiny zu implementieren. Erst mal mit vorgeschriebenen PWM-Werten, um das Fehlerrisiko zu minimieren. Was passiert ist aber folgendes: Die Pins PB0, PB1 und PB2 gehen auf low und alle LEDs leuchten mit voller Leuchtkraft (sind active low). Ich kann und möchte stumpfe Fehler nicht ausschließen, komme hier aber nicht mehr weiter. Offenbar initialisiert der Prozessor die Pins als Ausgänge, geht standardmäßig auf low und verbleibt dann da, weil er nie in die ISR kommt. Entweder läuft der Timer nicht an oder der Interrupt wird aus anderen Gründen nicht aufgerufen. Im angehängten Code läuft der Timer mit noch höherem Prescaler (64 glaube ich), das war eine meiner Testmaßnahmen, weil ich nicht weiß, ob der Timer-Takt der Systemtakt ist (also 1MHz) oder der Takt des internen Oszillators (8MHz). Edit: Hier das verwendete Datenblatt: http://ww1.microchip.com/downloads/en/DeviceDoc/atmel-8127-avr-8-bit-microcontroller-attiny4-attiny5-attiny9-attiny10_datasheet.pdf
Gast
#6500954
Fehlt da nicht am Ende von main eine Endlosschleife?
Tatsache. Ich wusste, es war was einfaches! Vielen Dank! Dann kann ich ja jetzt ans Optimieren gehen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.