Salta al contenuto principale

Con questo terzo articolo si mostra come si può imparare a programmare facilmente un microcontrollore Microchip per un input digitale, il PIC16F18875 contenuto all'interno della Microchip Curiosity HPC Development Board (DM164136), dal costo davvero contenuto.

La programmazione viene fatta con il linguaggio C e il compilatore XC8 della Microchip. L'ambiente di sviluppo che usiamo è MPLAB Xpress IDE, in cloud oppure MPLAB X Ide.

Nel seguente datasheet dal sito ufficiale si può vedere lo schematico della Board.

Lo scopo di questo terzo esempio è di fare lampeggiare il solo led D2 (sempre), mentre il led D3 deve accendersi solo quando viene premuto il pulsante normalmente aperto S2 collegato a RC4.

 

Non si vuole usare MCC Code Configurator.

 

Si usa MPLAB Xpress IDE in cloud, creando un nuovo progetto.

New Project --> Microchip Embedded ---> Standalone Project

Family: Mid Range 8-bit MCUs (PIC 10/12/16)

Device: PIC16F18875

eppoi si sceglie il nome significativo al progetto: PIC16F18875_PushButtonS2

Si comincia inserendo il programma principale main.c:

Ecco il codice:

/* * File: main.c 
* Author: mariani.fausto * 
* Created on 03/01/2022 3:24:12 PM UTC * 
"Created in MPLAB Xpress" */ 
#include "config.h" // custom edited config file. 
#include <xc.h> 
#define _XTAL_FREQ 500000 
void main(void) 
{ 
   SYSTEM_Initialize(); 
   TRISA = 0b00000000; // we set PORTA as Output 
   TRISCbits.TRISC5 = 1; // we set PORTC.RC5 as Input 
   /** ANSELx registers 1 = Analog input. Pin is assigned as analog input . 
     Digital input buffer disabled. 0 = Digital I/O. Pin is assigned to port or digital special function */ 
   ANSELCbits.ANSC5 = 0; // we want a Digital Input for RC5/ANC5 
   while(1) 
   { 
         LATAbits.LATA4 = 1; //we turn on D2 led 
         __delay_ms(500); 
         LATAbits.LATA4 = 0; //we turn off D2 led 
         __delay_ms(500); 
         if (PORTCbits.RC5 == 1) 
         { 
             LATAbits.LATA5 = 0; //we turn OFF: D3 led 
         }  
         else
         { 
               LATAbits.LATA5 = 1; //we turn ON: D3 led 
         } 
  } 
  return; 
}

Non si riporta anche il codice di configurazione config.h e config.c che conviene prendere da uno dei tanti esempi preesistenti, oppure si può prendere quello del primo articolo.