Gast
#4848871
Hallo zusammen, da ich mich mit den tinyAVR nicht auskenne, hier eine Frage an die Experten. Ich muss mit so wenig aufwand wie möglich ein 50us und 36us Impuls von 1us länge erzeugen. Die Impulse müssen exakt sein, also nicht über Software wie eine if-then-else und Timerabfrage emuliert werden. Es muss also ein echter Timer im spiel sein. Am besten zwei Reload timer die als Abwärtszäler arbeiten, die mit 1us getaktet werden. Beim einen ist der Reload Wert 49 und beim anderen 35. Wenn die Zähler auf 0 sind, geht je ein Pin auf H und dann erfolgt das Nachladen des Wertes. Welcher tinyAVR bringt die notwendige Hardware mit? Eine weitere Möglichkeit wäre, wenn der uC bei einem /WR Zugriff auf einen 8 bit Bus 2 Byte einlesen könnte, und je nach 2bit-Wert 00 kein Impuls 01 50us Impuls und 10 36us Impuls ausgeben würde. Der /WR müsste dann durch einen Interrupt den Datenbus D0..1 einlesen, den Timer/Counter aktivieren und je nach 2bit-Wert den Reload mit 49 oder 35 beschreiben. Welcher tinyAVR könnte das erledigen und hätte die nötige Hardware an Bord? Die dritte Möglichkeit ist die einfachste, aber gleichzeitig die schrägste. Das kleinste gemeinsame Vielfache von 50 und 36 ist 450. Bei einer Taktung von 1Mhz müsste ich 449 Befehle hinter einander schreiben und dann wieder an den Anfang springen. Die Befehle lauten dann entweder NOP oder Set P0.0 oder Set P0.1 oder Jmp 0000. Die Reihenfolge der Befehle müsste dann so aneinander gereiht werden, dass an P0.0 ein 50us Impuls entsteht und an P0.1 ein 36us. Sprich 35mal NOP, dann Set P0.1, dann Clr P0.1, dann 14 NOP gefolgt von Set und CLR P0.0 und immer so weiter. Geht das und wenn ja, mit welchem tinyAVR? Viele Grüße heiha