Microcontroller e sistemi di automazione


Perche` in particolare PIC16C84 e PIC16C71?



Essenzialmente per il basso costo, e per alcune pecugliarita`, molto interessanti come:



TABLE 3-3: PIC16C84/71 PINOUT DESCRIPTION

Pin Name        DIP SOIC  I/O/P  Buffer
                No. No.   Type   Type         Description

OSC1/CLKIN 1 16 16 I ST/CMOS3 Oscillator crystal/external clock input/external clock source input. OSC2/CLKOUT 15 15 O Oscillator crystal output. Connects to crystal or resonator in crystal oscillator mode. In RC mode OSC2 pin outputs CLKOUT which has 1/4 the frequency of OSC1, and denotes the instruction cycle rate. MCLR 4 4 I/P ST Master clear (reset) input/prog- raming voltage input. This pin is an active low reset to thedevice. PORTA is a bi-directional I/O port .il_ RA0 17 17 I/O TTL (Analog input 0 on PIC16C71) RA1 18 18 I/O TTL (Analog input 1 o nPIC16C71) RA2 1 1 I/O TTL (Analog input 2 on PIC16C71) RA3 2 2 I/O TTL (Analog input 3 on PIC16C71) RA4/TOCK1 3 3 I/O ST Can also be selected to be the clock input to the TMRO timer/- counter Output is open collector type. PORTB is a bi-diredctional I/O port. PORTB can be software programmed for internal weak pull-up on all inputs. RB0/INT 6 6 I/O TTL/ST1 RB0/INT can also be selected as an external interrupt pin. RB1 7 7 I/O TTL RB2 8 8 I/O TTL RB3 9 9 I/O TTL RB4 10 10 I/O TTL Interrupt on change pin. RB5 11 11 I/O TTL Interrupt on change pin. RB6 12 12 I/O TTL/ST2 Internupt on change pin. Serial programming clock. RB7 13 13 I/O TTL/ST2 Interrupt on change pin. Serial programming data. Vss 5 5 P Ground reference for logic and I/O pins. Voo 14 14 P Positive supply for logic and I/Opins.
Legend: I= input O= ouput, I/O= inpuut/output, P= power = Not used, TTL= TTL input, ST= Schmitt Trigger input Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt. 2: This buffer is a Schmitt Trigger input when used in serial programming mode. 3: This buffer is a Schmitt Trigger input when configured, in RC oscillator mode and a CMOS input otherwise.

Architettura dei microcontrollers (PIC16C84 in dettaglio).



In breve, ALU si connette con un bas dati, alla EPROM per ricevere le istruzioni, e contemporaneamente con un'altro bas dati opera sulla RAM, e sui registri funzione o d uso generale.
Con FILE REGISTERS si indica la zona da quest'ultimi occupata in RAM, essendo disposti su due banchi,accessibili alternativamente settando un flag, a 0 per la bank 0, a 1 per la bank 1.
Le operazioni aritmetico/logiche e di movimento, sono eseguite tramite il registro fisico W, e le porte di I/O esprimono un livello logico 0/1 sui bits del registro PORTA, oppure PORTB.
Per una panoramica completa sull'architettura dei microcontrollers (PIC16C84), fare riferimento alla manualistica in formato PDF su:
iniziando col sfogliare 30081E.PDF.


Programmare un microcontroller PIC16Cxxx.


Esiste in commercio un kit della MICROCHIP corredato con:
manuali esaurienti, un programmatore PICSTART interfacciato con la seriale, RS-232, del computer, assieme al pacchetto, di gestione, software MPS16B, contenente un macroassembler, perfettamente aderente a tutte le specifiche dei vari PIC16Cxxx, da un valido simulatore di processo software/hardware, e dal PICSTART, che permette di leggere/ignettare il codice macchina sullo specifico PIC16Cxxx.
Attraverso un set di 35 istruzioni assembler, universali per i PIC16Cxxx, e varie macroistruzioni si implementa l'applicazione desiderata, tenendo presente che solo la EEPROM del 16C84 e` cancellabile facilmente tramite la PICSTART.
Riporto di seguito, il set di istruzioni universali, disposte in modo da permettere un accesso ed un esame rapido.



PIC16Cxxx emnemonic opcode



Hexcod   ememonic_arg n[FLAG  Hexcod .......                    Descrizione

07 ADDWF_f,d 12[CDZ 3Ex ADDLW_k [CDZ ADDs W and f/k to W. 05 ANDW_f,d 2[Z 39 ANDLW_k [Z ANDs W and f/k to W. 10bb BCF_f,b 12[none 14bb BSF_f,b 12[none BITs clear f/set f. 18bb BTFSC_f,b 3(none 1Cbb BTFSS_f,b 3(none BITs test f, skip if clear\set. 20kkk CALL_k { Call subroutine. 01 8fff CLRF_f 2[Z 01 0xxx CLRW [Z 00 64 CLRWDT [TOPO Clear f/W/watchdog timer. 09 COMF_f,d 12[Z Complement f. 03 DECF_f,d 12[Z 0B DECFSZ_f,d 123(none Decrement f/, skip if 0. 28kkk GOTO_k {none Goto address. 0A INCF_f,d 12[Z 0F INCFsz_f,d 123(none Increment f/, skip if 0. 04 IORWF_f,d 12[Z 38 IORLW_k [Z Inclusive OR W and f/k to W. 08 MOVF_f,d 12[Z 00 8fff MOvWF_f [none 30xx MOVLW_k [none Move f/W to f/k to W. 00 0xx0 0 NOP [none No operation. 00 09 RETFIE {none 34xx RETLW_k {none 00 08 RETURN {none Return from interrupt/with k in W/form subroutine. 0D RLF_f,d 12[C 0C RRF_f,d 12[C Rotate left/right f through carry. 00 63 SLEEP [TOPO Go into standby mode. 02 SUBWF_f,d 12[CDZ 3Cx SUBLW_k [CDZ Subtract W from f/k from W. 0E SWAPF_f,d 12[none Swap nibbles in f. 06 XORWF_f,d 12[Z 3C XORLW_k [Z Exclusive OR W and f/k to W.
n = NOTE: 1. When an I/O register is modified as a function of itself ( i.e., MOVF PORTB, 1), the value used will be that value present on the pins themselves. For example, if the data latch is '1' for a pin configured as input and is driven low by an external device, the data will be written back with a "0". 2:If this instruction is executed on the TMRO register (and, where applicable, d=1), the prescaler will be cleared if assigned to the TMRO. 3: If Program Counter (PC) is modified or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP. b d x f k = 1 bit = 4 bits = 7/8 bits. for example: BCF 0x06,0x05 = 10bb 10 + b1 b0(Hex. 2) Hex. code is 12 86. [ = 1 cycle ( = 1 (2) cycles { = 2 cycles. k = litteral f = register file d = direction b = bit from 0 to 7. Se d(irezione) = 0 il risultato Š posto nel registro W, altrimenti se d Š 1 (defauult) viene posto in F file-register.


Il macroassembler MPASM.EXE/.TXT, MPSIM.EXE/.TXT, e schemi elettrici per un programmatore, sono disponibili nei vari siti MCHIP.


Interfacciamento del PIC16C71 col computer.


Nel pacchetto AN555.ZIP vi e` la realizzazione, attraverso il MAX 4232, dell'interfaccia hardware e software, per il PIC16C71.
Il programma di comunicazione, installato sul 16C71, risulta molto versatile, per le seguenti caratteristiche:

Ora abbinando alla comunicazione, cosi` implementata, una diversa applicazione,e` possibile da PC testarne il funzionamento.
Quindi il tutto puo` essere visto come un banco di lavoro, dove sviluppare la nostra specifica sperimentazione sul PIC16C84/71. Oppure ancora divenire, un semplice modo, ma efficace, per controllare eventi eprocessi esterni al PC.



Il progetto PicNet, una realta`.


Su www.softheart.com/St/home.htm e` stata pubblicata la realizzazione di un progetto basato su di una rete, sviluppata con l'ausiglio del MAX 485, per gestire l'illuminazione di una casa.
Utilizzando un doppino si collegano i nodi, all'interfaccia sul computer, che puo` regolare/controllare, a distanza, i vari punti luce.
Ogni nodo e` costituito da un MAX 485 connesso alla rete e a un microcontroller, al quale verra` bypassata la comunicazione.
Il PIC16C84 gestisce l'hardware, attraverso un suo programma applicativo, con l'obiettivo di operare la regolazione/controllo proveniente dal l'interruttore relativo al punto luce, o dal PC. Quindi risulta evidente come il progetto PicNet, affronti, risolvendo, una problematica e casistica complessa, oltre a sviluppare un proprio protocollo di comunicazione , basato su pacchetti di dati.
Una rete di microcontroller rappresenta, sicuramente, una fonte di discussione.