Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Timer0 avec MikroC
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour,
J'aurais aimé faire des tests avec le timer0 d'un PIC18F45K22, afin de faire un petit tuto . Mais voila dur de faire un tuto quand on y arrive pas .
savez comment lire la valeur du Timer0 ? pour le moment je ne souhaite pas utiliser les interruption de ce timer , juste avoir une réaction quand il atteint une certaine valeur .
J'ai essayé avec "TMR0" ou encore "timer0" et d'autre mais rien ni fait !
Voici mon petit bout de programme qui m’indique une erreur quand j'essaye de le compiler
J'aurais aimé faire des tests avec le timer0 d'un PIC18F45K22, afin de faire un petit tuto . Mais voila dur de faire un tuto quand on y arrive pas .
savez comment lire la valeur du Timer0 ? pour le moment je ne souhaite pas utiliser les interruption de ce timer , juste avoir une réaction quand il atteint une certaine valeur .
J'ai essayé avec "TMR0" ou encore "timer0" et d'autre mais rien ni fait !
Voici mon petit bout de programme qui m’indique une erreur quand j'essaye de le compiler
Code : Tout sélectionner
//################################# DECLARATION #########################################
char compteur = 0;
//################################# FONCTION #########################################
//######################### FONCTION PRINCIPALE ET CONFIGURATION #################################
void main() { // ceci contiendra notre programme, c'est la fonction principale(main) et elle est obligatoire.
ANSELB = 0; // Met le PORT B en numérique
PORTB = 0; // Affecte 0 au PORT B
TRISB = 0b00000000; // Place le PORTB en sortie pour afficher les leds
T0CON = 0b10000111 ;
//################################# Boucle infinie #########################################
while(1) // Ici c'est notre boucle sans fin.
{
if ( TMR0 >= 250)
compteur++;
if ( compteur >= 200)
{
PORTB.B0 = 1;
compteur = 0;
delay_ms (200);
}
else
{
PORTB.B0 = 0;
}
}
} // Fin de notre fonction principale, la boucle est bouclée
Timer0 avec MikroC
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Je perçois une réponse du coté du TMR0L et TMR0H , mais je comprends toujours pas pourquoi je n'arrive pas a utiliser correctement ces valeurs.
Voir page 161 le diagramme du mode 16bit . Je crois comprendre qu’en fait cela va trop vite . Du coup seul l’interruption est utilisable ?
Voir page 161 le diagramme du mode 16bit . Je crois comprendre qu’en fait cela va trop vite . Du coup seul l’interruption est utilisable ?
Timer0 avec MikroC
Timer0 avec MikroC
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Salut Pat,
Merci d'intervenir, car je commence à désespérer de pouvoir faire mon Tuto !
D'aprés ce que j'ai crus comprendre, l’initialisation se fait avec le Bit_7 du registre T0Con ( Timer0 control ), mis à 1 .
Justement il n'y a pas de routine d’interruption , je souhaite seulement lire la valeur du TMR0 . il est écrit "readable" dans la DS mais pas comment , car cela dépend du compilateur je suppose !. et rien trouver en MikroC
D'accord je vais essayer sans, c’était pour avoir le temps de voir ma led s'allumée .
La fréquence de travail est la même que celle du quartz c'est a dire 8Mhz .
Merci d'intervenir, car je commence à désespérer de pouvoir faire mon Tuto !
Ou est la routine d'interruption et l'initialisation du timer ?
D'aprés ce que j'ai crus comprendre, l’initialisation se fait avec le Bit_7 du registre T0Con ( Timer0 control ), mis à 1 .
Justement il n'y a pas de routine d’interruption , je souhaite seulement lire la valeur du TMR0 . il est écrit "readable" dans la DS mais pas comment , car cela dépend du compilateur je suppose !. et rien trouver en MikroC
Mettre un delayms en testant TMR0 ça ne va pas.
D'accord je vais essayer sans, c’était pour avoir le temps de voir ma led s'allumée .
D'ailleurs quelle est la fréquence du TMR0?
La fréquence de travail est la même que celle du quartz c'est a dire 8Mhz .
Timer0 avec MikroC
Jérémy a écrit :D'ailleurs quelle est la fréquence du TMR0?
La fréquence de travail est la même que celle du quartz c'est a dire 8Mhz .
TMR0 se lit comme n'importe quel registre, et je crois que sur les 18F il s'appelle TMR0L (8 bit).
Si tu l'incrémentes à partir de la fréquence d'horloge, c'est Fcy (Fosc/4) puis le prédiviseur (2 à 256).
Faut lire les doc !
Timer0 avec MikroC
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Faut lire les doc !
Oui oui , c'est bien ce que j'ai fais !
Si tu l'incrémentes à partir de la fréquence d'horloge, c'est Fcy (Fosc/4) puis le prédiviseur (2 à 256).
Oui , on a 8Mhz/4 soit 2x106
avec mon registre j'ai mi le presacler à 256 : donc 2x106/256 = 7812 .Si F=1/T on a T=1/F=1/7812=0.000128 soit 128µs
et je crois que sur les 18F il s'appelle TMR0L (8 bit).
Oui c'est bien ce que j'ai cru comprendre aussi , mais pourquoi je n'arrive pas à le lire ? cela va trop vite non ?
Timer0 avec MikroC
Timer0 avec MikroC
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Je connais pas C, mais 128 µs c'est très long (par rapport à 1 cycle instruction).
Oui moi aussi , mais si on utilise pas le prescaler on 0.5µs .
Tu utilises un simulateur pour observer TMR0 ? En pas à pas ?
Je ne suis pas encore tout a fait à l'aise avec MikroC et le ICD, mais j'arrive a voir mon TMR0L bouger ; mais les valeurs qu'il me renvoie sont trés grande même en pas à pas .
Pourquoi <char compteur> ?
Je voulais creer une boucle ! pour ralentir la cadence en fait
Timer0 avec MikroC
Timer0 avec MikroC
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 45 invités