Utilizando SDCC com Microcontrolador PIC 18F4550 (48Mhz)

Olá,

Nesse post vou escrever um pouco sobre como programar microcontroladores PIC, especificamente o PIC18F4550, com o compilador SDCC (Small Device C Compiler).

Aqui faremos uso apenas da linha de comando, se você procura algo como uma IDE, veja este POST: utilizando-a-ide-codeblocks-com-sdcc

Primeiro, a utilização de um bootloader é interessante. Veja esse Post para gravar um bootloader compatível com esse programa.

O primeiro passo é instalar o compilador SDCC e o GPUTILS.

Em seguida, crie uma pasta para trabalhar em algum local de seu computador. Vamos começar com um pequeno programa exemplo, mas o qual já vai nos dar a estrutura para trabalhar com qualquer projeto posterior. Essa é apenas uma forma de trabalhar, existem muitas outras.

Crie um arquivo chamado “config.h” e coloque nele o seguinte código:

#include <pic18fregs.h>
#define LED PORTBbits.RB0

Esse será o único local no qual o processador será especificado. Assim, quando precisar mudar de processador, basta alterar esse arquivo. Aqui também serão colocadas configurações globais do código, como a pinagem do microcontrolador, assim pode-se alterar os pinos facilmente. No nosso exemplo, um led foi colocado no pino B0.

Num outro arquivo, agora chamado “picconfig.h”, coloque o seguinte:

#ifndef _CONFIG_H_
#define _CONFIG_H_ 1

#include "config.h"

#pragma config FOSC = HSPLL_HS
#pragma config PWRT = OFF, BOR = OFF
#pragma config WDT = OFF
#pragma config DEBUG = OFF
#pragma config XINST = OFF
#pragma config PLLDIV = 5
#pragma config USBDIV = 1
#pragma config CPUDIV = OSC1_PLL2

#endif

Aqui vão as configurações do microcontrolador. Nesse arquivo alteramos as configurações dos chamados “fusíveis” do pic. Seria muito extenso explicar cada um deles aqui, esse trabalho já está feito no datasheet. Mas, qualquer coisa você pode perguntar aqui.

Agora, vamos criar o arquivo principal desse mini projeto, esse arquivo chama-se main.c:

#include "picconfig.h"

void hdw_setup(){
	ADCON1= 0x06;
	TRISA = 0b00000011;
	TRISB = 0b00000000; //0b00001000;
	TRISC = 0b10000000; //0b10000000;
	TRISD = 0b00000000;
	TRISE = 0b00000000;
}

void main(){
	hdw_setup();
	LED = 1;
	while(1){

	}
}

A ideia é muito simples. Criamos a função hdw_setup() para inicializar o hardware e, na função main(), fazemos com que o led acenda. A inicialização consiste em configurar os pinos do PIC como saída.

Agora vamos compilar esse código. Crie uma pasta chamada “obj” na sua pasta de trabalho. Essa nova pasta servirá apenas para organizarmos melhor os arquivos compilados do projeto.

Na sua pasta de trabalho, crie o arquivo “COMPILAR.bat” com o seguinte conteúdo:

@echo off
del obj/*.o
del obj/*.asm
del obj/*.lst
del *.hex
sdcc --use-non-free -mpic16 -p18f4550 main.c
del *.o
del *.asm
del *.lst
del *.cod
PAUSE

Execute esse arquivo para executar a compilação (pode simplesmente clicar duas vezes sobre ele). Como resultado você verá o arquivo main.hex na sua pasta de trabalho.

Agora plugue o seu circuito e baixe o arquivo main.hex nele. A princípio, o LED deve acender.

Se você não conseguiu criar todos os arquivos ou não entendeu alguns passos, segue um zip com todos esses arquivos: blog1

Deixe um comentário

O seu endereço de e-mail não será publicado.