Ik heb een usb servo gemaakt op basis van AVR-USB
De attiny loopt op 16.5Mhz (interne osc + pll).
Nu heb ik de servo in software gebouwd (timer op ~69Hz, in de interrupt PORTB bitje aan, dan een _delay aanroepen, en dan het bitje weer uit).
Maar de interrupts van de USB zorgen ervoor dat de timing van de puls niet helemaal constant is, waardoor de servo een heel klein beetje blijft bewegen.
Nu wou ik de servo met de hardware pwm mogelijkheid aansturen, maar in alle voorbeelden die ik erover zie wordt er een 16 bit teller gebruikt, en die heeft de attiny45 helaas niet.
De attiny heeft 2 8-bit tellers die de pwm aansturen, maar als he dat hetzelfde zou gebruiken als de 16-bit tellers kom je bij het probleem dat je maximaal maar 13 stappen zou kunnen halen in het bereik van 1-2 millisecondes die je hebt om de servo aan te sturen.
Het idee is dat dat ongeveer elke 20ms (50Hz) een puls van 1-2ms gestuurd wordt waarvan je de pulsbreedte kan instellen.
Zijn er intressante mogelijkheden in de avr's waardoor dit wel kan? Gaat er vooral om dat de pulsbreedte constant is.
De attiny loopt op 16.5Mhz (interne osc + pll).
Nu heb ik de servo in software gebouwd (timer op ~69Hz, in de interrupt PORTB bitje aan, dan een _delay aanroepen, en dan het bitje weer uit).
Maar de interrupts van de USB zorgen ervoor dat de timing van de puls niet helemaal constant is, waardoor de servo een heel klein beetje blijft bewegen.
Nu wou ik de servo met de hardware pwm mogelijkheid aansturen, maar in alle voorbeelden die ik erover zie wordt er een 16 bit teller gebruikt, en die heeft de attiny45 helaas niet.
De attiny heeft 2 8-bit tellers die de pwm aansturen, maar als he dat hetzelfde zou gebruiken als de 16-bit tellers kom je bij het probleem dat je maximaal maar 13 stappen zou kunnen halen in het bereik van 1-2 millisecondes die je hebt om de servo aan te sturen.
Het idee is dat dat ongeveer elke 20ms (50Hz) een puls van 1-2ms gestuurd wordt waarvan je de pulsbreedte kan instellen.
Zijn er intressante mogelijkheden in de avr's waardoor dit wel kan? Gaat er vooral om dat de pulsbreedte constant is.