Go Down

Topic: SPI et utilisation de Timer0 (ou 1) (Read 633 times) previous topic - next topic

comode

Bonjour,

J'essaye de réaliser un petit sketch qui me permettrait d'échantillonner une valeur analogique sur ADC0 à 8Khz. Théoriquement, le µC peut le supporter.

Pour ce faire, j'utilise l'auto-triggering du convertisseur analogique, que j'associe au Timer0 (je n'utilise pas les delay()) ou au Timer1 (pour test). Je l'aurais bien mis sur le Timer2, mais il n'est pas possible d'activer l'auto-trigger dessus.

Bref, tant que je ne fais que ça, ça fonctionne. Pour tester, j'ai mis un transistor et un haut parleur sur une sortie, et j'intervertis haut/bas à chaque interruption. J'entend donc un sifflement aigu de 8khz.

Si jamais je rajoute quelque part un serial.begin() ou un spi.begin(), là, c'est le drame... J'ai plus de son du tout avec le Serial, et un son plus grave avec le SPI, ce qui m'amène à penser que ces 2 librairies utilisent les registres de Timer0...

Donc 1er question, est-ce que quelqu'un peut confirmer que l'usage de Timer0 est incompatible avec l'usage des librairies SPI et Serial ?

Par ailleurs, je n'ai pas eu de meilleurs résultats en utilisant Timer1... En cherchant dans la datasheet de l'atmega328, il semble que Timer0 et Timer1 utilisent le même préscalaire... Donc soit j'ai mal compris, soit ça rend impossible l'usage de Timer1 avec les 2 librairies prè-cités... C'est le cas ?

Dans l'hypothèse où j'aurais juste, ça serait dramatique pour moi, car à 8Khz, je pense que les librairies Arduino seraient trop lourdes pour supporter la cadence d'échantillonnage sans faire péter la pile (temps d'échantillonnage > intervalle entre 2 échantillonnage). Ma seule option serait donc de réinventer la roue et de reprogrammer ces class... mais est-ce possible d'utiliser au moins le bus SPI sans que cela est la moindre incidence sur le Timer0 ?

En vous remerciant par avance

comode

J'allais publié un code épuré pour démo, mais je crois que se faisant j'ai compris ce qui déconnais : je créais 2 interruptions sur le timer0 (un CTC + autotrigger). et en enlevant le CTC, bha la fréquence ne change plus et le serial remarche... Je ne comprend pas pourquoi...

En attendant les prochains problèmes, merci et désolé pour le faux message (mais je suis content de savoir que ces lib n'utilisent pas de timer).

Go Up