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
Écran OLED 0.96 128x64
Bonjour, plus court, en asm c'est jamais fini
Code : Tout sélectionner
; posy ; 00pppyyy
rlncf posy,W ; 0pppyyy0
swapf WREG ; yyy00ppp
andlw B'00000111' ; 00000ppp
iorlw B'10110000' ; 10110ppp
rcall command_ssd1306 ; envoi page
Écran OLED 0.96 128x64
Bonjour satinas, et tout le forum,
Je te réponds que maintenant, parce que je suis sur un projet qui me demande toute ma concentration.
Division par 8 pour trouver la page sur écran OLED 128x64
Cette méthode est bonne, mais si tu utilises la fonction rrncf (rotation à droite sans carry) tu vas avoir des erreurs (j'ai contrôlé avec MPLAB 8.92).
Obligé d'écrire ceci, je sais c'est pas très économique en matière d'optimisation
Pour afficher un pixel sur l'écran ou on veut
Cette méthode permet d'inscrire un pixel précisément sur l'écran, il y a plus cas l'optimisé, je suis dessus actuellement, quand j'aurais trouvé mieux je mets ici.
A+
Je te réponds que maintenant, parce que je suis sur un projet qui me demande toute ma concentration.
Division par 8 pour trouver la page sur écran OLED 128x64
Code : Tout sélectionner
rrncf WREG,F ; 00011100
rrncf WREG,F ; 00001110
rrncf WREG,F ; 00000111
Cette méthode est bonne, mais si tu utilises la fonction rrncf (rotation à droite sans carry) tu vas avoir des erreurs (j'ai contrôlé avec MPLAB 8.92).
Obligé d'écrire ceci, je sais c'est pas très économique en matière d'optimisation
Code : Tout sélectionner
bcf STATUS,C ; se positionner à la page
rrcf posy,F ;
bcf STATUS,C ;
rrcf posy,F ;
bcf STATUS,C ;
rrcf posy,F
Pour afficher un pixel sur l'écran ou on veut
Code : Tout sélectionner
pixel
movf posy,W ; sauvegarde
movwf tmps1 ;
movf posx,W ; sauvegarde
movwf tmps2 ;
bcf STATUS,C ; se positionner à la page
rrcf posy,F ;
bcf STATUS,C ;
rrcf posy,F ;
bcf STATUS,C ;
rrcf posy,F ;
movf posy,W ;
mullw D'8' ; multiplier W=(page x 8 bits), résultat dans PRODH PRODL
rcall position_ssd1306 ; positionnement
movf tmps2,W ; récupération de la sauvegarde
movwf posx ;
movf PRODL,W ;
subwf tmps1,F ; posy - (page x 8 bits)
movlw D'0' ; test pour trouver le pixel à allumer
xorwf tmps1,W
btfsc STATUS,Z
movlw B'10000000' ;
movlw D'1' ; test pour trouver le pixel à allumer
xorwf tmps1,W
btfsc STATUS,Z
movlw B'00000001'
movlw D'2' ; test pour trouver le pixel à allumer
xorwf tmps1,W
btfsc STATUS,Z
movlw B'00000010'
movlw D'3' ; test pour trouver le pixel à allumer
xorwf tmps1,W
btfsc STATUS,Z
movlw B'00000100'
movlw D'4' ; test pour trouver le pixel à allumer
xorwf tmps1,W
btfsc STATUS,Z
movlw B'00001000'
movlw D'5' ; test pour trouver le pixel à allumer
xorwf tmps1,W
btfsc STATUS,Z
movlw B'00010000'
movlw D'6' ; test pour trouver le pixel à allumer
xorwf tmps1,W
btfsc STATUS,Z
movlw B'00100000'
movlw D'7' ; test pour trouver le pixel à allumer
xorwf tmps1,W
btfsc STATUS,Z
movlw B'01000000'
movlw D'8' ; test pour trouver le pixel à allumer
xorwf tmps1,W
btfsc STATUS,Z
movlw B'10000000'
rcall donner_ssd1306 ; allumer le pixel
Cette méthode permet d'inscrire un pixel précisément sur l'écran, il y a plus cas l'optimisé, je suis dessus actuellement, quand j'aurais trouvé mieux je mets ici.
A+
Écran OLED 0.96 128x64
Bonsoir Temps-x
Pour la page, je pense pas qu'il y ait mieux que les 4 ins de mon dernier post (où ça des erreurs ?).
Pour la position 0 à 7, pourquoi pas un truc comme ça (3 ins) :
Sur les pics, l'adressage indirect est aussi rapide que l'adressage direct, et il est bien pratique.
Il faudrait mettre l'envoi de la colonne en premier. Ainsi on pourrait la sauter pour le tracé du petit oscillo dont tu as parlé. Autant profiter de l'auto-incrémentation de la colonne faite par le lcd.
Pour la page, je pense pas qu'il y ait mieux que les 4 ins de mon dernier post (où ça des erreurs ?).
Pour la position 0 à 7, pourquoi pas un truc comme ça (3 ins) :
Code : Tout sélectionner
movlw B'00000111'
andwf posy,W
movf PLUSW2,W ; table de 8 octets stockée en FSR2
rcall donner_ssd1306
Sur les pics, l'adressage indirect est aussi rapide que l'adressage direct, et il est bien pratique.
Il faudrait mettre l'envoi de la colonne en premier. Ainsi on pourrait la sauter pour le tracé du petit oscillo dont tu as parlé. Autant profiter de l'auto-incrémentation de la colonne faite par le lcd.
Écran OLED 0.96 128x64
Bonsoir satinas, et tout le forum,
Je viens de résoudre l'énigme, et sans table
On peut rien te caché, oui c'est ce que je fais..... j'ai pas vu d'oscilloscope en version Pic avec un écran aussi petit, et ça permettrais qu'un débutant s'amuse à le refaire.
D'après mes calculs, je pense qu'on pourras mesurer au maximum des fréquences allant jusqu’à 200KHz, après j'espère qu'on pourras m'aider un peu pour l'électronique.
Il faut que je vois avec le convertisseur analogique du pic, car c'est lui qui fait le spot, pour le visionnage pas la peine de se presser vu la lenteur de l’œil .
Voila le code pour le scan numérique, qui fait office de spot
Je ne sais pas si on est obligé de coupé la fin de conversion pour chaque scannage .
Je vais aussi mettre l'option PWM avec un sélecteur qui couvrira les fréquences 1000Hz, 1500Hz, 2000Hz, 20000Hz de 0% à 99%
De plus on peut aussi rajouter le fréquencemètre, qui pourras aller jusqu'à 50 Mhz.
Voilà ou j'en suis, ici contrôl d'un signal carré
A+
Je viens de résoudre l'énigme, et sans table
Code : Tout sélectionner
movf posy,W ; sauvegarde
movwf tmps1 ;
movf posx,W ; sauvegarde
movwf tmps2
bcf STATUS,C ; se positionner à la page
rrcf posy,F ;
bcf STATUS,C ;
rrcf posy,F ;
bcf STATUS,C ;
rrcf posy,F ;
rcall position_ssd1306 ; se positionné à la page demandé, et la longueur demandé
movf posy,W ;
mullw D'8' ; multiplier W=(page x 8 bits), résultat dans PRODH PRODL
movf PRODL,W ;
subwf tmps1,F ; posy - (page x 8 bits)
clrf WREG
bsf STATUS,C
ocs_ret
rrcf WREG,F
decfsz tmps1,F ;
bra osc_ret
rcall donner_ssd1306 ; envoi du pixel (et effacement des 7 autres pixels si pas de buffer pic)
satinas a écrit :Source du message Il faudrait mettre l'envoi de la colonne en premier. Ainsi on pourrait la sauter pour le tracé du petit oscillo dont tu as parlé. Autant profiter de l'auto-incrémentation de la colonne faite par le lcd.
On peut rien te caché, oui c'est ce que je fais..... j'ai pas vu d'oscilloscope en version Pic avec un écran aussi petit, et ça permettrais qu'un débutant s'amuse à le refaire.
D'après mes calculs, je pense qu'on pourras mesurer au maximum des fréquences allant jusqu’à 200KHz, après j'espère qu'on pourras m'aider un peu pour l'électronique.
Il faut que je vois avec le convertisseur analogique du pic, car c'est lui qui fait le spot, pour le visionnage pas la peine de se presser vu la lenteur de l’œil .
Voila le code pour le scan numérique, qui fait office de spot
Code : Tout sélectionner
scan_numérique
bcf led1
movlw D'100' ; nombre de pixel sur la longueur
movwf temps
lfsr FSR0,H'100' ; FSR0 pointe sur le début de la banque 1
re_scan
bsf ADCON0,ADON ; on lance l’acquisition (charge du condensateur)
bsf ADCON0,GO ; lancer la conversion A/D
btfsc ADCON0,GO ; si le bit GO est à 1 on va à la ligne 1
bra $-D'2' ; convertion n'est pas terminer
movff ADRESH,POSTINC0 ; récupérer la valeur
bcf ADCON0,ADON ; fin de conversion, éteindre convertisseur
; rcall ; delay de la vitesse du spot, voir avec temporisation
; 50ms, 20ms, 10ms, 5ms, 2ms, 1ms, 500us, 200us, 100us
decfsz temps ;
bra re_scan
return
Je ne sais pas si on est obligé de coupé la fin de conversion pour chaque scannage .
Je vais aussi mettre l'option PWM avec un sélecteur qui couvrira les fréquences 1000Hz, 1500Hz, 2000Hz, 20000Hz de 0% à 99%
De plus on peut aussi rajouter le fréquencemètre, qui pourras aller jusqu'à 50 Mhz.
Voilà ou j'en suis, ici contrôl d'un signal carré
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Écran OLED 0.96 128x64
Bonjour tout le forum,
Contrôle d'une sinus, pas encore au point mais ça avance, bon.... il faut que je comprenne pourquoi j'ai des pointillés.
J'ai rajouté, aujourd'hui, sélection du voltage de 0,1 volts à 50 volts sur 9 choix, calibre des temps de 50ms à 100µs sur 10 choix, inversion du contrôl du signal, gel de l'écran pour observation, vers la droite du haut, je vais mettre la fréquence.
J'ai fait une petite vidéo sur l'oscilloscope en bas du post #1
A+
Contrôle d'une sinus, pas encore au point mais ça avance, bon.... il faut que je comprenne pourquoi j'ai des pointillés.
J'ai rajouté, aujourd'hui, sélection du voltage de 0,1 volts à 50 volts sur 9 choix, calibre des temps de 50ms à 100µs sur 10 choix, inversion du contrôl du signal, gel de l'écran pour observation, vers la droite du haut, je vais mettre la fréquence.
J'ai fait une petite vidéo sur l'oscilloscope en bas du post #1
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Écran OLED 0.96 128x64
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir
pas besoin, puisque tu sors de la boucle de test avec la valeur à zero
tu injectes quelle frequence de signal ?
à mon avis because nombre de sample/sec insuffisant ..
est-ce que tu affiches en temps reel ou acquisition de 128 points puis affichage ?
sur un oscillo il faut alors tracer des segments (par interpolation) et pas des points ..
j'avais bien potassé ce sujet il y a des lustres déja .. SCOPE PC avec ADC sur port parallele
Je n'ai pas tenter d'en refaire un à base de PIC car
pour moi l'ADC du PIC n'est pas assez performant ..
même avec FOSC 64MHz , qui n'apporte pas grand chose ,puisque qu'il faut respecter un delai global definit en µS
(somme de delais "obligatoires" )+ un, dont on ne parle guere ,
le delai necessaire AUSSI entre chaque lancement d'acquisition.
ceci-dit , ça n'enleve en rien la qualité de cette belle realisation .
Temps-x a écrit :je ne sais pas si on est obligé de coupé la fin de conversion pour chaque scannage .
pas besoin, puisque tu sors de la boucle de test avec la valeur à zero
Temps-x a écrit :Bonjour tout le forum,
Contrôle d'une sinus, pas encore au point mais ça avance, bon.... il faut que je comprenne pourquoi j'ai des pointillés.
tu injectes quelle frequence de signal ?
à mon avis because nombre de sample/sec insuffisant ..
est-ce que tu affiches en temps reel ou acquisition de 128 points puis affichage ?
sur un oscillo il faut alors tracer des segments (par interpolation) et pas des points ..
j'avais bien potassé ce sujet il y a des lustres déja .. SCOPE PC avec ADC sur port parallele
Je n'ai pas tenter d'en refaire un à base de PIC car
pour moi l'ADC du PIC n'est pas assez performant ..
même avec FOSC 64MHz , qui n'apporte pas grand chose ,puisque qu'il faut respecter un delai global definit en µS
(somme de delais "obligatoires" )+ un, dont on ne parle guere ,
le delai necessaire AUSSI entre chaque lancement d'acquisition.
ceci-dit , ça n'enleve en rien la qualité de cette belle realisation .
Écran OLED 0.96 128x64
Bonsoir paulfjujo, et tout le forum,
S’effectue 100 scannes, et j'éteinds le convertisseur 100 fois, d'ou la question.
Actuellement 250 Hz
Quand j'ai 100 passage numérisé s'affiche le résultat.
100 pixels qui corresponde à la longueur que je me suis fixé, je garde 28 pixels pour affichage de la tension maxi et mini
Je viens de le comprendre que maintenant, et avec ce que tu me dis ça se rejoints.
J'ai regardé la vidéo de l'oscilloscope Arduino on voit qu'ils relies les points entre eux, donc pas besoin de 100 scannes numérique.
A titre d'information, le chinois qui à réalisé son oscilloscope à une période d'échantillonnage maximale de 8 μs et il mesure des fréquences jusqu'à 10kHz.
ADC du Pic18F26K22
A voir par la suite, pour utilisation d'un convertisseur ADC extérieur
pour le lien je vais tout lire .... et essayé de tout comprendre.
Avoir eu un petit résultat, même partielle, ça me motive à aller plus loin.
A+
paulfjujo a écrit :Source du message pas besoin, puisque tu sors de la boucle de test avec la valeur à zero
S’effectue 100 scannes, et j'éteinds le convertisseur 100 fois, d'ou la question.
Code : Tout sélectionner
bcf ADCON0,ADON ; fin de conversion, éteindre convertisseur
paulfjujo a écrit :Source du message tu injectes quelle frequence de signal ?
Actuellement 250 Hz
paulfjujo a écrit :Source du message est-ce que tu affiches en temps réel ou acquisition de 128 points puis affichage ?
Quand j'ai 100 passage numérisé s'affiche le résultat.
100 pixels qui corresponde à la longueur que je me suis fixé, je garde 28 pixels pour affichage de la tension maxi et mini
paulfjujo a écrit :Source du message sur un oscillo il faut alors tracer des segments (par interpolation) et pas des points .
Je viens de le comprendre que maintenant, et avec ce que tu me dis ça se rejoints.
J'ai regardé la vidéo de l'oscilloscope Arduino on voit qu'ils relies les points entre eux, donc pas besoin de 100 scannes numérique.
paulfjujo a écrit :Source du message pour moi l'ADC du PIC n'est pas assez performant
A titre d'information, le chinois qui à réalisé son oscilloscope à une période d'échantillonnage maximale de 8 μs et il mesure des fréquences jusqu'à 10kHz.
ADC du Pic18F26K22
A voir par la suite, pour utilisation d'un convertisseur ADC extérieur
paulfjujo a écrit :Source du message j'avais bien potassé ce sujet il y a des lustres déja .. SCOPE PC avec ADC sur port parallele
pour le lien je vais tout lire .... et essayé de tout comprendre.
Avoir eu un petit résultat, même partielle, ça me motive à aller plus loin.
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Écran OLED 0.96 128x64
Bonsoir tout le forum,
C'est vrai, et je confirme...
J'ai avancé dans mon programme d'oscilloscope, conclusion, avec ADC du Pic18F26K22 on ne pourra pas dépasser les 20000 Hz (20khz).
Reste à faire, l'interpolation des points entre eux, stabilisation de l'affichage sur l'écran, et affichage sans effacer les points affiché à l'écran.
Même si c'est un petit oscilloscope de très basse qualité, c'est enrichissant sur tout point de vue.
Je vais envoyer via un petit émetteur les données sur PC(100 octets) toutes les 100ms, protocole Eusart, pour y reproduire le signal via un petit programme.
J 'ai commencé le programme pour le PC qui reflet exactement le visuelle de l'écran (sans émetteur pour l'instant) les données je l'ai avait inscrite en Eeprom) via un enregistrement par bouton poussoir.
A+
paulfjujo a écrit :Source du message Je n'ai pas tenter d'en refaire un à base de PIC car pour moi l'ADC du PIC n'est pas assez performant ..
C'est vrai, et je confirme...
J'ai avancé dans mon programme d'oscilloscope, conclusion, avec ADC du Pic18F26K22 on ne pourra pas dépasser les 20000 Hz (20khz).
Reste à faire, l'interpolation des points entre eux, stabilisation de l'affichage sur l'écran, et affichage sans effacer les points affiché à l'écran.
Même si c'est un petit oscilloscope de très basse qualité, c'est enrichissant sur tout point de vue.
Je vais envoyer via un petit émetteur les données sur PC(100 octets) toutes les 100ms, protocole Eusart, pour y reproduire le signal via un petit programme.
J 'ai commencé le programme pour le PC qui reflet exactement le visuelle de l'écran (sans émetteur pour l'instant) les données je l'ai avait inscrite en Eeprom) via un enregistrement par bouton poussoir.
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Écran OLED 0.96 128x64
Bonsoir tout le forum,
Voila je viens de dégrossir la version du logiciel sur PC, de plus j'ai mis une nouvelle vidéo pour ceux qui l'aurais pas vue en Post #1
Logiciel pour Pc
La question que je me pose maintenant, qu'est ce que je vais prendre comme émetteur et récepteur.....
nRF24L01+ .....
A+
Voila je viens de dégrossir la version du logiciel sur PC, de plus j'ai mis une nouvelle vidéo pour ceux qui l'aurais pas vue en Post #1
Logiciel pour Pc
La question que je me pose maintenant, qu'est ce que je vais prendre comme émetteur et récepteur.....
nRF24L01+ .....
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le dim. 9 févr. 2020 15:41, modifié 2 fois.
Écran OLED 0.96 128x64
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Temps-x a écrit :... La question que je me pose maintenant, qu'est ce que je vais prendre comme émetteur et récepteur.....
nRF24L01+ .....
A+
nRF24L01+, j'en ai acheté 4 .. toujours pas testés correctement!
oui... compliqué par rapport au HC12 !
autrement : bluetooth !
un module RN41 click Maitre coté PC et 1 RN41 esclave coté PIC
( c'est ce que j'utilise entre mon PIC EDFinfo sur Linky et mon PC EEPC Windows XP et appli RQbasic
ou
une cle USB APM EDR classe1 coté PC ou un VRAI HC05 Maitre
et un simple module Bluetoooth HC05 ou HC06 coté PIC
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Bing [Bot] et 50 invités