satinas a écrit :Source du message 0
satinas a écrit :Source du message Pour écrire on spécifie un numéro de page, puis la première colonne à écrire.
Pous définir la page (0 à 7), on envoie :
- la commande 0b10110ppp
Pour définir la première colonne (0 à 127) on envoie :
- la commnande 0b0000LLLL (lower nibble -> 4 bits de poids faible, nibble = quartet)
- la commnande 0b0001hhhh (higher nibble -> 4 bits de poids fort)
Bon je viens de relire ce que tu as écrit, c'est ce que j'ai fait dans mon code, sans comprendre pourquoi ça fonction.
Avec des exemple simple on comprends mieux, j'ai fait l'essai en affichant un 'A'
quand j'écris ceci
Code : Tout sélectionner
movlw 0xB1 ; page 2
rcall command_ssd1306
movlw B'00000000' ; 0x00
rcall command_ssd1306
movlw B'00010000' ; 0x00
rcall command_ssd1306
movlw 'A' ; code clavier
rcall lettre_ssd1306
J’obtiens ceci
quand j'écris ceci
Code : Tout sélectionner
movlw 0xB1 ; page 2
rcall command_ssd1306
movlw B'00001111' ; 0x0F
rcall command_ssd1306
movlw B'00010000' ; 0x00
rcall command_ssd1306
movlw 'A' ; code clavier
rcall lettre_ssd1306
J’obtiens ceci
quand j'écris ceci
Code : Tout sélectionner
movlw 0xB1 ; page 2
rcall command_ssd1306
movlw B'00000000' ; 0x00
rcall command_ssd1306
movlw B'00011111' ; 0x1F
rcall command_ssd1306
movlw 'A' ; code clavier
rcall lettre_ssd1306
J’obtiens ceci
quand j'écris ceci
Code : Tout sélectionner
movlw 0xB1 ; page 2
rcall command_ssd1306
movlw B'00001111' ; 0x0F
rcall command_ssd1306
movlw B'00011111' ; 0x1F
rcall command_ssd1306
movlw 'A' ; code clavier
rcall lettre_ssd1306
J’obtiens ceci
La lettre 'A' est bien à sa place, car elle fait 5 pixels, ce qui explique de débordement en fin de ligne.
Conclusion, ta déduction était la bonne satinas
Bon, ça veut dire qu'il faut que je retouche le code, car il y a pas mal de bug, maintenant que j'ai bien compris je vais optimiser le code, arrivé à ce
stade, ça devient un vrai plaisir d'écrire le programme... ouf...
A+