Salta al contenuto principale

Con il simulatore PICSimLab che abbiamo appena installato proviamo il blink del Led sul PIC 16F84A sul piedino RB7.

Il nostro scopo è quello di programmarlo in C ed usare il compilatore XC8 per microcontrollori PIC a 8 bit e l'ambiente di sviluppo in cloud MPLAB Xpress IDE.

Per disegnare lo schema elettrico conviene usare KiCad, come più volte spiegato in questo sito che stai leggendo.

Ecco lo schema elettrico:

Pic16F84a

Facendo un paragone con lo sketch di Arduino dove vorremmo far lampeggiare il Led13:

// Arduino

void setup()
{
    pinMode(13, OUTPUT);
}
void loop()
{
    digitalWrite(13, HIGH);
    delay(3000);
    digitalWrite(13, LOW);
    delay(3000);
}

 

 

Invece con il PIC16F84A si scrive il seguente programma per far lampeggiare:

// PIC16F84A
#include <xc.h>
#include "config.h"
#define _XTAL_FREQ 4000000
void main()
{
	TRISBbits.TRISB7 = 0;
	while (1)
	{
		PORTBbits.RB7 = 1;
		__delay_ms(3000);
		PORTBbits.RB7 = 0;
		__delay_ms(3000);
	}
}

config.h è un file di configurazione dei cosiddetti "configuration bits" che dipende fortemente dal microcontrollore scelto, cambiando microcontrollore cambia il contenuto del file. E' necessario se si vuole simulare e soprattuttto se si vuole montare il circuito e provare il prototipo. Il fatto che "config.h" sia racchiuso tra doppi apici e non tra il simbolo di < e > indica che non è una libreria predefinita ma che deve essere costruita dal programmatore o presa da qualche parte su Internet per quello specifico compilatore e per quello specifico microcontrollore.

Microchip ha messo a disposizione sia in MPLAB X Ide sia in MPLAB Xpress IDE in cloud uno strumento per l'autocostruzione di questa parte di codice.

Per l'uso della versione in cloud è necessario registrarsi sul sito di microchip.com, gratuitamente.

A questo punto vado sulla macchina virtuale Debian 11, dove abbiamo installato il simulatore, con il browser creo il progetto e copio ed incollo il codice soprastante.

 

 

Nella famiglia di microcontrollori Mid-Range 8-bit MCUs scegliere come device PIC16F84A.

Scegliere un nome significativo del progetto (esempio BlinkLed) e cliccare su Finish.

Dopo qualche minuto il progetto viene creato. Controllare che il MCU sia PIC16F84A e che il compilatore sia XC8.

Facendo tasto destro nella sezione Source Files, creare un nuovo file chiamato main.c

 

 

 

Provando a compilare il programma con il simbolo del martelletto Build... è normale che vada in errore perché il file config.h non è stato ancora creato ed associato al progetto.

 

Come fare a creare questo file? Una conoscenza dettagliata del datasheet sarebbe necessaria. Si può utilizzare lo strumento Window / Target Memory Views / Configuration Bits per farsi suggerire i nomi dei registri oppure copiare ed incollare questo file valido per il PIC16F84A.

#ifndef CONFIG_H
#define	CONFIG_H
#pragma config FOSC = XT 
#pragma config WDTE = OFF //it is important disable Watch-Dog timer
#pragma config CP = OFF 
#pragma config PWRTE = OFF 
#endif

 

A questo punto si compila e con il pulsante  si puo' scaricare il file "eseguibile" con estensione .hex che può essere trasferito con un programmatore fisico ad un vero microcontrollore oppure passato al simulatore per vedere se il led si accende.

Apriamo PICSimLab, scegliamo Breadboard come board e PIC16F84A come microcontrollore.

Aggiungiamo Spare parts come "Modules" ed aggiungiamo un Led e una resistenza.

Si carica il file hex dopo aver collegato virtualmente il led e il led lampeggia come richiesto. Fantastico!

 

Il nostro programma ha funzionato bene. Enjoy!