Power down problème avec le mode timer 0 int - Solution trouvée!

S

seemanta

Guest
Salut,
J'ai observé que, après de s'endormir et de se réveiller, mon timer 0 gestionnaire d'interruption ne soit pas appelée.

Mon problème est le suivant:

Mon micro reçoit une interruption externe à chaque seconde d'une horloge temps réel.Cette interruption externe est lié à / INT0 du micro.

J'ai besoin d'allumer une LED pendant 10 secondes (alarme visuelle).J'ai calculé combien de fois timer 0 déborderait dans 10 secondes.Appelons ce chef d'accusation n '.Alors, à mon timer 0 ISR, je garde un compte combien de fois le rapport de recherche internationale a été appelée.Lorsque ce nombre correspond à 'N' je sais que 10 secondes se sont écoulées, puis je referme la LED vers le bas.

Le problème que je fais face est que si je vais éteindre le mode entre les interruptions RTC, mes LED continue de clignoter et ne s'arrête jamais.Fondamentalement le comte n 'est jamais parvenu.

Toutefois, si je décide d'aller au mode d'attente au lieu d'éteindre le mode, tout fonctionne, et mon voyant ne s'allume pas après 10 secondes.

D'une certaine façon je crois que cela est dû à l'oscillateur s'arrêtant dans power down mode et ne pas s'arrêter en mode inactif.Mais je ne suis pas en mesure de déterminer le lien exact.

S'il vous plaît quelqu'un peut-il suggérer ce qui se passe ici?Merci d'avance!

observe,
SeemantaAjouté après 2 heures 13 minutes:J'ai obtenu la cause de ce problème!Je voulais simplement partager avec le reste de la edaboard'ians.

Eh bien, puisque l'oscillateur gèle entre chaque interruption, le TH0 et registres TL0 congèlent aussi l'époque où le micro est toujours au pouvoir vers le bas.

C'est pourquoi tout cela ralentit efficacement vers le bas, car pour atteindre le nombre de «micro n'the doit consacrer plus de temps que ce qu'elle aurait passé avec l'oscillateur de fonctionner tout le temps.

Je devine, c'est la première fois que quelqu'un a posté le problème et la solution aussi bien!

Espérons que cela aidera quelqu'un à l'avenir face au même problème que
Moi aussi face!

observe,
Seemanta

 
Salut,

Merci beaucoup pour le partage!

Vous pouvez implémenter le comptage de n variable dans votre routine d'interruption du CCF et l'interrupteur de votre LED si le nombre est égal à 10 depuis votre CCF interrompt le contrôleur de toutes les 1 seconde et le délai requis est de 10 secondes

 
Oui, Rajeshkumar123,
Cette idée aussi est venu à mon esprit.

Toutefois, avec cette partie du code supplémentaire serait toujours exécuter dans mon rapport de recherche internationale et je voulais éviter cela et garder mon rapport de recherche internationale aussi petit et rapide que possible.

Je pensais tout simplement démarrer la minuterie et d'oublier jusqu'à ce que l'interruption pendant 10 secondes entre en jeu.

Mais ressemble maintenant je pourrais avoir à réviser mon opinion.Avec la puissance vers le bas du code, les débordements minuterie registre toutes les 9 secondes, pas 10 secondes.Je voudrais maintenant dois vérifier contre le nombre magique dans l'TH0 et registres TL0 exacte pour obtenir le délai de 10 secondes!observe,
Seemanta

 

Welcome to EDABoard.com

Sponsor

Back
Top