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 : mazertoc
18f26k22 et module I2C
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Bonjour,
C'est pas parfait a 100%, mais c'est déjà pas mal pour un débutant
En écriture pas de problème (en simulation)
En écriture c'est assez bizarre, j'arrive à lire 1 octet sur 2 sans défaut et une trame I2C correct
Autres points ou je bloque
Dans la config de temps-x, j'avais repris les info suivantes :
; movlw B'01010010' ; oscillateur à 4 Mhz, fréquence stable
pour moi cela serait plutôt : movlw B'01110100'
Pour le calcul de SS1ADD , je ne suis pas sur de mon calcul
Si je tourne à 64MHZ --> 16MHZ * 4 , je prend quoi pour le calcul 16MHZ ?
A suivre
C'est pas parfait a 100%, mais c'est déjà pas mal pour un débutant
En écriture pas de problème (en simulation)
En écriture c'est assez bizarre, j'arrive à lire 1 octet sur 2 sans défaut et une trame I2C correct
Autres points ou je bloque
Dans la config de temps-x, j'avais repris les info suivantes :
; movlw B'01010010' ; oscillateur à 4 Mhz, fréquence stable
pour moi cela serait plutôt : movlw B'01110100'
Pour le calcul de SS1ADD , je ne suis pas sur de mon calcul
Si je tourne à 64MHZ --> 16MHZ * 4 , je prend quoi pour le calcul 16MHZ ?
A suivre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
18f26k22 et module I2C
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
18f26k22 et module I2C
Bonsoir françois77, et tout le forum,
Tu as raison sur la stabilisation de l'oscillateur, mais pas sur la fréquence qui comme tu le configure tourne à 16 MHz sans PLL d'activé
Pour 4 MHz avec fréquence stable, et en se servant de l'oscillateur interne du Pic, j'aurais du écrire
movlw B'01010110' ; oscillateur à 4 Mhz, fréquence stable
C'est très bien d'avoir relevé cette erreur, personne n'est parfait, Je ne suis pas un robot
La fréquence de l'horloge est déterminée par la formule
FSCL = Fosc / (4 * (SS1ADD + 1))
En général, on connait la fréquence (100KHz, 400KHz, 1MHz), et on cherche à déterminer SS1ADD. ce qui donne
SS1ADD = (Fosc / (FSCL * 4)) - 1
Exemple pour un I2C qui tourne à 100KHz, avec un quartz à 64MHZ
Conversion en Hertz
100KHz * 1000 = 100 000 Hz
64MHz * 1000000 = 64 000 000 Hz
Calcul final
159 = (64 000 000 Hz / (100 000 Hz *4)) - 1
On mettra 159 dans SS1ADD pour avoir une vitesse de 100KHz en I2C
Ps: en regardant la datasheet de ce Pic18F26K22 j'ai vu qu'on peut tourner à 4 MHz en SPI, contre 1,47MHz en mode Big bang d'après l'analyse de paulfjujo, Voila la solution pour améliorer ta vitesse d'affichage
A+
francois77 a écrit :Source du message movlw B'01010010' ; oscillateur à 4 Mhz, fréquence stable
pour moi cela serait plutôt : movlw B'01110100'
Tu as raison sur la stabilisation de l'oscillateur, mais pas sur la fréquence qui comme tu le configure tourne à 16 MHz sans PLL d'activé
Pour 4 MHz avec fréquence stable, et en se servant de l'oscillateur interne du Pic, j'aurais du écrire
movlw B'01010110' ; oscillateur à 4 Mhz, fréquence stable
C'est très bien d'avoir relevé cette erreur, personne n'est parfait, Je ne suis pas un robot
francois77 a écrit :Source du message Pour le calcul de SS1ADD , je ne suis pas sur de mon calcul
La fréquence de l'horloge est déterminée par la formule
FSCL = Fosc / (4 * (SS1ADD + 1))
En général, on connait la fréquence (100KHz, 400KHz, 1MHz), et on cherche à déterminer SS1ADD. ce qui donne
SS1ADD = (Fosc / (FSCL * 4)) - 1
Exemple pour un I2C qui tourne à 100KHz, avec un quartz à 64MHZ
Conversion en Hertz
100KHz * 1000 = 100 000 Hz
64MHz * 1000000 = 64 000 000 Hz
Calcul final
159 = (64 000 000 Hz / (100 000 Hz *4)) - 1
On mettra 159 dans SS1ADD pour avoir une vitesse de 100KHz en I2C
Ps: en regardant la datasheet de ce Pic18F26K22 j'ai vu qu'on peut tourner à 4 MHz en SPI, contre 1,47MHz en mode Big bang d'après l'analyse de paulfjujo, Voila la solution pour améliorer ta vitesse d'affichage
A+
18f26k22 et module I2C
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Bonjour Temp-x et tout le forum
j'ai refait quelques essais ce matin
Pour le calcul et les essais de SSP1ADD c'est ok en réel
test2 a 64MHZ 400KHZ avec SSP1ADD a 39
-----------------------------------
Pour le mode spi a 4MHZ cela serait un vrai plus pour faire de l'affichage temps réel T
-----------------------------------
Pour la configuration de la vitesse, j'ai refait un essai en mode 4MHZ
ta config génère un défaut lors de la simulation
movlw B'01010110' ; oscillateur à 4 Mhz, fréquence stable
Ma config est ok
movlw B'01010100' ; oscillateur à 4 Mhz, fréquence stable
Pas simple ce 18f26k22
Séquence pour scanner l'adresse :
A+
Francois
j'ai refait quelques essais ce matin
Pour le calcul et les essais de SSP1ADD c'est ok en réel
test2 a 64MHZ 400KHZ avec SSP1ADD a 39
-----------------------------------
Pour le mode spi a 4MHZ cela serait un vrai plus pour faire de l'affichage temps réel T
-----------------------------------
Pour la configuration de la vitesse, j'ai refait un essai en mode 4MHZ
ta config génère un défaut lors de la simulation
movlw B'01010110' ; oscillateur à 4 Mhz, fréquence stable
Ma config est ok
movlw B'01010100' ; oscillateur à 4 Mhz, fréquence stable
Pas simple ce 18f26k22
Séquence pour scanner l'adresse :
Code : Tout sélectionner
clrf Temp_1 ;
Scanne ;
call i2c_start ;
movf Temp_1,w ;
movwf SSP1BUF ;
btfsc SSP1CON2, ACKSTAT ;
bra $-2 ;
btfss PIR1, SSP1IF ;
bra $-2 ;
bcf PIR1, SSP1IF ;
call i2c_stop ;
;
movlw D'0' ;
xorwf SSP1CON2,w ;
btfsc STATUS,Z ;
bra Adresse_ok ;
incf Temp_1,1 ;
clrf SSP1CON2 ;
;
movlw 0XFF ;
xorwf Temp_1,w ;
btfsc STATUS,Z ;
bra Adresse_non_trouve ;
bra Scanne ;
Adresse_ok
nop
Adresse_non_trouve
nop
A+
Francois
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
18f26k22 et module I2C
- paulfjujo
Expert- Messages : 2601
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
il ne faut pas confondre la vitesse intrinseque du CLOCK SPI , et le debit pouvant etre atteint
en terme de bytes / secondes et donc de la vitesse moyenne réelle.
sachant qu'il y a quand meme quelques instructions autour .. surtout en mode bit bang ! ..
En mode SPI Hardware on peut effectivement esperer davantage que 1,47Mhz ..
c'est pourquoi je m'acharne à vouloir faire tourner ce SPI hardware 18F27K42 .. à 10MHz ?
à voir si TempsX va me devancer en ASM ?
le 18F26K22 difficile .. attend de tester le 18F27K42 ..
A+
francois77 a écrit :-----------------------------------
Pour le mode spi a 4MHZ cela serait un vrai plus pour faire de l'affichage temps réel T
-----------------------------------
il ne faut pas confondre la vitesse intrinseque du CLOCK SPI , et le debit pouvant etre atteint
en terme de bytes / secondes et donc de la vitesse moyenne réelle.
sachant qu'il y a quand meme quelques instructions autour .. surtout en mode bit bang ! ..
En mode SPI Hardware on peut effectivement esperer davantage que 1,47Mhz ..
c'est pourquoi je m'acharne à vouloir faire tourner ce SPI hardware 18F27K42 .. à 10MHz ?
à voir si TempsX va me devancer en ASM ?
le 18F26K22 difficile .. attend de tester le 18F27K42 ..
A+
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités