Programação embarcada

A programação embarcada refere-se ao estudo de programação em microcontroladores e microprocessadores para controlar seus periféricos e manipular circuitos externos.
A diferença entre programação em um dispositivo PC ou eletrônico comum e de um embarcado, são as limitações de recursos, como falta de memória, falta de um sistema operacional completo, limitações nas formas de comunicação com o mundo externo e requisitos limitados de tempo de resposta para realizar uma tarefa que deve ser tratado pelo sistema embarcado. Em geral, só se conta com poucos serviços básicos providos pelo hardware ou por um software básico. Sistemas embarcados são projetados para executar tarefas específicas, que comparado a um computador que tem uma finalidade de realização de multitarefas.

Placa de um sistema embarcado

Linguagens de programação editar

As linguagens de programação mais usadas para o uso em microcontroladores são as linguagens C e Assembly. É possível a ativação de um LED com a linguagem de programação C e assembly.

Periféricos editar

Microcontroladores quase sempre são classificados em famílias, dependendo da aplicação para qual foram designados. A partir da aplicação que a família de microcontroladores se destina, um ramo de periféricos específicos é selecionado e integrado ao microprocessador. Estes microprocessadores normalmente operam com barramentos de 8, 16 ou 32 bits. Mesmo com a classificação dos microcontroladores em famílias, existem periféricos essenciais a praticamente todas as aplicações, que são a memória de dados e a memória de programa. A memória de dados mais usada atualmente é a RAM (Random Access Memory), que é uma memória volátil, ou seja, não preserva o seu conteúdo sem uma fonte de alimentação constante. Recentemente as memórias de programa sofreram uma grande mudança. Anos atrás as memórias de programa mais utilizadas eram a ROM (Ready-Only Memory) e a EPROM (Erasable Programmable Read-Only Memory), porém com a popularização da memória FLASH cada vez mais os microcontroladores vem sendo produzidos com este tipo de memória, em substituição a ROM e a EPROM.

Interrupções editar

Interrupção é um evento que faz a CPU parar o programa principal e executar uma tarefa ou um serviço que está diretamente relacionado com esse evento. Pode ser gerada internamente ou externamente ao chip. Pode ser usado para diversas finalidades como: Coordenar as atividades de I/O com a CPU, realizar tarefas de urgência, proporcionar maneiras de sair de um programa quando um erro ocorre e lembrar a CPU de realizar tarefas periódicas.

Contadores editar

Em sistemas embarcados normalmente se usa um clock (ou sinal oscilador) para servir como um "relógio" do programa. Contadores usam esse sinal de clock para medir um certo tempo para ser usado em determinada função.

Reset editar

Um sinal de reset normalmente é usado para, como o próprio nome já diz, resetar ou "ligar e desligar" o programa. O reset pode ser aplicado com POR, pino de reset, COP reset ou monitor ("fiscalizador") de clock.

POR reset editar

POR ou Power-On Reset é um tipo de reset que usa a detecção de tensão para resetar.

Reset pin editar

Reset Pin ou Pino de reset é um pino do chip que reseta se acionado.

COP reset editar

COP ou Computer Operating Properly (Operação Adequada Computadorizada, de tradução livre) possibilita o usuário a resetar.

Clock Monitor reset editar

É um reset que funciona por meio de um clock baseado num circuito interno do chip.

Registradores editar

Registrador é um tipo de memória de alta velocidade de acesso mas com pequena capacidade, fica dentro da CPU do microcontrolador. É o tipo mais importante de memória e justamente por esse fato são os mais rápidos pois é prioridade de acesso. Registradores são ponteiros que direcionam para endereços especiais na memoria. Existem dois tipo de registradores: registradores para leitura e registradores de escrita. Registradores de leitura são regiões da memoria aonde os periféricos do microcontrolador escrevem os resultados de suas operações. Enquanto os registradores de escrita são regiões da memoria onde se tem informações que acarretam em alterações das operações dos periféricos.Os principais exemplos registradores conhecidos são TRIS e PORT.[1]

Programmer editar

 
PICkit2

A principal função de um programmer é programar e depurar microcontroladores. O principal exemplo de programmer é o PICkit, ferramenta de baixo custo e de interface fácil para a programação e depuração de microcontroladores, possuindo várias versões.[2]

IDE's editar

IDE, do inglês Integrated Development Environment(Ambiente de Desenvolvimento Integrado) são softwares usados para gerenciar e editar projetos em desenvolvimento de programas. Onde os mais usados em programação embarcada são: MPLAB e MPLABX.

MPLAB IDE editar

MPLAB IDE é um software editor para gerenciar projetos e ambiente de programação no desenvolvimento de aplicações e sistemas embarcados, utilizando PIC Microchip MCUs e DSCs dsPIC. Fornecido gratuitamente pela empresa Microchip_Technology® integrando diversos ambientes de trabalho para programação, simulação e gravação de microcontroladores.

MPLABX IDE editar

MPLAB® X IDE é um software para desenvolver aplicações para microcontroladores da Microchip e controladores de sinal digital. É um ambiente de desenvolvimento integrado (IDE), uma vez que fornece um único "ambiente" integrado para desenvolver o código para microcontroladores embarcados. Traz muitas mudanças para o microcontrolador PIC, como cadeia de ferramentas para desenvolvimento. Ao contrário das versões anteriores do MPLAB® IDE que foram desenvolvidas totalmente in-house, MPLAB® X IDE é baseado no código aberto NetBeans IDE da Oracle. Isto permitiu adicionar muitos recursos solicitados com freqüência rapidamente e facilmente, ao mesmo tempo, proporciona uma arquitetura muito mais extensível para trazer características ainda mais novas no futuro.[3]

LED blink em c editar

#include <htc.h>
#define _XTAL_FREQ 8000000
 void main()
 {
   TRISB=0X00;
   PORTB=0X00;
   while(1)
   {
     PORTB=0XFF;
     __delay_ms(1000);
     PORTB=0X00;
     __delay_ms(1000);
   }
 }

LED blink em assembly editar

LIST	p=16F628		;tell assembler what chip we are using
	include "P16F628.inc"		;include the defaults for the chip
	__config 0x3D18			;sets the configuration settings (oscillator type etc.)
	cblock 	0x20 			;start of general purpose registers
		count			;used in table read routine
		count1 			;used in delay routine
		counta 			;used in delay routine
		countb 			;used in delay routine
	endc
	LEDPORT	Equ	PORTB		;set constant LEDPORT = 'PORTB'
	LEDTRIS	Equ	TRISB		;set constant for TRIS register
	
	org	0x0000			;org sets the origin, 0x0000 for the 16F628,
					;this is where the program starts running	
	movlw	0x07
	movwf	CMCON			;turn comparators off (make it like a 16F84)
   	bsf 	STATUS,		RP0	;select bank 1
   	movlw 	b'00000000'		;set PortB all outputs
   	movwf 	LEDTRIS
	bcf	STATUS,		RP0	;select bank 0
	clrf	LEDPORT			;set all outputs low
Start	clrf	count			;set counter register to zero
Read	movf	count, w		;put counter value in W
	call	Table	
	movwf	LEDPORT
	call	Delay
	incf	count,	w
	xorlw	d'14'			;check for last (14th) entry
	btfsc	STATUS,	Z
	goto	Start			;if start from beginning
	incf	count,	f		;else do next
	goto	Read
Table	ADDWF   PCL, f			;data table for bit pattern
	retlw	b'10000000'
        retlw   b'01000000'
        retlw   b'00100000'
        retlw   b'00010000'
        retlw   b'00001000'
        retlw   b'00000100'
        retlw   b'00000010'
        retlw   b'00000001'
        retlw   b'00000010'
        retlw   b'00000100'
        retlw   b'00001000'
        retlw   b'00010000'
        retlw   b'00100000'
        retlw   b'01000000'
Delay	movlw	d'250'			;delay 250 ms (4 MHz clock)
	movwf	count1
d1	movlw	0xC7
	movwf	counta
	movlw	0x01
	movwf	countb
Delay_0
	decfsz	counta, f
	goto	$+2
	decfsz	countb, f
	goto	Delay_0
	decfsz	count1	,f
	goto	d1
	retlw	0x00
	end

Ver também editar

Sistemas Embarcados

Referências

Bibliografia editar

HUANG, Han-way. The HCS12/9S12: An Introduction to Software and Hardware Interfacing. 2ª Edição. Estados Unidos da América: Delmar, Cengage Learning. 2009.

Ligações externas editar

Apostila de microcontroladores da UDESC - Joinville