quinta-feira, 1 de março de 2018

Índice



   










   



  1. Microcontroladores
  2. Ferramentas da Microchip para desenvolvimento de projetos
  3. Bibliografia Recomendada
  4. Material de Apoio - Blibliotecas
  5. Vídeos
  6. Hardware para desenvolvimento de aplicações
  7. Montagem da placa
  8. Bootloader - O que é?
  9. Bootloader - Compilando arquivos para usar com o bootloader
  10. Instalando programa de comunicação
  11. Gravando programas no hardware com bootloader
  12. Transferência de arquivos sem bootloader - Gravador free
  13. DEBOUNCING





   

Módulo 3 - 2018 I

Material para o módulo III




  

Iniciando

Portas de I/O Digitais - Registradores LAT, PORT e TRIS

Atividade - Primeiro projeto no MPLAB X




  

Temporização

Explicação - Uso da diretiva #define

Explicação - Funções de tempo

Atividade - Temporização Leds



  

Interfaces de saída






Entendo e utilizando o Hardware básico

  1. Hardware para desenvolvimento de aplicações
  2. Montagem da placa
  3. Bootloader - O que é?
  4. Bootloader - Compilando arquivos para usar com o bootloader
  5. Instalando programa de comunicação
  6. Gravando programas no hardware com bootloader

Montagens em Hardware


  

Módulo 4 - 2018 I


Interrupção

Explicação Interrupção - PIC18F4550

Exemplo de configuração e uso da INT0

Atividades com interrupções externas








sexta-feira, 9 de junho de 2017

Lista de materiais para o módulo 3



   





   

  • Microcontrolador PIC18F4550 DIP
  • Módulo LCD 2 x 16
  • Placa para o hardaware básico de desenvolvimento (opcional)


   
Lista de peças para o hardware de desenvolvimento




   
Lista de peças para práticas



   


RS 232 - Atividades 1 e 2

Abaixo o esquemático para simulação e montagem do hardware para comunicação RS232 utilizando o PIC18F4550
  • ·        Microcontrolador PIC18F4550
  • ·        Módulo LCD 2 x 16
  • ·        Modelo de interface serial





Atividade 1

O programa main39.c foi desenvolvido para um PIC 18F4520 rodando a 8MHz e uma comunicação serial a 2.400bps
  • ·        Montar um projeto no MPLABX utilizando como base o programa “main39.c”
  • ·        Adaptar o código para o microcontrolador PIC 18F4550
  • ·        Adaptar o código para a biblioteca de LCD
  • ·        Utilizar um software para criação de uma porta serial virtual
  • ·        Utilizar um terminal – Windmil ComDebug Serial Intrument Set Up Utility”
  • ·        Configure as portas seriais (qual porta) e a velocidade de comunicação


Avaliação: Apresentar a comunicação no simulador com o terminal COMDEBUG






Atividade 2

·        Modificar o software da atividade 1 para trabalhar com o clock de 48MHz no microcontrolador alterando o “boud rate”
·        Montar o circuito de interface para comunicação com a porta de um computador utilizando o MAX232.

Avaliação: Apresentar a comunicação no PIC18F4550 com o terminal COMDEBUG em um PC







programa main_39.c

 


/*********************************************************************
Nome do arquivo: main_39.c            
Data:     17 de maio de 2010          
Versao: 1.0                              
MPLAB IDE: v8.20a 
Autor: Wagner Zanco              
*********************************************************************/
#include <p18f4520.h> //diretiva de compilação
#include "Lcd_8bits.h" //diretiva de compilação
//********************************************************************
//protótipos de funções
void Inic_Regs (void);
void Atual_LCD (char dado);
void Configura_UART (void);
void Transmite_UART (char dado);
//********************************************************************
//variáveis globais
char count=0;
//********************************************************************
void main(void) //função main
{
float x=0; //declaração  de variável local inicializada
int dly=0; //declaração  de variável local inicializada
char DADO; //declaração  de variável local inicializada
//**********************************
Inic_Regs (); //configurar SFRs
//**********************************
IniciaLCD (2); //inicializar LCD controller HD44780
TestPixelsLCD(); //teste no LCD - acende todos os pixels.

EscInstLCD(0x0C); //desativa cursor
while(TesteBusyFlag()); //espera LCD controller terminar de executar instrução
//**********************************
//delay de 3 segundos
for(dly=0;dly<600;dly++) //comando de iteração
{
_Delay5ms(); //delay de 5ms
}
//**********************************
EscInstLCD(0x01); //desativa cursor
while(TesteBusyFlag()); //espera LCD controller terminar de executar instrução
//**********************************/
Configura_UART(); //configura UART com taxa de 2400bps
//**********************************/
//rotina principal
while(1)
{
while(!PIR1bits.RCIF); //aguarda chegar um novo byte
if (RCSTAbits.FERR) //houve erro de transmissão?
{
RCSTAbits.CREN = 0; //sim, desabilita recepção
RCSTAbits.CREN = 1; //habilita recepção
}
else //não houve erro de transmissão, transmite dado recebido
{
DADO = RCREG; //obtém caractere
Transmite_UART (DADO); //transmite DADO
Atual_LCD(DADO); //atualiza LCD
}
}
}//******************************************************************
// funções
//*******************************************************************
/*Esta funcao inicializa os resgistradores SFRs.*/
 void Inic_Regs (void)
{
TRISA = 0x00; //PORTA saída
TRISB = 0x00; //PORTB saída
TRISC = 0x00; //PORTC saída
TRISD = 0x00; //PORTD saída
TRISE = 0x00; //PORTE saída
ADCON1 = 0x0F; //configura pinos dos PORTA e PORTE como digitais
PORTA = 0; //limpa PORTA
PORTB = 0; //limpa PORTB
PORTC = 0; //limpa PORTC
PORTD = 0x00; //apaga displays
PORTE = 0; //limpa PORTE
}//********************************************************************
//inicializa USART
void Configura_UART (void)
{
TRISCbits.TRISC7 = 1; //configura pino RX como entrada
TRISCbits.TRISC6 = 1; //configura pino TX como entrada
TXSTA = 0b00100100; //transmissão habilitada<5>
//transmissão assíncrona<4>
//transmissão em alta velocidade<2>
RCSTA = 0b10010000; //porta serial habilitada<7>
//recepção contínua habilitada<4>
BAUDCON = 0b00000000; //TX ocioso em nível alto<4>
//gerador de baud rate de 8 bits<3>
SPBRG = 207; //2400bps
}//*********************************
//transmite o caractere
void Transmite_UART (char dado)
{
TXREG = dado; //inicia a transmissão
while(!TXSTAbits.TRMT); //aguarda transmissão terminar
}//***************************************************************************
//função  que  atualiza o LCD. 
void Atual_LCD (char dado)
{
if(count==16) //se cursor chegou no final da primeira linha
{
EscInstLCD(0xC0); //move cursor para a primeira posição da segunda linha
while(TesteBusyFlag()); //espera LCD controller terminar de executar instrução
}
else if(count==32) //se cursor chegou no final da segunda linha
{
EscInstLCD(0x01); //limpa display e mostra cursor piscando na primeira posição da primmeira linha
while(TesteBusyFlag()); //espera LCD controller terminar de executar instrução
}
EscDataLCD(dado); //escreve caractere no LCD na posição apontada pelo cursor
while(TesteBusyFlag()); //espera LCD controller terminar de executar instrução
count+=1; //incrementa count
//*******************************************************************
}