9 de mar de 2012

Utilizando outras famílias de microcontroladores Microchip na placa PK2Lab!!!


Hoje vou demonstrar a vocês como utilizar outros microcontroladores da empresa Microchip na placa PK2Lab. A Microchip comercializa uma ampla gama de microcontroladores distribuídos em várias famílias, sendo elas:

PIC10 / PIC12 / PIC16 / PIC18 / PIC24 / DsPIC30 / DsPIC33
 
Todas estas famílias de microcontroladores são suportados pelo gravador contido na placa PK2Lab, bastando apenas interligar os pinos do gravador ao dispositivo de destino.
Para este exemplo irei utilizar um microcontrolador da família PIC12 que dispõe de conversor AD, 5 pinos de I/O e um pino de entrada (GP3) e oscilador interno de 4MHz, que é o PIC12F675.

PIC12F675

Para efetuar a conexão do microcontrolador à placa vamos utilizar alguns cabos de conexão facilmente encontrados a venda nas lojas de componentes eletrônicos e sites como o Mercado Livre  e um Proto-Board que é uma placa para desenvolvimento de projetos que consiste de uma matriz de contatos elétricos.

Placa2

Os pinos da placa PK2Lab responsáveis pela gravação de microcontroladores externos à placa estão identificados como ICSP, que é a abreviação de  In Circuit Serial Programmer. Estes pinos são conectados aos pinos responsáveis pela gravação no dispositivo a ser programado.

ICSP

O esquema elétrico do projeto é mostrado abaixo e consiste basicamente de 4 componentes, sendo uma chave, um LED, um buzzer e o microcontrolador.
Esquema

Todos os componentes, exceto o microcontrolador estão disponíveis na placa PK2Lab e vamos utiliza-lós de maneira bem simples através dos pinos de expansão.

DSC00846

Os conectores contam com a nomenclatura dos pinos referentes ao soquete do microcontrolador ON-BOARD, ou seja, para a utilização correta destes periféricos internos através dos ports de expansão, temos que efetuar uma breve análise no esquema da placa PK2Lab.

Led

Vamos utilizar o led referente ao PORTC pino 0, portanto este led pode ser acessado através do barramento de expansão PORTC B0. Os outros pinos podem ser verificados no esquema elétrico da placa e associados aos respectivos PORT’s.
Como dito anteriormente, todos os pinos estão disponíveis através dos PORT’s de expansão, com exceção de três pinos do PORTE, porém estes três pinos podem ser acessados através do conector ZIF sem maiores dificuldades.

OBS. APENAS UM MICROCONTROLADOR PODE SER UTILIZADO POR VEZ, OU SEJA, AO EFETUAR A CONEXÃO DE DISPOSITIVO EXTERNO, RETIRAR TODO E QUALQUER MICROCONTROLADOR DO SOQUETE ZIF DA PLACA!

Vejamos o resultado do projeto!!!

Placa1

Abaixo segue o código do projeto.

/******************************************************************************
                      JL Audio Manutenção Eletrônica
Data: 03/2012
Autor: Jean Carlos
Projeto: Pisca Led com Chave e Buzzer
Microprocessador: PIC12F675
Clock do processador: 4MHz
Estação de desenvolvimento: PK2Lab V 1.1
Compilador: MikroC PRO V 4.60.0.0
Versão atual: 1.0
Descrição:

          Este projeto visa demonstrar o funcionamento da placa PK2Lab
          com outros microcontroladores da família Microchip, para isto
          vamos utilizar um Proto Board e alguns cabos para conexão
          entre o microcontrolador e a placa.


*******************************************************************************/
// Inicializações do programa

#define LED      GPIO.B5     // Define o LED conectado ao pino 2 (GP5)
#define CHAVE GPIO.B4     // Define a chave conectada ao pino 3 (GP4)

//******************************************************************************
// Variáveis Globais

unsigned int Tempo;             // Variável utilizada para temporização entre piscadas
//******************************************************************************
// Rotinas Auxiliares

//******************************************************************************
//Rotina Principal

void main()
{
TRISIO   = 0b00010000;    // Configura as entradas e saídas
GPIO     = 0b00000000;    // Inicia os pinos todos desligados
ANSEL  = 0b00000000;    // Entradas digitais.


while(1)
{
if(CHAVE)                      // Se a chave for pressionada...
   {
    Tempo = Tempo + 100;             // Incrementa o tempo em 100ms
    if(Tempo > 1000) Tempo = 100; // Limita o tempo máximo

   }
LED = ~LED;                 // Inverte o estado do LED o complementando
                                               
Vdelay_ms(Tempo);                 // gera atraso entre piscadas
}//while(1)
}//main

************************************************************************************************
Grande abraço a todos e bons projetos!!!