Qu'est-ce que Lecture-modification-écriture ?

Suite d'opérations consistant à lire une valeur, en modifier une partie et la réécrire. Si elle est interrompue en cours, d'autres modifications peuvent être perdues.

Nom japonais: 読み出し・変更・書き込み

« Lecture-modification-écriture » apparaît dans 1 questions d'entraînement réparties sur 1 thèmes, dont Systèmes embarqués et firmware.

Domaine: Systèmes embarqués et firmware

S'entraîner : questions sur Lecture-modification-écriture

Pendant que le traitement principal manipule un bit de registre par « reg |= mask; » (lecture-modification-écriture), si un gestionnaire d'interruption modifie un autre bit du même registre, quelle combinaison de problème possible et de remède est correcte ?

  1. ALa modification faite par l'interruption est effacée par la réécriture du traitement principal. On interdit les interruptions pendant l'opération ou l'on utilise des registres dédiés de mise à 1 et de mise à 0 par bit
  2. BLe registre est détruit et devient inutilisable. On remplace le microcontrôleur
  3. CRien ne se produit. Aucun remède n'est nécessaire
Afficher la réponse et l'explication

Réponse : A. La modification faite par l'interruption est effacée par la réécriture du traitement principal. On interdit les interruptions pendant l'opération ou l'on utilise des registres dédiés de mise à 1 et de mise à 0 par bit

« reg |= mask » comporte trois opérations : lire le registre, appliquer le OR, réécrire. Si une interruption survient juste après la lecture et que le gestionnaire modifie un autre bit, le traitement principal réécrit à partir de l'ancienne valeur lue avant l'interruption, et la modification du gestionnaire est perdue. En interdisant les interruptions pendant l'opération, ou en utilisant des registres de mise à 1 et de mise à 0 où seuls les bits écrits à 1 changent, une seule écriture suffit et le problème disparaît.

Questions mentionnant « Lecture-modification-écriture » (1)

  1. Pendant que le traitement principal manipule un bit de registre par « reg |= mask; » (lecture-modification-écriture), si un gestionnaire d'interruption modifie un autre bit du même registre, quelle combinaison de problème possible et de remède est correcte ?

Termes associés

Gestionnaire d'interruption Interruption Anti-rebond (debounce) Capture d'entrée (input capture) Chargeur d'amorçage (bootloader) Chien de garde (watchdog timer) Débit en bauds Détection de baisse de tension (brown-out) GPIO Héritage de priorité

Retour au glossaire