V.O. 21 juillet 2015
last update 14 nov 2016

Carte Clicker2 PIC18F87J50

Le materiel d'étude et de démonstration
Liaison USB au MikroE HID Terminal
Liaison UART2 RS232 avec Terminal PC (Vbray, ou Mikroe UART terminal, ...)
3,5 liaisons de COM concomitantes : UART1, UART2 et USB
Afficheur OLED C click 96x96 65K couleurs , mode SPI
Afficheur LCD 2119 2x16 car , direct I2C
Generation d'un nombre pseudo-aleatoire : ex 1 a 4


Autres liens :
Liaison WIFI3-click ESP8266
Surveillance via Carte GSM2 click

Carte de developement MikroE Clicker2 for PIC18F87J50
+ plugin carte Bornier

But :
Tester les possibilites de la carte Clicker2 PIC18F87J50 et
la fonction Mikro bootloader via USB

HARDWARE :
La carte est alimentée via la liaison USB 5V -> regulateur de tension => 3,3V alim
Datasheet du PIC18F87J50
Doc MikroE sur cette carte

thumb/t_clicker2_Carte_Pinout.gif thumb/t_PIC18F87J50_Pinout.gif
detail bornier carte MikroE Clicker2 le MCU 18F87J50

Schema de la carte

thumb/t_clicker_2_PIC18FJ_schem..gif thumb/t_clicker_2_pic18fj_Connecteurs.gif
schema elec Liaisons et Fonctions


2 Emplacements pour carte fille Click mikroBus
thumb/t_mikrobus_pinout.gif

Configuration Oscillateur FOSC:
Un peu complexe sur ce MCU
La PLL est ici de 16x au lieu de 4x habituellement.
Le but est de fournir 48MHz pour la partie USB .. depuis le quartz utilisé, ICI Q= 8MHz
La valeur de FOSC utile pour le programme , est ensuite derivée de ce 48MHz
en divisant par 1,2,3,6 ...
utilisé a 48Mhz..

thumb/t_Selection_FOSC.gif thumb/t_Config_oscilltor_for_USB.gif
Diagram parametrage FOSC FOSC for USB



Software :

Usage de MikroC Pro 6.50 (enregistré!)
il est facile de charger de le programme qui vient juste d'etre compilé
surtout avec un PIC USB contenant un bootloader .
Appui sur BP reset de la carte => passe en mode bootloader pendnat 5 secondes
et click sur Connect , pour rentrer dans ce mode.
le bootloader renvoi un message comme quoi la carte Clicker 2 est reconnue
On selectionne alors le fichier HEX a charger (Browse for Hex)
et Begin uploading
quelques secondes apres ,le programme est chargé
"completed successfully"
et se lance ..

thumb/USB_HID_Bootloader_test_141226.gif




La Liaison USB HID Terminal
usage du Mikroe USB HID Terminal
repéré ici via : PIC18F87J Clicker2

original/18F87J50_USB_HID_Test.jpg
   



pas de probleme particulier .
faire un reset apres le chargement du Hex avec MikroBootloader HID
et selectionner , dans Terminal USB HID , le bon device descriptor
La liaison n'est effective que SI le bon choix de device descriptor est fait ,



sinon blocage programe en attente de liaison USB. (comportement voulu)
Ensuite, dans la boucle de fond principale , la tempo (Timer interrupt) sur 1sec permet
de sortir de l'attente caractere liaison USB .

Cdes via clavier des 2 leds de la carte LD1 (RD4) et LD2( RE4):
LD1 ON, LD1 OFF, LD2 ON, LD2 OFF
en echo: Fire ou Shutdown Led

source : Clicker2_18F87J50_ADC_USB_HID_Term_150712.c
chargeur : PIC18FJ_USB_HID_Terminal_150713.hex
USB decriptor : USBdsc_1507.c
fichier log de compilation : PIC18FJ_USB_HID_Terminal.log
config bits : P18F87J50_PLL_8_to_48MHz.cfgsch



Test UART2 liaison RS232 avec PC Win8.1
Nota: mon PC ASUS CM6431 (sous WIN 8.1) n'a pas de port COM RS232
donc, usage d'un cordon convertisseur RS23/USB

La liaison RS232 :
RG1(Tx) et RG2 (Rx) sur connecteur carte fille MikroBus 1 =E/S TTL UART2 (niveau 3,3V !)
-> adaptateur 2TR TTL/RS232 -> DB9M
adaptateur raccord DB9F/DB9F
DB9M -> Cordon adaptateur TREND TUS9 -> USB
Nota: L'alim 3,3V pour l'interface 2TR est prise sur la connectique MikroBUS
Avant de lancer le terminal VBRAY, il faut connaitre quel est le port COM affecté a l'interface USB TUS9

Clicker2_18F87J50_UART2_test.gif
le montage de test


Gestion de peripheriques -> PORT (COM et LPT)
on repere ici facilement le PORT Prolific COM22
Ouvrir le terminal VBRAY avec le PORT COM22 et parametres 19200,8,N,1
Let's GO!

thumb/t_Clicker2_Terminal_Vbray.gif
Le programme :
gestion de l'UART #2 en mode interruption
Mesure Analogique sur RA0 = ADC0
Etat des 2 BP de la carte
Timer0 calé sur 1 sec pour cadencer le programme
Affichage en Echo du buffer de reception

Source : Clicker2_18F87J50_ADC_UART2_150723.c
Chargeur : PIC18FJ_USB_HID_Terminal_150713.hex

Nota1:
test similaire avec un VRAI port RS232 ( necessite quand meme l'interface 2TR !)
donne exactement le mem resultat avec VBRAY COM1 ..port RS232 sur PC Win XP
Nota 2: L'interface 2TR fonctionne aussi bien en niveaux UART 3,3V ou 5V
si on l'alimente , respectivement en 3,3 ou 5V
Dans le cas present , le PIC18F87J50 est alimenté en 3,3V..

thumb/t_GSM2_click_power_supplies.gif

 



Clicker2 et 3,5 Liaisons de COM


UART1 Rs232+ UART2 RS232 + HID Terminal USB
+ 0.5 UART3 car TX seulement 100% software


Hardware :

thumb/t_Proto_Clicker2_PIC18FJ_UART1_UART2_HDI.gi

//Nota: interface 2TR alimenté en 3,3V repris sur clicker2
// RG1 = TX2 ---- interface 2TR TTL/RS232 ------ cable interface Trend TUS9 RS232/USB -- PC Win 8.1
// RG2 = Rx2 ---- interface 2TR TTL/RS232 ------
// RC6 = TX1 ---- interface 2TR TTL/RS232 ------ DB9 --- COM1 PC Win XP
// RC7 = RX1 ---- interface 2TR TTL/RS232 ------


SOFTWARE :
Directory : C:\_MikroC\_MesProjets_MikroC\__18F87J50_Clicker2\
Project name: PIC18F87J50_UART1_UART2_HID_ADC0_test.mcppi
Source ; Clicker2_18F87J50_ADC_UART1_UART2_HID_150729.c
USB descriptor USBdsc_Cliker2.c
MCU: PIC18F87J50 on Pick Click2
Oscillator: HS-PLL 32.0000 MHz, 8.0000 MHz Crystal


Source : Clicker2_18F87J50_ADC_UART1_UART2_HID_150729.c
Chargeur : PIC18F87J50_UART1_UART2_HID_ADC0_test_150729.hex
Config bits : P18F87J50_PLL_8_to_48MHz.cfgsch

Resultats :
dialogues sur 3 Terminaux de COM:

Vbray Terminal COM1 RS232 VBray Terminal COM22 Mikroe HID Terminal USB

Un port UART3 en mode Transmit Seulement
pour Spy/debuging echanges de communication
Routine d'ecriture sur une sortie queconque d'un PORT PIC
100% en assembleur
Testé a 38400 bauds et FOSC=48Mhz
voir fil de discussion ICI.


j'ai testé un (demi : car on a pas besoin de RX ) UART3 TX 100% asm , sortie sur RA2
(pin libre sur mon montage) , donc en transmission seulement !

voici le code de test :
il n'est pas optimisé pour un 18F évolué .. peut tourner meme sur un 16F84 !
le point clé est de bien regler la duree d'un bit
a 19200 bauds duree d'un bit=52?S

un GROS PIEGE a IONS .. data complementé ! car niveau 1 au repos
je me suis fait piegé en testant avec 0x55 et 0xAA .. qui donne inversé 0xAA 0X55 ...me semblait OK
alors qu"en ascci en envoyant "bonjour" , j'affichais n'importe quoi.




Avec le debugger et la fenetre watch on "voit" exactement le nb de cycles donc de ?S ecoulées dans RS_Delay.
conditions : FOSC =8MHz
a adapter si FOSC est different
de meme la sortie RA2 ..

Inconvenient de cette solution bit-bang
sensible aux interruptions activées (Timer..ou autre perturbation)
mais on peut toujours desactiver GIE_bit avant et apres l'envoi d'un car.
Dans le cas present, l'envoi d'un char bouffera 52*10=520 ?S minimum ! 10 cars 5,2mS , 100 cars 52mS
reste possible de l'utilser la ou on met habituellement des Delay_ms(xx);
il n'y a pas photo, un UART Hardware est le must.





Avec FOSC=48Mhz
Routine intercalée en interception Reception UART2 RX en mode interruption
Pour visu sur terminal Display (TX3 sur RA2) des reponses recue par UART2 RX

2em test avec FOSC=48MHZ ( PLL activée et UART3 a 38400 bauds .. OK)

Send_char_on_RA2_inc.c

Exemple de surveillance par UART3 echange BlueTooth (géré par UART2)


on peut donc avoir en tout 3,5 liaison RS232 sur un PIC18F87J50 (2 UART Hardware, 1 /2 UART Softw , 1 USB/UART virtuel





OLED C Click 96x96 65K couleurs en SPI

HARDWARE :

thumb/t_oled_c_click.gif thumb/t_Oled_Click_schem.gif
OLED C Click MikroE-1585 schema : adaptation connectique

Liaisons PIC18F87J50 et OLED_C_Click via MikroBus
thumb/t_PIC18F87J50_Mikrobus_OLED_Click.gi
Recapitulatif avec Datasheet SEPS114A

thumb/t_SEPS114A_MPU_Links.gif

SOFTWARE :

Adaptation d'un exemple MikroE a ce MCU et Hardware.

C:\_MikroC\_MesProjets_MikroC\_Oled_click\Oled_C_18F87J50_150729.c
Imbrication LED1 et LED2 + Message via HID terminal ..pour tracage programme (debugging)
C:\_MikroC\_MesProjets_MikroC\_Oled_click\Oled_C_18F87J50_150729.c
1er essai .. NEGATIF .. rien ne se passe sur l'afficheur ..mais la liaison HID terminal est OK

2em essai.. OK
Le probleme etait dans le choix du support MikroBus #1 ou #2 pour la pin D/C
et l'inversion au niveau SPI MOSI , MISO correspondant a SDI Oled et SDO oled
Mon choix final est la socket MicroBus #2, car je veux garder RA0 comme entree ANA.(qui est sur socket #1)
le tout étant de bien se souvenir de la definition MOSI => Master Output (to) Slave Input donc Sortie MCU vers Entree Oled

thumb/t_OLED_C_Click_on_Clicker2_b.gif thumb/t_OLED_C_Click_on_Clicker2.gif
OLED C Click OLED monté sur socket #2 Clicker2

terminal HID :


Source : Oled_C_18F87J50_150731.c
Chargeur : Oled_C_18F87J50_150731.hex


Affichage (Dessin) de texte :

ATTENTION: l'ecran est positionné a l'envers par rapport au repere OLED de la carte microclick.
Il n'y a pas de generateur de caractere dans ce type d'afficheur grafique.
Il faut utiliser une matrice des caracteres a afficher .Ici table de 92 caracteres affichables
Espace=32 ..
L'index d'une letrre , dans la table de caractere (Font) est donc son code -32
La lettre est representée couchée horizontalement ..
il faut explorer la 1ere collonne de chaque caractere , et d'apres le poids de chaque bit , allumer l epixel correspondant
et ainsi pour les 8 lignes de chaque representation (1 octet par colonne)
La difficulté , pour cet afficheur est de bien connaitre la fonction de deplacement de position dans la memeoire ecran
Perdu beaucoup de temps avec la fonction
alors qu'il faut utiliser :
MEM_X1 X // twice the same value !
MEM_X2 X
MEM_Y1 Y
MEM_Y2 Y
ce qui n'est Surtout pas evident !


Des qu'on arrive a maitriser la position et la couleur d'un point sur l'ecran, le rest es uit facilement .. Line,rectangle,cercle ...
deja developpé avec un Nokia 96x96 N&B.. plus facile a mettre en oeuvre in fine.

thumb/t_OLED_C_Click_text_test_150803.gif
OLED -C click sur Clicker2 + UART2 link RS232 detail afficheur

Source : Oled_C_18F87J50_150803.c
Chargeur : Oled_C_18F87J50_150803.hex

J'ai utilisé l'UART2 comme outil de debugging , afin de tracer ce qui devait apparaitre sur l'ecran
de sorte a valider d'abord l'alogorytme de "dessin de texte" avant de me pencher sur les instructions de l' OLED C
j'obtiens d'ailleur ce resultat sur le terminal Vbray..


thumb/t_Oled_Text_test_with_UART2.gif
OLED_text_test_with_UART2.txt


Usage font 5x7
( la meme que pour le Nokia 3310 96x48) pour avoir 16 car par ligne.

thumb/t_OLED_C_Click_Textes_and_Lines.gif
16 cars par ligne et mode dilaté 2x et 3x vertical


projet :Oled_C_Texte_18F87J50.mcppi
source : Oled_C_18F87J50_150804.c
Chargeur : Oled_C_Texte_18F87J50_150804.hex
config :Oled_C_Texte_18F87J50.cfg

A suivre : autres fonctions barregraph, indicateur ...



Afficheur LCD 2119 2x16 car , direct I2C
rev 15 sept 2015

voir aussi : Ready_For_PIC_18F45K22_Tests.htm

Hardware :

thumb/t_Test_LCD2119_Clicker2..gif ../_18F45K22_Ready_For_Pic/images/t_PCF2119_Pinout.gif
Test avec PIC18F87J50 Clicker2 connectique

ref du LCD : LCD_2x16_MC21605E6W-SPTLYI
récupération Docu sur farnell
Connecteur 6 pins :
Liaison 2 fils au LCD : I2C SDA, I2C SCL ,+ alim= +3,3V et Gnd
+ retro eclairage led Backlight A.K. alimentée en 3,3V via R=220 Ohms
Backlighting Colour: Yellow Green
Character Count x Line: 16 x 2
Display Area Height: 15.8mm
Display Area Width: 61mm


Software :
Trouver la bonne adresse I2C .. 0x74
Dialogue en I2C specifique .. ce n'est pas un traditionnel LCD 2x16 + circuit annexe interface I2C
La 1ere ligne debute en DDRAM 0x80
La 2em Ligne .. en 0xC0
les caractere imprimables a partir de 0x80H

voir docu : PCF2119X_rev12.pdf
Projet MikroC: 18F87J50_Uart_LCD_I2C_PCF2119.zip

19:30:55.687> Version : 03-09-2015 b
19:30:55.687> UART1 Test ADC0 with Clicker2 PIC18F87J50
19:30:55.750> Init ADC0
19:30:55.937> Init I2C1 100Khz
19:30:56.062> Device at adresse 74 found OK
19:30:56.062> Init Display LCD2119
19:30:56.687> Nb Step = 5
19:30:56.687> Write ABCDEF sur LCD2119


voir Notes_LCD_PCF2119_150906.txt
voir ce fil de discussion

Version modulaire : la partie LCD est dans un fichier include ..
donc plus facilement transposable sur un autre modele de PIC
18F87J50_LCD_2119_2x16c_I2C_h.zip

 



Generation nombre aleatoire

Exemple pour un nombre de 1 a 4 :
un compteur timer ex: Timer2 avec auto reload qui tourne tout seul dans son coin , sans activer d'interrupt!
PR2=255
avec T=1mS ou moins
on lit le timer2 et result=1 + (TMR2 >>6) => entre 1 et 4

Hardware:

carte Clicker2 PIC18F87J50

Software :

MikroC
pour 18F87J50 FOSC=48Mhz



Resultat:
chaque ligne correspond a une valeur stockée
avec plusieurs appui sur BP1 ! jusqu'a remplir les 32 valeurs



Finalement , en enlevant le Delay_ms(147);
on profite des 3rebonds" de BP1 pour augmenter les aleas !
pour obtenir en 1 seul appui <= 50mS une table presentant une meilleur distribution aleatoire



Il y a surement mieux ... a suivre !




../common/GIF/LTC1286p.jpg

retour a l'index