31 jan 2011
01/07/2015 rev 5.1

12F683 PIC en DIP8 seulement, Petit mais COSTAUD

Connection Pickit2 sur le PIC 12F683
Test#1 Mesures Analogiques et UART RS232 (MC)
Test#2 4 voies Analogiques 17 bits en I2C (MC)
Test#3 Pilotage sortie PWM via consigne Analogique (MC)
Test#4 8E & 8S via I2C + liaison Ethernet via XPORT sur UART + appli VB6
Test#5 cde Afficheur LCD via 76164 en mode simili SPI 2 fils (ASM)
Test#6 Cde Afficheur 7 seg via 76164 en mode simili SPI 2 fils (ASM)

Non testé : PIC10F220 Cde Afficheur 7 seg via 76164 en mode simili SPI 2 fils (ASM)


Connection Pickit2 sur le 12F683

Le chargeur 12F683_2Ana
L'eeprom du
12F683_2em.ihex et 12F683_2em.eed

images/t_12F683_pinout.jpg

12F683 designation des Pins
images/t_ICSP_Connection_12F683.jpg


raccordement au PIC12F683
images/t_12F683_1er_PickKit2.jpg PicKit2_ICSP_adapter

(1) "ERASE"
(2) "BLANK CHECK"
(3) File Load " 12F683_2em.hex"
(4) verifier que "MCLR" est cochée VDD=5,0V et "EEprom Data" cochée
(5) "WRITE"
(6) "VERIFY" ..doit passer en fond Vert si OK
(7)
relier la RS232 sur le PC .. lancer le terminal VBray 9600,N,8,1 sur le bon port comx "connecter"
(8) decocher "MCLR"
(9) cocher "On" pour alimenter le montage via le Pickit2 (Attention pas d'autre ALIM exterieure! sinon debrancher le pickit2)

PicKit2 est integré dans l'environnment MickroC via
"outils".
EEprom Editor est utilisé pour initialiser le contenu de celle-ci, stockage dans un fichier .ihex ou .eed
ne pas oublier de cocher la case "Use Eeprom in project".


images/t_Mikroc_Tools_b.jpg
12F683_Config_projet
outils MickroC configuration du 12F683


Attention il est preferable d'installer l'ensemble des programmes "Pickit2" dans le meme directory que MikroC.
Le programmateur Pickit2 peut rester en place et alimenter le montage, sans autre source exterieure
que la connection USB du Pickit2.
Avec un autre type de programmateur, il conviendra d'alimenter le montage en 5V
et d'isoler le VDD+5V du pickit2 !


Evaluation du PIC12F683 ..appli en C
L
a docu Microchip Pic12F683_41211d.pdf

TEST #1
Mesures de 2 voies Analogiques 10 bits et affichge sur terminal PC, via la RS232
Affichage message en EEPROM Pic
Pas de quartz, usage horloge interne du Pic.

schéma :


Rappel: GP0 et GP1 sont reliés au PC
via l'interface RS232 2T
Programme source :

Le projet defini dans MickroC, permet de definir la config du PIC12F683 (ici : 0x00C4)
En particulier l'usage de l'oscillateur interne à 8MHz , ce qui libere GP4 et GP5.
Master Clear internal permet de recupérer aussi la pin GP3 ( MCLR) comme entree .
GP1 et GP2 sont mobilisés pour gerer la RS232 via
l'interface RS232 ,
mais aussi pour la liaison au Pickit2 pour la programmation ICSP

Le programme source (en mikroC) de ce test: 12F683_2Ana

Sous MikroC, l'usage des bibliotheques : SoftwUart, ADC, Cstring, Convertions, EEprom rend tres facile
la programmation de ces fonctionalites... meme si cette appli ne sert pas à grand chose ,
hormis de prendre en main et evaluer quelques possibilites du PIC12F683.



on doit voir apparaitre sur le terminal le msg stocké en eeprom :
Version 09 janv 2011 PaulFjujo 12F683_2em.C
suivi des 2 mesures analogiques AN2 et AN3
VOLT AN2 GP1= 1023 VOLT AN3 GP4= 510
VOLT AN2 GP1= 1023 VOLT AN3 GP4= 510
VOLT AN2 GP1= 1023 VOLT AN3 GP4= 510
VOLT AN2 GP1= 1023 VOLT AN3 GP4= 510



si GP3=1 la led clignote toute les 500mS
si GP3=0 la led clignote au rithme de la tension delivree par le potar sur l'entree analogique AN2
avec 0V sur AN2 delai = 75 à 100mS
avec 1023 points delai > 1100mS
sur le terminal Vbray on peut cocher la fonction "Time" pour evaluer le timing d'acquisition variable si GP5=0



14:36:30.844> VOLT AN2 GP1= 1023 VOLT AN3 GP4= 510
14:36:31.945> VOLT AN2 GP1= 1023 VOLT AN3 GP4= 510

14:36:44.213> VOLT AN2 GP1= 430 VOLT AN3 GP4= 212
14:36:44.714> VOLT AN2 GP1= 426 VOLT AN3 GP4= 212

14:36:48.419> VOLT AN2 GP1= 0 VOLT AN3 GP4= 0
14:36:48.519> VOLT AN2 GP1= 0 VOLT AN3 GP4= 0




TEST #2

Affichage message en EEPROM Pic
Pas de quartz, usage horloge interne du Pic.
Mesures de 4 voies Analogiques 17 bits utiles et affichge sur terminal PC, via la RS232
Usage de la liaison I2C ET Uart.
Nota: I2C softwareutilisé , car pas de module I2C Hardware dans ce PIC
On atteint ici les limites de taille programme memoire Flash.

Le Schema


Le Prototype 

12F683_in_Situ_Pickit2


Le programme source (en mikroC) de ce test: 12F683_ADC18b
Usage des bibliotheques : SoftwUart, soft_I2C, Cstring, Convertions, EEprom 
Le Chargeur : 12F683_ADC18b
Le Fichier Eeprom Pic 12F683_3em.ihex
doc du convertisseur 18 bits , voir ICI

Resultats obtenus:
sur PC terminal Vbray
nota: les entrees CH1,2,3 sont en l'air !





TEST #3
Mesure de la consigne sur voie ANA 3 pour sortie sur GP2 en PWM et affichage sur terminal PC, via la RS232


Programme source :
Version Soft_PWM
Source :
CtrlPWMFan M05.c
Hardware: Entree ana2 sur pin5
Sortie PWM sur GP5
programme initialement prevu pour un 12F675 (
sans fonction CCP)


Le Schema

images/12F683_675_PWM_sch.jpg
Le Chargeur : CtrlPWMFan M05.hex

La version adaptée au 12F683 (avec fonction CCP) :
Le source :
Fan_PWM_control_12F683.c
Le chargeur :
12F683_Fan_Ctrl.hex

images/12F683_PWM_sch.jpg


TEST #4
Liaison 12F683 <-> XPORT CLIENT en VB6
Test 12F683 pilotant 8E et 8S d'un MCP23017 via un XPORT-03 et interface en VB6

Le proto 12F683:
12F683_4em_Proto.jpg


schema de test:

Le programme coté 12F683:
Le source : 12F683_MCP23017_Xport.c
Le chargeur : 12F683_MCP23017_Xport.hex
Le chargeur eeprom :12F683_MCP23017_Xport.ihex

Dans tous les cas, le PIC12F683 est autonome, mais dans ce cas precis,il ne fait pas grand chose
ormis la gestion I2C et la transmission en RS232, vu qu'on atteint les limites taille software 
dommage, pas assez de place pour gerer le MCP2304 4CH analog 17bits en I2C..!
Used ROM (program words): 1952 (95%)  
Je pense qu'en asm 100% cela devrait rentrer!  votre avis ?

dans cet exmple , il n'y a pas de traitement specifique lié au x possibilités du MCP23017
tel que la gestion d'interruption sur changement d'etat.

Astuce employée pour la reception :
La fonction Soft_Uart_Read est bloquante !
Apparament (sauf erreur ou incomprehension de ma part), je ne peux pas utiliser le Timer0
peut etre à cause de la gestion Soft I2C , pour pouvoir utiliser Soft_Uart_Break
J'ai donc relié la PIn RX à la broche GP3 pour generer une interruption sur changement d'etat
et armer un drapeau pour signaler l'arrivée d'un octet sur le port serie
Ce qui me permet de le capturer dans la foulée quand je suis dans 
une boucle de 32000 iterations servant de fenetre temporelle de capture.
La reception Soft_uart_Read ne peut pas etre dans le traitement d'interruption: fonction non re-entrante
Une tempo de ~500ms est rajouter pour avoir un envoi de trame toutes les secondes.
à 9600 bauds

 A SUIVRE .... avec un 18F252 !

 Le programme coté PC:

Commande des E/S par liaison ethernet directe (ou WIFI ou via le WEB)
La trame emise par le PIC est envoyée sur le XPORT en niveau TTL 
le XPORT encapsule cette trame  en Ethernet , le cable ethernet est relié à ma Freebox
qui sert de serveur / routeur WEB.
Le PC dispose d'une socket Client permettant de recuperer la trame emise par le PIC
le programme d'aplication VB6, sert d'interface Homme Machine , recupere et affiche individuellement les infos
et permet de renvoyer une commande pour les sorties.
Il n'y a pas de controle CRC etc.. la trame IP ethernet le fait deja !
Toute commande emise pour activer les sorties est verifiée en retour par l'etat des latch du MCP23017
 qui est comparé à la commande. Si le retour correspond la led verte est OK, sinon led rouge = discordance
Il peut y avoir jusqu'à 10 essai d'envoi de commande (automatique !)
Un gros pavé (ovale) rouge s'affiche en cas de probleme de communication:
probleme detecté par la non progression du numero de trame (codé sur 8 bits , evoluant de 0 à 255
à chaque envi de trame (~toutes les secondes)
Xport_Client_VB6_run.jpg 12F683_terminal.jpg
Recuperation sur Socket Ethernet sur PC distant en WIFI flux RS232 issu du PIC12F683

Client Xport executable seul 
Xport Client Installation
Piege: attention le flux RS232 doit etre regulié pour ne pas etre decoupé !

Nota: la finalité est d'utiliser un interface en Java (applet) dans une page WEB.
là je ne maitrise pas bien..
en cours..voir aussi ici XPORT_16F_18F/Pic_Xport.htm



A SUIVRE .....


TEST #5 
PIC 12F683 et Afficheur LCD 2x16 cars 
Cde en 2 fils via circuit 74xx164 
MPlab 8.92 ASM 100%

le schema :

images/12F683_2W_LCD_74LS164_sch.gif
Le prototype :


images/Pic12F683_LCD_76164_2w_asm_Proto.gif


Le Programme:
usage d'un PIC12F683 + LCD+ 74164 .. montage 2 fils
Tous les delays sont geres via le timer0.
La Pin GP4 est utilisée pour ressortir FOSC/4 .. pour bien verifier la config FOSC interne .
Mesure :1MHz à l'oscillo ( FOSC interne = 4MHz => 4/4= 1 Mhz)

Affichage sur la 1ere ligne de "0123456789"
Affiche sur la2em ligne :
un compteur incrementé à chaque tour de boucle (0 à255)
puis la valeur 8bits de la voie analogique RA0 ( 0 a 255)
une etoile = separateur
et la valeur en Beaufort , en divisant la valeur brute par 28 .. soit maxi 255/28=9
Une Led sur GP5 voit son etat inversé à chaque tour de boucle.
Tempo de boucle 1 sec

Le projet MPLAB ASM:
12F683_LCD_2w_74164.zip

La meme application avec un PIC12F1840 (asm)




TEST #6
PIC 12F683 et Pilotage afficheur 7 segment
Cde en 2 fils afficheur 7 segments, via circuit 74xx164
MPlab 8.92 ASM 100%

le schema :


Projet parti uniquement du schema utilisant un MCU 8051
Simulation avec CMS60 du comportement 74LS164 + Afficheur Anode commune

images/74LS164_7Segm_CMS60.jpg

74LS164_test.ckt
puis definition codage 7 segment en EEPROM
avec une particularité, detail à decouvrir !


Le prototype :

images/t_Pic12F683_7segm_76164_2w_asm_Proto.gif


Le Programme:
usage d'un PIC12F683 + 74LS164 + Afficheur .. Commande via 2 fils !
Tous les delays sont geres via le timer0. (Tempo 5mS, 200mS et 1 sec
La Pin GP4 est utilisée pour ressortir FOSC/4 .. pour bien verifier la config FOSC interne .
Compilation conditionnelle dans le source pour activer ou non un test de défilement valeur 0 à 9 sur afficheur
La valeur ADC 8bits de la voie analogique RA0 ( 0 a 255) est cumuléé 8 fois pour ensuite en faire la moyenne
Cette moyenne est divisée par 27 pour retomber sur une echelle de 0 à 9 (valeur en Beaufort)
Le point decimal de l'afficheur est relié à GP5 , pour signaler chaque tour de boucle.
Des resistances de 300 ohms ont été rajoutées sur chaque segment pour limiter le courant maxi.
Attention: Du fait que l'afficheur soit avec ANODE COMMUNE, il faut un zero logique pour allumer un segment
Bien verifier aussi avec la datasheet de l'afficheur, la correspondance : Pin afficheur et repere du segment
pour definir l'association necessaire Numero de digit -> nb de segments allumés,
ce qui se traduit par la table de codage (situee en EEPROM) :




Le projet MPLAB ASM:
12F683_LCD_2w_74164.zip
testé OK en réel !



La meme application avec un PIC12F1840 (asm)



PIC 10F220
La Meme Appli prévue
pour un PIC 10F220 .. mais non testée
Mini PIC , en format
DIP6 ou DIP8 ..
16 bytes de RAM seulement !ADC sur 8 bits, Pas d'interruption...et 33 instructions

Pas d'EPROM, donc
avec recup codage 7 segments en FLASH program..




images/t_hardware_10F220_1x7segment_serial_sch.gi
Compilé OK...mais non testé en réel

Questions ?

retour à l'index général