Perturbation module Bluetooth et TIMSK1

Bonjour,

Je suis en train de réaliser un projet permettant d'afficher des informations sur un écran LED à l'aide d'une télécommande Bluetooth.

Ce projet est composé de 2 boîtiers :

Boitier 1 (Télécommande):

Ce boitier est composé :

Boitier 2 (Ecran) :

Ce boitier est composé :

Lorsque je fais mes tests de connexion Bluetooth sans brancher l'écran, pas de soucis.
Mon test simple consiste à envoyer un caractère à intervale régulier.

Je branche l'écran. Pas de soucis.

Par contre dès que je l'utilise (en utilisant juste la fonction d'initialisation (sans rien afficher)), je reçois des caractères aléatoires (un coup le bon caractère, un coup n'importe quoi).

Pour l'écran j'utilise les librairies proposées par Adafruit :

Du coup, j'ai tracé le code pour savoir ce qui perturbait la réception Bluetooth.

Et il semble que ça soit cette ligne :

TIMSK1 |= _BV(TOIE1);

Dès que je commente cette ligne, l'écran n'affiche plus rien MAIS mon bluetooth refonctionne comme avant !

Voici mes question :

  • J'ai lu que cette variable permettait de changer le Timer de la carte Arduino via Interruption mais c'est assez obscur pour moi qui suis débutant. Pourquoi cette ligne perturbe-t-elle la réception de mon module Bluetooth ?

  • Comment contourner ce problème ?

Un grand merci pour votre aide.

Marsu

Quelqu'un pour m'aider s'il vous plait ? Je suis un peu dans une impasse... merci. :sweat_smile:

Je ne connais rien au bluetooth mais ce que tu as écrit :

TIMSK1 |= _BV(TOIE1);
......./.................
J'ai lu que cette variable permettait de changer le Timer de la carte Arduino via Interruption mais c'est assez obscur

n'est pas juste.

La lecture de la datasheet donne :

• Bit 0 – TOIE1: Timer/Counter1, Overflow Interrupt Enable
When this bit is written to one, and the I-flag in the Status Register is set (interrupts globally
enabled), the Timer/Counter1 Overflow interrupt is enabled.

The corresponding Interrupt Vector (See ”Interrupts” on page 57) is executed when the TOV1 Flag, located in TIFR1, is set.

C'est pour autoriser le Timer à générer une interruption sur dépassement de capacité.

Reste à savoir pourquoi l'interruption générée par le timer entre en conflit avec autre chose.
Voila ma maigre participation.