Der Vorteil gegenüber "normalen" PWM ist, es funktioniert auf jeden Pin!
Nachteile werden sich ergeben, wenn der 328 noch was anderes tun soll.
Aber so gehts erstmal!
Bei t = 10µS erhalte ich immer eine Taktfrequenz von 36KHz !
t muss nun abhängig vom analogeingang mehr oder weniger werden.
Wenn du bei deinen einzelnen Bit Einstellungen durchblickts, dann ist gut, liest nur ungern jemand anderes. Zudem es leichter ist das gesamte Register zu nullen und dann nur die gewünschten Bits zu setzen.
Wegen den Pins. Du musst beim Timer nicht die zugehörigen Hardware Timer Pins verwenden. Du kannst auch eine der ISRs nutzen. Compare Match ISR zum Bsp. Darin kannste irgendeinen Pin toggeln lassen. Damit bist du auch unabhängig. Die Totzeit kann man dann garantiert in einer Abhängigkeit programmieren. analogWrite zu nutzen bringt dann aber nichts mehr. Weil 255 nicht mehr 100% entspricht. Du müsstest dich dann tiefer mit dem Timer an sich befassen.
danke für den Tip!
das lässt sich wirklich besser lesen!
Aber was hälst Du denn von der Methode, per FastDigitalWrite das zu realisieren?
Könnte man das auch in einem IRQ laufen lassen, so daß die Ausgabe immer gemacht wird und in der loop dann,
wenn Zeit ist, die AnalogEingänge gelesen werden?
alles was du in der loop machst, verändert die Frequenz deiner Pins. Das sollte dir bewußt sein. Da hilft auch kein FastDigitalWrite. Außer! die loop macht nur das, wirklich nur das alleine.
Das was du mit der IRQ ansprichst, meinte ich mit dem Timer ISR. Interrupt Service Routine vom Timer. Die läuft dann Timer präzise regelmäßig ab. Was du darin machst ist dann deiner Fantasie überlassen. Jeder Timer hat mehrere verschiedene ISRs die man nutzen kann.
na meine Routine im IRQ laufen lassen!
Sorry, aber mit den Timern und IRQs hab ich mich nur auf dem alten 8Bit ATARI unter Assembler beschäftigt, auf nen µC noch nicht!
na schon in einem Interrupt, dass ist klar. Nur attachInterrupt ist für externe Eingangssignale gedacht. Die Pins können sich nicht selbst aufrufen. Geht nicht. Dafür ist der Timer angedacht, der sehr präzise seine Runden dreht und eine gewünschte Interrupt Service Routine aufruft. Wenn du das alles schon einmal gemacht hast, wirste da sehr schnell wieder Zugang finden. Das Prinzip ist gleich. Nur andere Namen für die Settings und ISRs. Das wird schon.
doch kann man. 328er .pdf Manual, ab Kapitel 19 gehts mit Timer 0 los. Timer 1 wäre Kapitel 20.
Extern takten lassen wäre am Pin T0 bzw. T1.
Ne combie, am Quarz muß man nicht rumfummeln. Der Timer wird nur einfach durch einen anderen Takt, extern weitergezählt. Das ist unabhängig vom eigentlichen µC Takt.