Content
Parsic

last change: 30.09.2002

Introduzione

Blocco

Parsic versione Demo

Parsic versione V3.41

Parsic © V3.41

Copyright ©  2002... Swen Gosch  All Rights Reserved

Norderstrasse 23

Elmshorn - Germany - European Comunity

If you have any questions please feel free to contact us:

In caso di necessita' potete contattarci ai seguenti recapiti:

Germany

Swen Gosch +49 (0)4121-22039

e-mail : Swen.Gosch@t-online.de

www.parsic.de

Italy

Parsic Italia 340-2455873

e-mail : parsicitalia@libero.it

www.parsicitalia.it

No part of this publication may be reproduced, stored in a retrival system or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, scanning, digitizing or otherwise, without the prior consense of  Parsic Swen Gosch.

Windows is a registrered trademark of Microsoft Corporation.

Microchip is a registrered trademark of Microchip coporation.


Uso dei pulsanti della Toolbar

La toolbar si presenta come un complesso di pulsanti, sotto forma di icone, che vengono azionati con il tasto sinistro del mouse, quando il cursore e' posizionato su di essi. La toolbar si divide in due gruppi di selezione.

selezione dell'operatore booleano AND, OR, XOR

selezione del Flip-Flop Set-Reset

selezione del Timer o base dei tempi (clock)

selezione del blocco Monostabile su evento

Conteggio di eventi

questi pulsanti selezionano i Contatori con risoluzione a 8 oppure 16 bit

selezione dello Schift-register

selezione del blocco Selezionatori ingressi o costante analogica

selezione del blocco comparatore di ingresso analogico Schmitt - trigger

questi pulsanti selezionano rispettivamente la gestione Tabelle

questi pulsanti selezionano rispettivamente la gestione Soubroutine

selezione del Multiplexer

selezione del Decodificatore/Codificatore bit > byte > bit

selezione della funzione Include

selezione dell'editor di commento

selezione dei livelli di potenziale di riferimento

selezione di un' etichetta Label

seleziona la funzione condizionatore d'impulso Impulse-in

seleziona la funzione condizionatore d'impulso Impulse-out

selezione del monostabile tipo One-Shot

seleziona la funzione blocco Comparatore digitale

seleziona la funzione blocco Operatore Matematico

selezione della gestione EEPROM

selezione della funzione Limiter

selezione delle funzioni Base LCD

selezione delle funzioni Testo LCD

selezione della funzione Sleep

selezione della gestione linea seriale RS232 e 485

selezione della gestione linea seriale RS232 e 485

La descrizione funzionale dei blocchi logici e' spiegata dettagliatamente in avanti.


Introduzione

Compilatore grafico per microprocessori PIC di Microchip

Parsic e' un assembler grafico che permette di gestire in modo automatico la compilazione di un certo numero di ingressi analogici (variabili con continuita' ), I/O digitali ( variabili a due valori ).

La limitazione nel numero di I/O gestibili e' legata al tipo di microprocessore impiegato. Il software permette di configurare blocchi logici software secondo le necessita' del progettista, considerando, pero', che il programma complessivamente realizzato non superi la capacita' di memoria del microprocessore adottato.

E' opportuno, prima di procedere al progetto circuitale definitivo, realizzare uno schema elettrico di principio per avere l'idea, piu' accurata possibile,della quantita' di blocchi logici necessari da impiegare nel progetto e, da qui, procedere alla scelta del microprocessore.

Operazioni pratiche per lo sviluppo di un progetto

Dopo l'installazione del programma sul vostro PC:

1.	predisporre i Settings di Parsic

2.	procedere al progetto collegando i blocchi logici circuitali

3.	procedere alla simulazione funzionale dei blocchi circuitali

4.	salvare il file sorgente .PIC (schema elettrico) ed il file di testo .ASM

5.	traduzione del file sorgente .ASM in file HEX, utilizzando MPASM

6.	programmazione del microprocessore

Requisiti di sistema

Parsic richiede i seguenti requisiti minimi di sistema:

computer IBM-compatibile 486 o modello superiore

Windows 95/98/Me/NT/2000/XP

memoria tipo harddisk con almeno 5 Mbyte di spazio libero

scheda video con risoluzione grafica minima di 800x600

mouse doppio tasto


Das erste Programm

Help not available.

Contact Viti Moschella or have a look into the Tutorial.


Identificativi di collegamento utilizzati da Parsic

ad intervalli di tempo fisso, il sistema esegue una lettura di tutti gli ingressi/uscite digitali effettivamente collegati. Parsic assegna automaticamente un codice numerico ad ogni linea di collegamento. In particolari circostanze quali, ad esempio, nella definizione dei port di ingresso e di uscita dal microprocessore, l'operatore deve forzare l'identificazione delle linee in osservanza delle istruzioni riconosciute da Parsic. Le linee di collegamento elettrico virtuale, vengono indicate con le seguenti diciture e la specifica delle stesse puo' essere automatica o manuale:

S. xx / Sx	specifica automatica : descrive il codice interno dei segnali assegnato dal programma. La codifica Sx.x e' orientata al bit, Sx al byte;

Rx, GPx	specifica manuale : l'operatore indica quale nome assegnare agli I/O;

ADCx	specifica manuale : l'operatore descrive quale nome assegnare agli input analogici.

ADC0, GP.4, RA.0, RC.5, ecc.

Esempio di elencazione degli I/O

Parsic riconosce automaticamente se un gate e' stato programmato come terminale di ingresso oppure di uscita. I terminali del processore che non vengono utilizzati vengono riconosciuti dal programma come port di ingresso.

Nota:	Microchip consiglia di mantenere a livello logico alto o basso i terminali non utilizzati del processore.

Specifiche:

RA.4	se programmato come terminale di uscita necessita di un resistore di pull-up, in quanto e' configurato nel pic come open collector;

RB.0...7	se impiegati come terminali di ingresso, il resistore di pull-up puo' essere programmato internamente;

RB.0,4...7	possono essere programmati come trigger oppure interrupt.

Corrispondenza degli ingressi digitali ad analogico:

RA.0	=	ADC0

RA.1	=	ADC1

RA.2	=	ADC2

RA.3	=	ADC3


Objekte erstellen

Help not available.

Contact Viti Moschella or have a look into the Tutorial.


Objekte verschieben

Help not available.

Contact Viti Moschella or have a look into the Tutorial.


Objekte löschen

Help not available.

Contact Viti Moschella or have a look into the Tutorial.


Verbindungen zwischen Objekten

Help not available.

Contact Viti Moschella or have a look into the Tutorial.


Microcontroller

Posizionare il puntatore del mouse sul menu SETTINGS e poi trascinarlo su MICROCONTROLLER, apparira' la seguente finestra di dialogo

Selezionando il pulsante raffigurato qui' di seguito si potra' scegliere uno dei 50 tipi di PIC che il programma e' in grado di assemblare.

Elenco dei PIC selezionabili

PIC16C54C	PIC16C71	PIC16F84	PIC16C620A	PIC12CE508A

PIC16C55A	PIC16C72	PIC16F84A	PIC16C621A	PIC12CE509A

PIC1656A	PIC16C72A	PIC16F627	PIC16C622A	PIC12CE518

PIC16C57C	PIC16C73	PIC16F628	PIC16CE623	PIC12CE519

PIC16C58B	PIC16C73A	PIC16F873	PIC16CE624	PIC12C671

PIC16C61	PIC16C73B	PIC16F874	PIC16CE625	PIC12C672

PIC16C62B	PIC16C74	PIC16F876	PIC16C711	PIC12CE673

PIC16C63A	PIC16C74A	PIC16F877	PIC16C712	PIC12CE674

PIC16C64A	PIC16C74B	 	PIC16C715

PIC16C65B	PIC16C76	 	PIC16C716

PIC16C66	PIC16C77

PIC16C67	PIC16C84

l'oscillatore

Nel riquadro Oscillator si imposta il tipo di oscillatore che si desidera impiegare e la sua frequenza di funzionamento

RC (ext)	: la frequenza di clock e' determinata dalla rete RC collegata al PIC

LP	: low-power osc. risuonatori con range fino a 200KHz

XT	: quarzi o risuonatori con range da 200 KHz a 4 MHz

HS	: quarzi o risuonatori con range da 4 a 20 MHz

RC	: oscillatore RC interno (non disponibile su tutti i PIC)

Clock frequency 	: la frequenza di clock dell'oscillatore in Hz

Calibration value

questa opzione e' importante per quei Pic equipaggiati di oscillatore interno e che sono dotati di finestra di cancellazione (JW-tipe versione finestrata del PIC). Il valore (hex) da inserire nella opzione calibration viene indicato nelle specifiche Microchip. Dopo il reset del Pic, questo valore viene scritto nel OSCCAL-register in modo che l'oscillatore interno funzioni il piu' vicino possibile a 4 MHz. Un parametro elevato del Calibration value (hex) produce un corrispondente elevato valore di oscillazione. Questo valore deve essere posto alla fine dei dati contenuti nella ROM, sotto forma di comando e deve essere visto dal microprocessore prima dello start del programma.

Configurazione

Watch-Dog Timer

letteralmente "cane da guardia". Interviene nel caso il programma si blocchi. L'impulso di reset viene prodotto dopo un periodo di circa 18ms dall'arresto del programma.

Power On Timer

se attivato,ritarda per un periodo di 72ms circa, lo start del micro, dopo il ciclo di reset.

PORTB-PullUp

se attivato, i PortB RB.0....RB.7 vengono collegati internamente alle resistenze di pull-up (+Vdd).

Brown-Out Detect

attiva il reset del micro in caso che la tensione di alimentazione scenda ad un valore inferiore a 4V. L'attivazione di questa opzione porta ad un aumento del consumo di corrente di circa 500 µA.

Master clear (MCLR)

selezionando MCLR = MCLR le operazioni di reset del micro avvengono collegando elettricamente questo terminale al circuito esterno.

MCLR = I/O Pin, MCLR int.

il teminale MCLR viene utilizzato come terminale di ingresso ed il tied to Vdd MCLR viene collegato internamente al mcp, all'alimentazione +Vdd

Optmize

(Pic con banchi di memoria RAM, diversi)

Attivando Optmize, Parsic provvede ad inserire le istruzioni dei comandi solo nei banchi di memoria che sono stati selezionati.

MPLAB-ICD

Se MPLAB e' attivo vengono liberate le seguenti aree RAM e ROM per l' Iincircuit-Debagger:

NOP comand all'indirizzo 0;

Indirizzo $70 ed $1EB nella RAM ( 1EF non e' usato da Parsic)

Le ultime 256 words dell'area ROM non sono usate.


 Selezionatore di ingressi o costante analogica

E' associato ad un ingresso analogico con risoluzione a 8 oppure 16 bit. oppure puo' essere utilizzato come costante analogica.

Il range dei valori sono compresi tra 0 - 255 per risoluzioni ad 8 bit

Il range dei valori sono compresi tra 0 - 65535 per risoluzioni a 16 bit.

Il valore del contenuto del selezionatore e' visualizza bile a video.

Esempio applicativo


 Multiplexer

Il blocco funzionale multiplexer viene impigato come distributore di ingresso/uscita di variabili digitali. E costituito da un circuito la cui caratteristica e' quella che le linee di ingresso/uscita vengono commutae al terminale di ingresso/uscita per mezzo di un commutatore elettronico ad alta velocita'. l'esempio circuitale che segue mostra le configurazioni che questo blocco puo' assumere:

Nel blocco di sinistra, le linee di ingresso sono commutate in uscita, ad una ad una, per mezzo della variabile di selezione applicato al terminale Select.

Nel blocco di destra , le linea di ingresso e' commutata alle uscite, utilizzando ancora il terminale Select. La selezione avviene sempre per una linea di uscita alla volta.

Se la selezione impostata al terminale Select e' piu' alta del numero di ingressi/uscite ammessi, essa viene ignorata dal programma. Gli ingressi del multiplexer vanno collegati ad una sorgente digitale il cui valore puo' essere di 8 oppure16 bit. Agli stessi ingressi digitali,in alternativa, e' possibile collegare una costante digitale.

Terminale INx	ingresso della variabile o costante digitale al blocco;

Terminale OUT	uscita della variabile digitale dal blocco funzionale;

Terminale IN	ingresso della variabile digitale al blocco;

Terminale OUTx	uscita della variabile dgitale dal blocco.

Select	selezione del terminale di ingresso oppure uscita.

Il multiplexer puo' essere rinominato con massimo 30 caratteri.


PIN's belegen


RAM and ROM

ROM

Read Only Memory

Read memory, only. The real program is filed in this memory area.

Each command verifies 1 word and is 14 bits broadly (PIC16CXX).

RAM

Random Access Memory

Optional memory access.

In the datasheets it is named as Register File, also.

Signals and variable are stored intermediately during the program flow in this memory.

The PIC16C71 or PIC16C84 has 48 bytes of RAM.

The bytes 0...11 are special register.

The bytes 12...47 are available for signals and variable. (36 bytes)

Note:	Below the menu bar Parsic permanently shows the values needed for the RAM. Under special circumstances the values for the ROM can differ with the words really used up a little.


 Inverter

look at Operatori booleani


Operatori booleani AND, NAND, OR, NOR, XOR, XNOR
 Operatori booleani AND, OR, XOR, NAND, NOR, XNOR

Sulle variabili digitali e' possibile operare con variabili booleane di tipo AND,OR e XOR. Questi blocchi forniscono in uscita anche il valore complementato dando cosi' la possibilita' di disporre anche di logiche di tipo NAND,NOR, XNOR.

Le tabelle della verita' delle funzioni sono le seguenti:

ingressi	uscite Sx.x

OR-NOR	a	b	OR	NOR

0	0	0	1

0	1	1	0

1	0	1	0

1	1	1	0

AND-NAND	AND	NAND

0	0	0	1

0	1	0	1

1	0	0	1

1	1	1	0

XOR-XNOR	XOR	XNOR

0	0	0	1

0	1	1	0

1	0	1	0

1	1	0	1

La funzione NOT e' liberamente collegabile ai gate di ingresso e uscita delle logiche, consentendo di realizzare funzioni booleane complesse.

Esempio di predisposizione degli operatori booleani:


Or-gate
 Or-gate -> leave empty

Look at Operatori booleani


 Timer o generatore base di tempi

in uscita dal blocco timer e' possibile prelevare un segnale digitale,di tipo astabile, e di durata ciclica perfettamente simmetrica. L'applicazione di questo segnale e', normalmente, quello di base di tempi (clock generator) per contatori , display LCD, multiplexer,ecc.


 RS-Flip-Flop set-reset

Sulle variabili digitali e' possibile operare con delle unita' di memoria tipo set-reset. La funzione set e' attivata da un livello attivo sull'ingresso S mentre la funzione di reset e' attivata da un livello attivo sull'ingresso R. Nello stato Set si ha un'uscita Y a livello alto, mentre nello stato Reset si avra' l'esatto opposto. Quando gli ingressi sono disattivi lo stato del flip-flop viene mantenuto in quello iniziale.

Esempio applicativo:


 Blocco circuito monostabile

Blocco circuito monostabile, su evento

una variabile digitale applicata all'ingresso del monostabile determina, per un periodo limitato di tempo, la variazione dell'uscita, da livello basso a quello alto. Le funzioni svolte da questo blocco sono le seguenti:

monostabile,su evento, retriggerabile:

l'applicazione di un impulso digitale in ingresso,di breve durata ( one shot), determina lo stato di cambiamento digitale dell'uscita da livello logico basso a livello logico alto. Tale livello logico resta attivo per tutta la durata della temporizzazione impostabile da 1 a 65535 ms. Attivando il rettrigger, l'uscita rimane a livello logico alto, tra il ripetersi di un impulso e l' altro, nel dominio di tempo di durata dell'impulso stabilito .

Esempio di monostabile,retriggerabile:

monostabile ,su evento,con attivazione ritardata

l'applicazione dell' impulso digitale in ingresso, determina lo stato di cambiamento digitale dell'uscita da livello logico basso a livello logico alto, solo dopo un certo tempo, determinato dall' impostazione della soglia di intervento che va' da 1 a 65535 ms. L'impulso di ingresso deve essere mantenuto fino al cambiamento di stato dell'uscita. Togliendo l'impulso di ingresso l'uscita del monostabile torna a livello logico zero.

monostabile ,su evento,con attivazione slope

l'applicazione dell'impulso digitale in ingresso, di breve durata ( one shot) , determina lo stato di cambiamento digitale dell'uscita da livello basso a livello alto. Tale livello resta attivo per tutta la durata della temporizzazione impostabile da 1 a 65535 ms.


 Conteggio di eventi

con questo blocco e' possibile contare le variazioni di stato di una qualsiasi variabile digitale uscita da un'altro blocco o applicata al gate di ingresso del microprocessore.

E' possibile visualizzare il valore conteggiato e forzarlo a zero attraverso l'ingresso digitale di reset. Il ritmo di scansione dipende dal segnale applicato all'ingresso,compatibile con il tipo di microprocessore utilizzato. Il valore del contenuto del contatore e' visualizzabile a video,con risoluzione 8 bit.

Esempio applicativo del blocco contatore 8 bit :


 Blocco conteggio di eventi avanti/indietro

questo blocco permette di contare le variazioni di stato di una qualsiasi variabile digitale uscita da un'altro blocco o applicata al gate di ingresso del microprocessore.

Il conteggio puo' avvenire sia in avanti, in modo incrementale, oppure all'indietro in modo decrementale. Il contenuto del contatore e' visualizzabile su video ed e' possibile forzarlo a zero attraverso l'ingresso digitale di reset. Il ritmo di scansione dipende dal segnale applicato all'ingresso,compatibile con il tipo di microprocessore utilizzato. Il valore del contenuto del contatore e' visualizzabile a video con risoluzione a 8 oppue 16 bit.

Esempio applicativo del blocco contatore avanti - indietro:


 Blocco schift register

questo blocco permette di spostare lo stato logico di una variabile digitale, uscita da un'altro blocco, e di trasferirla sulle uscite dello schift register, in relazione alla frequenza di clock applicata al suo ingresso Data. L'ingresso Reset deve essere posto a livello logico zero durante la fase di schift. Se posto a livello alto il contatore viene azzerato.Lo schift register trova la sua particolare applicazione nelle operazioni di misura e conteggio nel dominio di tempo .

Esempio applicativo:


 Comparatore ingresso analogico ( Schmitt - trigger )

Confronta i due ingressi collegati a due qualsiasi variabili analogiche e fornisce in uscita un livello logico Vero o Falso secondo l'impostazione data. Inoltre e' prevista una isteresi parametrizzabile che evita instabilita' al circuito. Il valore dell'isteresi viene sottratto ad uno dei due ingressi ( IN ), in base allo stato del comparatore prima di fare il confronto, comportandosi in tal modo come un'area di banda morta. Per una corretta definizione dei valori di intervento dei comparatori e' da tenere presente che il valore HY si sottrae a uno dei due ingressi. Pertanto, per cambiare di stato, l'ingresso IN deve modificarsi in modo da differire dall'altro ingresso, meno il valore dell'isteresi:

IN	=	variabile ingresso analogico ( - HY )

SP	=	k (costante ) analogica o digitale

HY	=	isteresi

Q	=	uscita blocco comparatore

Il valore del contenuto del comparatore e' visualizzabile a video.

Esempio di un possibile collegamento del blocco comparatore analogico ( Schmitt- trigger )


Blocchi funzionali Table e Call
 Blocchi funzionali Table e Call ( subroutines)

Table

Il blocco funzionale Table viene utilizzato per memorizzare nella ROM un determinato numero di variabili digitali che potranno essere richiamate dal blocco funzionale Callpage26. Il valore espresso di queste variabili puo' essere in dicato in 8 oppure 16 bit.

Valori a 8 bit	vengono catalogati in una tabella contenente 256 locazioni (0...255) specificat in numerazione crescente da 1 a 256, il cui valore e' compreso tra 0 e 255 ;

Valori a 16 bit	vengono catalogati in una tabella contenente 128 locazioni (1....128) specificate in numerazione crescente da 0 a 127, il cui valore e' compreso tra 0 e 65535. La sequenza dei valori e' compresa in una scala contenente

L'utilizzo di questo blocco e' indicato per le seguenti funzioni:

decoder per display a 7 segmenti LED;

linearizzazione di valori analogici.

Portarsi con il puntatore del mouse sul blocco funzionale Tab e cliccare con il tasto destro.

Si aprirà' la finestra di dialogo come sopra in figura. Procedere nel modo seguente:

dare un nome identificativo alla tavola e definire la sua lunghezza, cioe' il numero delle variabili che essa deve contenere.

Definire il tipo di dato se a 8 oppure 16 bit

Definire comesi vuole rappresentare i dati in tabella

Decimale	=	numeri compresi tra 0 e 9;

Hex	=	valori numerici e lettere, preceduti dal simbolo $ es. $7F

Bin	=	valori numerici 0 - 1. Il bit piu' significativo viene posto a sinistra.

Asc	=	codici ASC, preceduti dal segno

Indipendentemente dal tipo di rappresentazione che si e' scelto nel riquadro display, inserire i dati partendo dal rigo 0 della tabella.

Il contenuto della tabella puo' essere salvato in formato ASC. con il comando Save... . Il contenuto di una tabella, precedentemente salvato, viene ricollocato in tabella in formato ASC. I valori vengono riposti con lo stesso ordine in cui sono stati salvati. Le linee precedentemente non utilizzate vengono ignorate.Se la tabella e' predisposta per valori ad 8 bit, i valori eccedenti vengono eliminati.


 Call

Il blocco funzionale Call serve per richiamare i valori memorizzati nel blocco Tablepage25 (soubroutines).

I valori delle variabili contenuti in tabella, vengono richiamati dalla Call, attraverso il collegamento ai blocchi funzionali, come in esempio:

All'ingresso del modulo MX1 vengono inviate variabili digitali ognuna del valore di 8 bit.

L'ingresso Select di MX1 e' collegato ad un generatore di selezione che pone in uscita, una alla volta, i dati di MX1. Questi, entrando nel modulo CALL vengono confrontati con i valori memorizzati in tabella e convertiti, in un' altro valore digitale, corrispondente in questo caso alla decodifica 7 segmenti del display led.

Le variabili in ingresso al modulo CALL devo corrispondere al numero di variabili digitali memorizzate in tabella. Se i valori sono in eccedenza, il processo di decodifica viene resettato, con conseguente blocco del sistema. I valori delle variabili digitali in ingresso-uscita dal blocco sono da 8 oppure 16 bit.


 Include

Utilizzando questa opzione, l'utente puo' inserire nel sorgente Parsic una soubroutine specializzata in una determinata funzione. Portandovi con il puntatore del mouse sopra il blocco include, cliccando con il tasto destro comparira' questa finestra di dialogo.

Nel riquadro [image] scegliere in quale posizione del file sorgente si desidera inserire il file Include;

Nel riquadro [image] specificare il nome del file ,che deve essere completato dall'estensione .INC;

Utilizzare l'opzione [image] per scrivere il file in formato testo;

Nel riquadro [image] inserire le dimensioni del file.

Nota:	inserendo l'include nella posizione Interrupt, e' necessario che il file contenga un ciclo di temporizzazione . Diversamente il file include verrebbe ignorato dal programma.


 Blocco condizionatore di impulsi, impulse-in

Questo modulo viene impiegato per determinare il tempo di durata di un impulso,applicato all'ingresso di uno dei PortB4...7, con una risoluzione di 16 bit.

La precisione della misura dipende da diversi fattori,tra questi, la frequenza di clock ed il numero di timer e monoflop impiegati.

Impiegando un quarzo da 4 MHz la risoluzione della misura e' di 1 microsecondo ( a 20 MHz = 20 nanosecondi)

La lunghezza dell'impulso da misurare deve essere compresa tra 50 e 65500 campionamenti/sec.

Il tempo di durata dell'impulso e' calcolato sul fronte positivo di salita dell'impulso .Sul fronte di discesa dell'impulso ha termine la misura che viene memorizzata in una variabile denominata RBxTIME ed RBxTIME_HI.

Portando il cursore del mouse sul blocco impulsin potrete selezionare, nella finestra di dialogo, se la misura deve essere attuata sul fronte di salita o di discesa dell'impulso. Inoltre sara' possibile selezionare quale degli ingressi PortB utilizzare nel circuito.

Parsic genera il codice RBTMP.x , che e' la copia dell'impulso applicato al PortB impiegato. Questo codice viene normalmente utilizzato per attivare i circuiti di campionamento e conversione del segnale all'interno del circuito in progetto. Il blocco logico condizionatore di impulsi, nasce dall'esigenza applicativa nei circuiti di telecomando proporzionale quali, ad esempio, quelli del modellismo navale,aereo,automobilistico,ecc. Nell'esempio che segue,viene mostrato un circuito applicativo dove, oltre al condizionatore di impulsi ( siglato PI1 ) ,vengono utilizzati anche i blocchi logici limiter ( LM1 ) ed impuls-out (P01) .


Blocco condizionatore di impulsi, impuls-out e generatore PWM
 Blocco condizionatore di impulsi - impuls-out, e generatore PWM

Questo circuito rielabora il tempo di durata di un impulso applicato al suo ingresso e lo restituisce in uscita con una precisione di campionamento a 16 bit.

Per migliorare la precisione dell'impulso di uscita, il programma del microcontrollore subisce una fase di arrresto per tutta la durata del campionamento.

Viene generato un solo impulso di uscita ,quando l'ingresso di abilitazione EN e' posto a livello alto,

( fare riferimento allo schema elettrico applicativo impuls-in ).

Il tempo di campionamento dell'impulso dipende dalla frequenza di clock del microprocessore,che corrisponde ad una risoluzione di 1 microsecondo se il quarzo del microprocessore e' di 4MHz.

La lunghezza dell'impulso da applicare, all'ingresso del modulo, deve essere compresa tra 50 e 65550 campionamenti/sec.

Generatore di impulsi PWM

Questa funzione non e' implementabile su tutti i modelli di Pic.

Utilizzando il generatore PWM e' possibile ottenere dal terminale di uscita del modulo un impulso la cui durata dipende dal valore numerico della variabile digitale applicata al terminale di ingresso.

La frequenza di uscita dell'impulso e' costante 4KHz con clock di 4MHz. Con questo modulo e' possibile ottenere valori di tensione analogici, collegando in uscita opportuni filtri livellatori d'onda.

Ad ogni variazione positiva,dell'impulso d'ingresso, il valore di uscita al modulo viene scritto nel Duty-Cycle- Register. Questo valore e' compreso tra 0 e 1023 bit.

Esempio applicativo del generatore PWM


Comparatore digitale
 Comparatore digitale:

Confronta gli ingressi collegati a due qualsiasi variabili digitali e fornisce in uscita un livello logico Vero o Falso secondo l'impostazione data :

S = 1 se	a > b

S = 1 se	a < b

S = 1 se	a >= b

S = 1 se	a <= b

S = 1 se	a = b

S = 1 se	a <> b

Esempio di collegamento di blocchi comparatori:


 Logiche con operatore matematico

Blocco sommatore digitale:

Il blocco sommatore esegue la somma di due variabili digitali e ne fornisce all' uscita il risultato :

S = a + b oppure S = k + a (k = costante)

La risoluzione puo' essere di 8 bit o 16 bit. Pertanto le variabili ammesse, nel primo caso, sono fino a 255 bit, nel secondo caso fino a 65535 bit.

Esempio di somma di una variabile analogica e di una costante digitale:

Blocco sottratore digitale:

Il blocco sottratore esegue la differenza di due variabili digitali e ne fornisce all'uscita il risultato.

La funzione e' valida solo se a > b ,diversamente avremo un risultato non congruo :

S = 1 se a >= 1 b = 0

La risoluzione puo' essere di 8 o 16 bit.

Esempio di differenza tra una variabile analogica ed una costante digitale:

Blocco divisore digitale:

Esegue la divisione tra due variabili digitali collegate ai suoi ingressi. L'operazione e' valida se b>0

Diversamente avremo:

S = 255	se	a >= 0	b = 0

S = 0	se	b > a

La risoluzione puo' essere di 8 o 16 bit.

Esempio:

Blocco moltiplicatore:

Esegue il prodotto di due variabili digitali collegate ai suoi ingressi. Il risultato e' dato da S = a * b

La risoluzione puo' essere 8 o 16 bit.

Esempio di moltiplicazione tra due valori digitali:


PIC16C71(1)

Technical data:

Supply voltage:	3...6 V (max. 7.5 V)

Current:	2 mA (4 MHz) 32 µ A (32 KHz)

ROM:	1024 Word (EPROM)

RAM:	36 bytes (PIC16C711 = 68 bytes)

Timer:	1 - 8-Bit

A/D converter	1 (4 channel)

In- or Output:	13

Outputs may be loaded up to 25mA (in total 150 mA only)

Brown-Out Detect:	(only PIC16C711)

internal reset at Vdd < 4 V

Advantage	reliable start of the PIC at slow

rising supply voltage:

Disadvantage:	500 µA extra electricity consumption

PIC variants:

PIC16C71-20/JW

erasable EPROM version with window. Working up to 20 MHz, for development

PIC16C71-04/P

version without windows, one time programmable for batch production, up to 4 MHz

PIC16C71-04/SO

version without windows, SMD, one time programmable, up to 4 MHz

Oscillator types

RC	=	The clock frequency determines a RC-Combination

LP	=	Low-Power, for quartzes or Ceramikswinger up to 100 kHz

XT	=	for quartzes or Ceramicswinger up to 4 MHz

HS	=	High speed, for quartzes or Ceramicswinger up to 20 MHz


Le Environment

Portare il puntatore del mouse sul menu Settings e poi azionare il pulsante Environments. Attraverso la finestra di dialogo delle environments, si possono modificare le funzioni operative del programma, elencate qui' di seguito:

nel riquadro Handling

Create signal names automatically

attivando questa funzione le linee di collegamento vengono codificate automaticamente con sigle significative diverse. Le linee codificate Sx.x ,sono orientate a segnali con singolo bit, quelle codificate Sx, sono orientate a segnali con singolo byte.

Right mouse button center

attivando questa funzione, potremo spostare il centro del nostro piano di lavoro in un determinato punto dello schermo, posizionando il cursore del mouse in una determinata area, cliccando con il tasto destro del mouse.

Select without shift

quando attivate questa funzione,potrete selezionare gli oggetti o le funzioni accessorie senza l'ausilio del tasto shift.

Connections rectangularly

attivando questa funzione (consigliata) le connessioni delle linee virtuali sono ad angolo retto. Diversamente esse saranno libere di orientarsi su 360º

il riquadro Presentation

Show in 3D

selezionando la visualizzazione in 3D gli oggetti e le linee di collegamento saranno presentate in grafica in 3D. Se non si ha una buona scheda grafica, ne sconsigliamo l'uso.

Arrange Windows automatically

selezionando arrange, le dimensioni del piano di lavoro sono disposte automaticamente dal programma.

Arrows at slanted connections

se non e' stato selezionato connections rectangularly, l'inizio e la fine di ogni linea di collegamento e' marcata da una freccia direzionale di orientamento.

Simulations Refresh ms

impostando un periodo di tempo compreso tra 1 e 65000 ms si determina il periodo di aggiornamento funzionale del circuito, durante la fase di simulazione.

Language

e' la scelta della lingua operativa del programma.


Project Propertys , i dati di progetto

Spostare il puntatore del mouse sul menu SETTINGS e poi azionare il pulsante Project. I dati contenuti in questa maschera sono relativi al progetto che si vuole iniziare. Questi dati saranno aggiornati automaticamente ad ogni nuova sessione del progetto, se nel riquadro Increment automatically verra' spuntata la relativa casella. Inserendo la Password il progetto sara' protetto da accessi non autorizzati ( impiego in multiutenza di Parsic).


 I potenziali di riferimento

Utilizzando questa funzione si possono collegare ai terminali di ingresso dei blocchi funzionali i riferimenti di potenziali GND e Vcc.

Questi riferimenti non sono altro che lo 0 (zero) oppure 1 (uno) logico digitale. Servono, ad esempio, a forzare un livello logico su una porta di ingresso di un operatore booleano, a mantenere lo zero logico al terminale di reset di un contatore,ecc.

Dopo aver selezionato il riferimento di potenziale, portatevi con il puntatore del mouse su di esso,operate sul tasto destro del mouse e,quando compare la finestra di dialogo,definite l'orientamento da dare all'oggetto e la sua polarita'.


 Il comando SIM

Prima di attivare la simulazione funzionale dei circuiti, e' necessario che venga impostato correttamente il tempo di campionamento dei segnali, che dovra' essere compreso tra 1 e 65000 ms ( Simulation refresh ). Diversamente, la funzione di simulazione dei circuiti potrebbe non funzionare .

Per attivare il processo bisogna portare il cursore del mouse sulla toolbar e azionare il pulsante SIM. Le linee di collegamento elettrico virtuale si attiveranno, cambiando tonalita' di colore, e si potranno notare le variazioni dello stato logico dei dispositivi . Durante la fase di simulazione si puo' intervenire sui componenti logici, forzando il livello dei segnali in circolo per mezzo del puntatore mouse, posizionandosi direttamente all'ingresso delle terminazioni dei blocchi logici Se durante il processo di simulazione si attivano i messaggi di errore, il processo verra' interrotto : procedete alla correzione dei circuiti, secondo le indicazioni che verranno date.


 Label

Help not available.

Contact Viti Moschella or have a look into the Tutorial.


 Gestione EEPROM

La EEPROM dati e' una particolare area di memoria nella quale e' possibile scrivere valori numerici che non vogliamo vengano persi in caso di mancanza di tensione di alimentazione,ovvero allo spegnimento del circuito mpc.

Le modalita' di accesso alla memoria EEPROM seguono speciali procedure onde evitare perdite di dati in condizione di funzionamento anomalo.

Con il blocco EEPROM (EE) si possono memorizzare i contenuti delle variabili digitali sia nelle memorie integrate nel chip del mpc, sia in quelle esterne. Le variabili contenute nella memoria EE sono richiamate ad ogni reset del mcp. Affiche' le variabili possano essere scritte nella memoria EE bisogna utilizzare la tabella EE-PROM INFO. Questa tabella si attiva con il tasto destro del mouse quando il puntatore si trova posizionato sul blocco funzionale EExx. Essa consente di spostare i dati dall'area RAM a quella EEPROM con semplici operazioni tabellari.

La figura seguente mostra la tabella EE-Prom-info che appare sullo schermo quando essa viene attivata:

Nel riquadro di sinistra della tabella sono elencati le variabili dei blocchi logici digitali facenti parte del circuito in progetto. Queste variabili, saranno codificati in una sequenza corretta di codici operativi (opcode) e memorizzati all'interno della memoria del pic.

Tale memoria di programma e' composta, secondo il tipo di microprocessore, da un certo numero di locazioni, ognuna delle quali puo' contenere un opcode da eseguire. Ricordiamo brevemente che, l'architettura dei microcontrollori di Microchip e' particolare, si basa su una CPU strettamente di tipo RISC, con separazione tra bus dat e bus istruzioni ( tipo Harvard), nessuna possibilita ' di indirizzare memoria esterna ed un elevato numero di registri interni,che costituiscono di fatto l'unica area RAM utilizzabile.

Gestione della EEprom interna.

Parsic consente di poter effettuare il salvataggio delle variabili digitali, elaborate dal programma, predisponendo in modo opportuno il trasferimento dei dati dall'area di memoria RAM a quella EEprom.

Esempio:

vogliamo trasferire il valore della variabile ZR4 in EE.

Le variabili ZR4 ed ZR4_FD si possono individuare nella tabella di sinistra. Posizionarsi con il cursore del mouse su una delle due variabili e selezionarla (tasto sinistro del mouse). Ora portarsi sul pulsante di trasferimento, posto al centro della tabella, e spostate nella tabella di destra la variabile selezionata azionando il pulsante > : la variabile selezionata sara' trasferita immediatamentre nell'area EEprom. Si ripete l'operazione con la seconda variabile e cosi' via, fino a trasferire in EEprom tutte le variabili di nostro interesse. Ovviamente si possono eseguire l'operazioni inverse, nel caso di trasferimenti non piu' necessari.

Si consiglia di attivare la funzione Cecksum, specialmente per i dispositivi Pic vergini.

Gestione della EEprom esterna

E' possibile la gestione esterna della EEPROM, per tutti quei dispositivi Pic (previsti a programma ) che non sono equipaggiati di EEprom interna ( PIC12CE e PIC16CE).

I dispositivi che adoperano l' EEprom esterna saranno collegati a questa per il mezzo del bus I²C

( Inter-Integrated Circuit ) adoperando lo standard Philips. Nella specifica dello standard I²C la velocita' massima di trasferimento dei dati e' di 100Kbps. Parsic rispetta il protocollo di comunicazione I²C . Di seguito specifichiamo le seguenti terminologie, propie del bus I²C:

Transmitter	e' il dispositivo che invia i dati attraverso il Bus di collegamento;

Receiver	e' il dispositivo che riceve i dati dal Bus di collegamento;

Master	e' il dispositivo che inizia il trasferimento dei dati,genera il segnale di Clock, e termina il trasferimento dei dati;

Slave	e' il dispositivo indirizzabile attraverso il Master;

Multi-master	sono piu' dispositivi Master che condividono lo stesso Bus di collegamento ed il cui sistema di controllo fa si che non si verifichino conflittualita' nel sistema di comunicazione;

Arbitration	e' una procedura che consente ad un solo dispositivo master di controllare il bus di collegamento e fa si che non si verifichino conflittualita' nel sistema di comunicazione;

Synchronization	procedura che consente di sincronizzare il segnale di clock a piu' dispositivi collegati tra loro.

Nota:	Parsic consente di operare con piu' dispositivi I²C collegati sullo stesso bus di comunicazione, pero' si consiglia di operare sempre con soli due dispositivi per volta, cioe' con un dispositivo Master ed un dispositivo Slave. Nello schema elettrico funzionale del sistema distingueremo.

il circuito Master	: (Pic) trasmette e Slave riceve;

il circuito Slave	: (EEprom) trasmette e Master riceve.

In ogni caso sara' sempre il Master a generare il segnale di clock.

Lo stadio di uscita del Clock si chiama SCL e quello dei dati SDA. Questi stadi sono costituiti da transistor configurati ad open collector oppure open drain, ed una resistenza esterna di pull-up deve essere collegata necessariamente alle porte di comunicazione.

Denominazioni dei port di comunicazione.

Bisogna distinguere la denominazione delle porte di comunicazione secondo il tipo di Pic che viene utilizzato. Per i Pic della serie 12CExxx , Parsic denomina i port in questo modo:

SDA	=	GPIO.6

SCL	=	GPIO.7

Per i Pic della serie 16CExx, Parsic denomina i port in quest'altro modo:

SDA	=	EEINTF.6

SCL	=	EEINTF.7

Si possono comunque utilizzare altri port di comunicazioni sia per il terminale SDA che per SCL. Bisogna fare attenzione alla denominazione di questi port, nominandoli correttamente:

PORTx.x oppure GPIO.x

Altre denominazioni tipo Rx.0 oppure GP.x, ecc. non sono ammesse.

Salvataggio con cecksum

Salvando in eeprom i dati ed utilizzando questa opzione, viene generato il codice di cecksum di un byte. Questo codice viene utilizzato per confrontare il corretto valore dei dati memorizzati in eeprom. Se il dato memorizzato non e' corrispondente al cecksum, il dato viene azzerato.

Check after writing ( verify)

Utilizzando questa opzione, il dato trasferito in EEprom viene controllato nella sua integrita'. Se questo dato non e' stato scritto corettamente, il processo di trasferimento viene ripetuto.

Slave address

Le EEprom 24Cxx, devono essere identificate attraverso un indirizzo di collegamento. Questo indirizzo viene specificato nella casella Bus-Address con la denominazione A0, A1 e A2. Per default questa denominazione e' 0 ( zero).


 Limiter

Questo blocco funzionale controlla il contenuto di una variabile e stabilisce due livelli di allarme corrispondenti al valore limite superiore ed inferiore della variabile stessa.

Se il contenuto della variabile di ingresso e' maggiore del valore di set impostato (top limit) ,l'uscita corrispondente si portera' a livello logico alto.

Se il contenuto della variabile di ingresso e' inferiore al valore di set impostato (bottom limit) , l'uscita corrispondente si portera' a livello logico alto.

Il blocco funzionale limiter si comporta similmente ad un filtro passa banda: il valore numerico della variabile digitale, in uscita dal blocco, sara' contenuto all'interno dei valori di set (top e bottom limit) impostati, i valori inferiori e superiori al set saranno tagliati e non verranno considerati nell'elaborazione della variabile.

L'uso delle uscite digitali di allarme sono del tutto opzionali. Se esse non vengono impiegate Parsic non le utilizzera' e non verranno considerate nel file sorgente.

E' possibile stabilire il funzionamento del blocco con definizione a 8 oppure a 16 bit.

Esempio di impiego del blocco limiter:


 Blocco funzionale de-codificatore Bit > Byte < Bit

Questo blocco funzionale, svolge l'importante funzione di codifica o decodifica delle variabili digitali, semplificando notevolmente la formazione degli schemi funzionali, specialmente quando sono molti i blocchi logici da gestire. Lo schema seguente mostra il componente nella sua dimensione massima:

Il modulo di sinistra svolge il compito di Codifica: portando a livello alto uno o piu' terminali di ingresso in uscita si ottiene un determinato valore digitale, in dipendenza degli ingressi attivati.

Nel modulo di destra si ha il funzionamento opposto, collegando al suo ingresso una variabile digitale, questa viene Decodificata ed il numero dei terminali di uscita attivi dipende dal valore della variabile.

Dal numero degli ingressi/uscite impiegate, dipende il valore massimo della variabile digitale impiegata che puo' essere di 8 oppure 16 bit. I terminali che non vengono utilizzati, non verranno considerati in via di compilazione del file sorgente. L'esempio circuitale che segue mostra l'impiego di due circuiti di codifica, utilizzati per selezionare il cliclo di un temporizzatore:


 Gestione display LCD alfanumerici

I display LCD piu' comuni dispongono di un'interfaccia ideata da Hitachi che nel tempo e' diventata uno standard industriale utilizzato ovunque. Questo tipo di interfaccia prevede che il display sia collegato al micro tramite un bus di 4 o 8 linee, piu' tre linee di controllo.

Parsic impiega , appunto, lo standard Hitachi, per la gestione dei moduli alfanumerici LCD.

Le linee di pilotaggio dei moduli sono ridotte a sei, con evidente risparmio delle risorse dei Pic. Il programma consente di collegare, all'uscita dello stesso dispositivo Pic,fino a tre moduli LCD. Le linee utilizzate per il pilotaggio, sono quelle relative ai PortB (default) ma, secondo le necessita' del progetto, e' possibile impiegare port diversi. Sono impiegati i port Rx.0 ..... Rx.4 per i dati (D) ed i port Rx.5...Rx.7 (E) per le linee di controllo. Lo schema seguente mostra come sia possibile il collegamento di due display LCD utilizzando le linee dello stesso port:

Esempio

Si possono utilizzare LCD fino a 4 righe, da 8 a 40 caratteri.

Dato che il tempo necessario alla corretta visualizzazione dei caratteri puo' variare secondo il tipo di LCD utilizzato, e' possibile variare il tempo di trasferimento dei dati dal microprocessore al modulo impostando tre tempi diversi di propagazione:

x 1	=	50 µsec

x 2	=	100 µsec

x 3	=	150 µsec

La tabella, di seguito descritta, indica brevemente le funzioni svolte dai pin normalmente disponibili su questo tipo di display ed utilizzate nel blocco funzionale LCD:

1	GND	massa

2	Vcc	alimentazione +5 Vcc

3	Vq	regolazione contrasto LCD

4	RS	register select, e' una linea di controllo con cui si comunica al display se si sta inviando sul bus dati un comando RS = 0 oppure un dato RS = 1

5	R/W	non usato, viene collegato al GND

6	Enable	e' una linea di controllo e serve per abilitare il display ad accettare dati ed istruzioni dal bus

7...10	DB.0...3	sono le linee dati da 0 a 3 che non vengono utilizzate da Parsic

11...12	DB.4...7	sono le linee dati da 4 a 7 utilizzati per le comunicazioni con il display

Lo schema elettrico seguente mostra il corretto collegamento dei blocchi logici LCD.

Bisogna considerare che, il dato che si vuole fare apparire sul rigo del display deve essere commutato applicando al terminale CF del blocco logico, una variabile digitale che, nel caso in esempio, e' stata prelevata all'uscita di un generatore di clock.

L'esempio reale di collegamento al blocco LT1, che riportiamo di seguito, dara' una indicazione piu' precisa di quanto ora esposto:

La visualizzazione del conteggio non sarebbe affatto possibile se il terminale CF di LT1 non venisse commuato dal generatore di clock TR2.

Inserimendo del testo nei display LCD

Modulo base

Per rendere funzionante un display LCD, e' necessario posizionare nello schema elettrico il modulo base che definisce le caratteristiche elettriche del dispositivo che vogliamo utilizzare.Nello schema elettrico precedente si distingue nettamente il modulo base LB1 dal display LT1.In ogni schema elettrico e' necessario un solo modulo base ed n moduli LTx, tante quanto sono le frasi che vogliamo gestire.

La finestra di dialogo sopra riportata consente di definire il funzionamento del tipo di modulo LCD impiegato in progetto. Nel riquadro Name specificare il codice del dispositivo (LB1,LB2,LB3, ecc).

Specificare su quale Port si vuole collegare il display, Connected to Port (Rx), e quale Pin sara' specializzato per pilotare il terminale Enable del modulo, Output enable (E). Si possono impiegare display da 1 a 4 righe, Lines, fino a 40 Characters per line.

Nel riquadro Ausgabeverzögerung, si possono selezionare 3 diversi tempi di scrittura dei caratteri sull'LCD. Per LCD di vecchia generazione si consiglia di utilizzare l'opzione x3.


 Modulo di testo

Per ogni rigo di testo, che si vuole fare apparire sul display, bisogna posizionare nello schema elettrico un modulo LT, selezionandolo, di volta in volta ,dalla Toolbar. Una volta in posizione il modulo sara' gestito per mezzo della finestra di dialogo,come rappresentata in figura.

Specificate il nome del modulo che state trattando Output to.., in quanto lo stesso bus potrebbe gestire piu' di un display. Si possono impiegare caratteri in formato testo, esadecimale, o binario. I caratteri vanno descritti nel riquadro Text e dovranno occupare lo spazio necessario alla loro rappresentazione.

Essi vanno inseriti nella Position, che l'utente decide di assegnare. Prestare molta attenzione quando si trattera' di gestire messaggi commutati,ovverro diciture tipo ON-OFF oppure ALTO-BASSO, collocate nello stesso rigo e stessa posizione.

Le diciture devono perfettamente coincidere fra loro. Eventuali frasi piu' corte rispetto ad altre piu' lunghe saranno compensate immettendo degli spazi vuoti. In altri termini, se la prima frase occupa 12 spazi, anche la seconda frase dovra' occupare gli stessi spazi; se piu' corta si dovranno aggiungere n spazi fino a raggiungere la stessa lunghezza della prima ( e viceversa). Si possono inserire caratteri speciali specificando il codice del carattere preceduto e chiuso dal segno grafico #.

Esempio: #$E2# , #226# ,#226,ß#

Rappresentazioni numeriche decimali

Per la visualizzazione dei dati decimali numerici ,ci sono tre modalita' di rappresentazione degli stessi:

Spaces

lunghezza variabile delle cifre	: i numeri vengono rappresentati in crescendo,con shift a destra della cifra, nessun zero iniziale.

Show zero

rappresentazione degli zeri	: la cifra viene rappresentata da una serie di zeri iniziali che vengono sostituiti dal valore numerico corrispondente mano a mano che procede il conteggio.

Constant lenght

lunghezza costante	: Viene rappresentato un valore numerico di lunghezza costante. La rappresentazione numerica non puo' subire incrementi oltre la cifra impostata.

La rappresentazione dei dati numerici decimali, a lunghezza costante, e' molto utile quando si vogliono rappresentare valori numerici derivati, ad esempio, da una conversione analogico-digitale.

Ad esempio, se desideriamo che del valore di conversione equivalente a 1223, venga rappresentato solo il valore 23, si dovra' spuntare la casella Constant lenght e si dovra' inserire la costante 2, nell'apposito riquadro.


 Blocco funzionale Sleep mode

L'istruzione SLEEP viene utilizzata per mettere i Pic in Power Down Mode e ridurre di conseguenza la corrente assorbita da Pic che passera' da pochi mA ad altrettanto pochi μΑ, οϖϖερο 1000 ϖολτε ιν μενο, χιρχα, ιλ ϖαλορε νορμαλμεντε ασσορβιτο δαλ μιχροπροχεσσορε.

Parsic provvede ad inserire l'istruzione SLEEP in un determinato punto del file sorgente, spegnendo tutti i circuiti interni, tranne quelli necessari a mantenere lo stato delle porte I/O ed a rilevare le condizioni di risveglio del processore.

Per ridurre il consumo energetico in questo stato, non devono esserci collegati, ovviamente, circuiti alle linee di uscita del Pic che assorbano corrente, o meglio, questi circuiti devono essere progettati in modo da limitare il loro assorbimento nelle condizioni di Power Down.

Si consiglia di collegare al positivo Vdd o al negativo Vss di alimentazione tutte le linee in alta impedenza non utilizzate.

Quando le linee di ingresso sono tutte ad alto livello, viene attivato lo SLEEP MODE ed il programma viene posto in condizione di STOP, l'oscillatore e' posto ad off.

Per ripristinare le funzioni del microprocessore ci sono due possibilita':

la prima	 : applicare un impulso positivo al port RB.0;

la seconda	: applicare una variazione di livello ad uno dei port RB.4, RB.5, RB.6, RB.7.

Restrizioni dell'uso della funzione di Sleep mode.

Non e' possibile abilitare la funzione Watch-Dog Timer se viene utilizzato il blocco funzione Sleep . Questa funzione non e' implementata nei microcontrollori della serie 12CExxx.


Collegamenti ad altri programmi : Tools

Portare il puntatore del mouse sul menu SETTINGS e poi trascinarlo su Tools, cliccare. All'interno della finestra di dialogo rappresentata in figura, potrete inserire i programmi che piu' utilizzate durante le operazioni progettuali.


Tools Eigenschaften

Help not available.

Contact Viti Moschella or have a look into the Tutorial.


Objektreihenfolge ändern


 Monostabile di tipo one-shot

una variabile digitale, applicata all'ingresso del monostabile, provoca il cambiamento di stato dell'uscita per un breve periodo di tempo, da livello logico basso a livello logico alto.

L'impulso di uscita e' transitorio , anche se l'ingresso continua ad essere mantenuto a livello alto.


UART Base, Comunicazione seriale.
 UART Base Comunicazione seriale

Lo standard RS232 definisce una serie di specifiche per la trasmissione seriale dei dati tra due dispositivi denominati DTE ( data terminal equipment) e DCE ( data communication equipment). Il DCE e' un dispositivo che si occupa di gestire una comunicazioni dati mentre il DTE e' un dispositivo che si occupa di generare o ricevere dati. In pratica l 'RS232 e' stata creata per connettere tra loro un terminale dati con un modem per la trasmissione a distanza dei dati generati.

Per la connessione tra due computer sono necessari cinque dispositivi di comunicazione: un computer DTE, un modem DCE, una linea di collegamento, ancora un'altro modem DCE ed infine un computer DTE.

Per collegare tra loro due computer ( microprocessori ) si puo' utilizzare una linea senza interporre alcun modem. Questo tipo di connessione si chiama Null Modem e si realizza con un cavo elettrico,invertente, in grado di scambiare i dati tra i due computer ( microprocessori ).

La comunicazione che Parsic e' in grado di gestire e' di tipo RS232 asincrona, cioe' un tipo di trasmissione che non prevede affatto che la comunicazione tra due dispositivi diversi sia di tipo sincronizzata.

La trasmissione e la ricezione tra due dispositivi in comunicazione tra loro avviene per mezzo di due fili ed un collegamento comune riferito a massa. Il formato di trasmissione e' del tipo 8N1:

 8 bit data, nessuna parita', nessun bit stop

Non tutti i microprocessori PIC sono dotati di porta di comunicazione seriale. Se, per errore, si seleziona un dispositivo non adatto all'impiego viene generato un segnale di errore.

Baud rate

La velocita' di trasmissione Baud-rate e' riferita al valore della frequenza di clock che corrisponde a quella dell'oscillatore al quarzo impiegato, cioe' 4MHz. Si raccomanda di utilizzare sempre un oscillatore al quarzo per le comunicazioni seriali. Portando il cursore del mouse sopra il blocco UART , cliccando con il tasto destro si apre la finesta di dialogo UART-Info.

Predisposizione del modulo di comunicazione seriale

La velocita' di trasmissione viene impostata nel riquadro Speed spuntando una delle velocita' gia preimpostate. Se viene impostata l'opzione Self-defined, il Baud -rate viene definito con un semplice calcolo matematico.

Se BRGH viene mantenuto a 0 ( casella BRGH non selezionata ), per il calcolo del Boud-rate

procedere in questo modo:

X	=	e' il valore da immettere in SPBRG ed e' compreso tra 0 e 225;

Fosc	=	e' la frequenza esterna dell'oscillatore ( 4 MHz)

Baud-rate	=	Fosc/(64(X + 1)

oppure (Fosc/64) / Baud-rate -1

Se BRGH viene mantenuto ad 1 ( casella BRGH selezionata) per il calcolo del Baud-rate procedere in questo modo:

Baud rate	=	Fosc/(16(X+1))

oppure (Fosc/16) / baud-rate -1

Esempio

Baud-rate 19200, frequenza esterna = 4 MHz, BRGH=1

SPRG	=	(4000000 / 16) / 19200 -1

SPRG	=	250000 / 19200 -1

SPRG	=	13,0208 -1

SPRG	=	~ 12

Il valore SPRG da inserire e' 12

TX - RX Pin

Si puo' definire quale pin deve essere impiegato come terminale TX Se viene usato il terminale hardware,definito dal produttore Microchip, questi viene denominato:

RB.2	per i dispositivi PIC a 18 pin;

RC.6	per i dispositivi PIC a 20 e 40 pin.

Per il terminale RX valogono le stesse regole di cui sopra distinguendo diversamente i pin:

RB.1	per i dispositivi PIC a 18 pin;

RC.7	per i dispositivi PIC a 20 e 40 pin.

Standard RS485

Negli ambienti industriali ed in piccole reti di microcontrollori e' molto usato lo standard RS485.

Lo standard RS485 e' uno standard half-duplex, cioe' la trasmissione dei dati e bidirezionale ma non contemporanea, occorre quindi che si indichi in modo espilicito se si vuole realizzare una ricezione o una trasmissione. L'utilizzo di un dispositivo hardware per la selezione della direzione ha il vantaggio di non richiedere cambiamenti software di comunicazione rispetto ad un normale cavo seriale null-modem, con le uniche avvertenze di disattivare il controllo hardware del flusso dei dati e di evitare di trasmettere e ricevere contemporaneamente.

Selezionando lo standard RS485, nel riquadro Half-duplex DIR-PIN ,si dovra' specificare quale pin di uscita al PIC si desidera utilizzare per il controllo Rx/Tx della porta seriale. Questo terminale e' normalmente a livello basso durante la ricezione del segnale, commuta a livello alto durante la trasmissione e resta a tale livello fino al termine. (vedi schema elettrico allegato).

Checksum

Attivando questa opzione viene generato il cecksum (1 byte) al termine di ogni periodo di trasmissione.

Ricezione :

codice di checksum inviato viene comparato, durante il processo di ricezione del segnale, con il valore di checksum calcolato dal microprocessore. Se la comparazione e' valida, i dati sono trasferiti nella variabile indicata a destra della tabella sottostante (riceive...):

Nel caso sia di interesse,il calcolo del codice di cecksum e' facilmente ricavabile dalla seguenti formule:

1.	CS = 170 (HEX = $AA)

2.	CS = CS + 1st byte

3.	CS = CS + 2nd byte

4.	ECC.

CS = checksum

Esempio

Il contatore ZV5 presenta un valore di conteggio = 1000.

Nel riquadro di sinistra,del modulo di ricezione, vedremo indicati:

ZV5	( che rappresenta il low-byte del contatore, che al momento contiene il valore 232 ($E8))

ZV5_HI	( che contiene l'high-byte del contatore = 3)

il seguente calcolo mostra come ricavare il contenuto del contatore ZV5 (3 x 256 + 232 = 1000)

il valore di checksum sara' cosi' determinato:

CS = 170 + 232 + 3 = 405    405 - 256 = 149  rappresenta il valore del (8) bit piu' basso trasmesso.

La sequenza di trasferimento conterra' i seguenti valori <232> <3> <149>


 UART data

Utilizzando questo modulo e' possibile ricevere o trasmettere i dati sulla linea seriale. Il modulo si presenta con due terminazioni:

il terminale ACT e' il pin di ingresso/uscita dei dati;

il terminale Enable e' il pin che abilita la ricezione/trasmissione dei dati.

Per tutto il periodo di trasmissione il terminale ACT-Out rimane a livello logico alto.Durante la fase di ricezione il terminale ACT-Out rimane a livello logico alto fino alla corretta ricezione del dato.

Utilizzando l' ACT si puo' determinare quale dei moduli, trasmittente-ricevente, dovra' restare attivo durante il trasferimento dei dati. Parsic utilizza questo terminale per il controllo del flusso dei dati.

Trasferimento dei dati.

Le variabili del programma sono contenute in una lista, specificata nella UART-data.

Le valori che si desidera trasmettere dovranno essere trasferiti nella tabella di destra, selezionando con il puntatore del mouse le variabili contenute nel riquadro Inside Ram, agendo sul pulsante > .

La trasmissione dei dati avverra' nello stesso ordine in cui essi vengono trasferini nel riquadro Transmit. La trasmissione si attiva quando viene applicato un impulso positivo al terminale ENable ed al buffer di uscita saranno inviati i dati selezionati piu' il checksum. E' sufficiente un solo impulso per attivare la trasmissione e, durante la stessa, altri impulsi di abilitazione non saranno considerati fino al termine dell'operazione.

Ricezione dei dati Uart Data.

I dati che si vogliono ricevere saranno trasferiti nel riquadro Receive, con le stesse modalita' specificate sopra. La ricezione dei dati ha inizio applicando al terminale ENable un impulso positivo e, durante la fase di ricezione, eventuali altri impulsi applicati al terminale ENable saranno ignorati. Se durante la ricezione si manifesta un'errore nei dati o di checksum, la ricezione viene interrotta ed il terminale ACT-Out si porta a livello logico basso.

Schema elettrico di un collegamento seriale RS232

Schema elettrico di un collegamento seriale RS485

Esempio di una trasmissione RS232

Il PIC viene utlizzato per trasmettere la variabile analogica ADC0 ad un PC.

Si notera', nello schema funzionale, che il generatore di clock viene utilizzato contemporaneamente per il refresh dei display LCD e per attivare la trasmissione seriale RS232.

Esempio


 Commenti

Durante la costruzione dello schema funzionale si consiglia il frequente uso di questo editor. Consente di aggiungere commenti e segnalazioni lungo il tracciato dello schema. Inoltre sara' di valido aiuto quando saranno ripresi schemi archiviati da tempo di cui non si ricordano piu' i particolari di progetto. Queste tracce non occupano spazio nella memoria del PIC pertanto e' possibile utilizzarle a proprio piacimento. Per l'impiego, e' sufficiente posizionare l'etichetta vicino al componente o sezione di impianto che si desidera commentare,dopo avere selezionato la funzione sulla toolbar. Cliccate con il tasto destro del mouse sopra l'etichetta; quando appare la finestra di dialogo inserite la dicitura nella casella Kommentar.


Parsic versione Demo

La versione Demo di Parsic consente lo sviluppo di qualunque schema elettrico.L'utente puo' valutare le potenzialita' di Parsic, ma non potra' accedere alle seguenti funzioni:

conversione dello schema nel formato resto ASM

salvare i file sorgente

stampare lo schema elettrico.

Inoltre la versione demo non e' aggiornata e puo' contenere altre limitazioni funzionali, qui' non specificate.


Parsic versione V3.39
Parsic versione V3.41

La versione esecutiva di Parsic consente di sviluppare i progetti senza alcuna limitazione ma, per funzionare correttamente, e' necessario che l'utilizzatore sia in possesso del numero di codice operativo di  abilitazione. Il codice di accesso viene fornito dopo l'aquisto del CD contenente il programma Parsic e normalmente, viene inviato tramite il circuito internet.

Per l'abilitazione del programma, l'utente deve seguire la procedura che viene comunicata di volta in volta dal fornitore. La procedura di concessione delle licenze d'uso e' rigorosa e le copie non  autorizzate di  Parsic  ( duplicazione dei programmi)  vengono  perseguite  a termine di   Legge    (DPR 518 del 29 dicembre 1992) . I dati identificativi delle licenze di concessione d'uso del programma (installati sul computer) , devono corrispondere ai dati identificativi riportati sui programmi originali (supporto CD) e relativa licenza sul supporto cartaceo. Eventuali discordanze rendono il programma privo di licenza   (copia abusiva ). Gli unici documenti identificativi del programma riconosciuti dal Distributore Parsic sono:

il codice CD riportato sulla licenza

il codice impresso a marcatura laser (mascherato) riportato sul supporto CD

il codice personale della licenza, inviato all'utente,all'atto dell'aquisto di Parsic

Per ogni tipo di assistenza, richiesta a Parsic Italia, l'utente dovra' fare riferimento ai codici personali rilasciati nella concessione d'uso. Non sara' fornita alcuna assistenza tecnica se non saranno specificati i codici.