BUSCA

Links Patrocinados



Buscar por Título
   A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z


Programação em microcontroladores ATMEL
(André Simões)

Publicidade
Programação em microcomputadores da familia ATMEGAServe este resumo para ensinar a programar em microcomputadores atmel.Este resumo ensinará coisas básicas sobre programação em linguagem C. Aquela que consideroser a melhor para se poder evoluir até programas relativamente complexos.Vou falar em particular do ATmega 8, mas a arquitectura deste tipo de micros é quase igual em toda a familia, sendo facil a evolução para outros micros da mesma familia.-> Em primeiro lugar é preciso compreender a arquitectura destes micros da atmel.Estes micros são de oito bits, trabalham com frequências que podem ir até aos 20mhz, com clocks externos e internos feitos a partir de circuitos osciladores.->Possuem uma série de portas de entradas e saída, de oito bits, que podem ser configuradas independentemente como entradas ou saidas. Quando definidas como entradas permitem a configuração de resistências de pull-up internas, ou entradas de alta impedância.Este micro possui 3 portas, PORTB, PORTC e PORTD.Todos os pinos possuem funcões alternativas, que podem ir de comparadores de janela, a conversores analógico digitais de 10 bits.->Este micro também possui 3 timmers, dois de 8 bits e um de 16 bits. Que podem ser configurados como contadores ou temporizadores, com referências internas ou externas.-> Possui dois pinos de interrupção externos, e vários tipo de interrupção internas, desde watchdog, a brownout.Como configurar um pino como entrada?ex: configurar o pino 2 da porta b como entrada com pull-upDDRB=(0<<PB2); --> Apenas serve pra indicar o que fazer, este registo é inicializado por defeito a zero, ou seja a porta é inicializada como entrada. DDR= data direccion registerPORTB=(1<<PB2) --> quando um determinado pino é definido como entrada, de definir-mos o seu valor como '1', estamos a activar as resistencias de pull-up.(1<<PB2) quer dizer, coloca a 1 o pino PB2 (port b.2). Nunca esquecer que a programação em C é sensivel a maiusculas e minusculas, e é preciso escrever da forma como está em cima explicado.Como configurar um pino como uma saida?ex: configurar o pino 0 da porta c como saidaDDRC=(1<<PC0); esta é a unica coisa que é preciso fazer para definir um dado pino como saida.Se quisermos definir toda a porta C como saida podemos utilizar a seguinte maneira:DDRC=0xff; ou seja, enviar para o registo o valor 11111111 em binário.Para colocar a saida ao nivel lógico '1' apenas é preciso fazer PORTC=(1<<PC0);De notar que se nada for feito o pino é iniciado a zero!!!Uma coisa muito importante a reter é que apesar de a programação ser feita em C, não se trata de C standard.De seguida mostro o que escrever num cabeçalho de um programa a ser compilado:#include<avr/io.h> /*livraria a incluir para definição das portas, o equivalente a #include<stdio. h> num programa comum de C*/void inic(void);int main(void){ char i=0; inic(); /*função onde se inicializam os pinos*/ for(i=0;i<100;i++) /*faz este ciclo 100 vezes, de notar que aqui um 'char' são 8 bits. { if(PINB & 0b00000100==0) /*para ler um pino utiliza-se a função PIN, mas aqui só se lê o conteudo da porta, não se pode ler apenas o pino, logo temos de fazer um 'AND' com o valor que lá está em binário, se o pino 2 for um, o resultado do AND é um, se for zero, o resultado dá zero, depois compara com zero.*/ {PORTB=(1<<PB3);} /* se for zero coloca a saida a 1*/ else {PORTB=(0<<PB3);} /* se não for zero, é porque é 1, coloca a saida a zero*/ }}void inic(void) /*rotina de inicialização de pinos, chamada no programa principal{ DDRB=(0<<PB2); /*define o pino PB.2 como entrada*/ DDRB=(1<<PB3); /*define o pino PB.3 como saida */}Este simples programa pode funcionar como um inversor, quando lê '1', coloca zero na saida, e vice-versa.De notar que este micro considera o nivel lógico '1' a partir de 2,5 Volt até a um máx de 5,5 V.Em breve irei acrescentar mais resumos, assim crogramas que construi.O compilador adequado para programar é o AVR Studio 4, programa que pode ser descarregado gratuitamente da net, este programa também faz simulação, o que é uma mais valia para o conjunto. Muito fácil de utilizar!!!Para enviar o programa para o micro é preciso um programador de memórias, ou se o micro tiver um bootloader, podemos fazer isso com uma simples ligação RS-232, á porta COM do pc, pois o micro tem um barramento RS-232. A programação também pode ser feita por SPI, e nalguns micros já pode ser feita por ligação USB.De referir que este micro possui 8kBytes de memória flash, 1KByte de memória RAM, e 512 Bytes de memória EEPROM, onde se podem guardar variáveis que não iram ser apagadas. Devido á memória Flash ser de segunda geração é que se torna possivel fazer a programação in-system.Outra grande vantagem deste microcomputador é que tem uma arquitectura RISC, em que quase todas as instruções demoram apenas um ciclo máquina a executar, o que nos dá um impressionante numero de 20x10^6 instruções por minuto. Comparando com por exemplo um 80c51, este micro é mil vezes melhor.



Resumos Relacionados


- Treinamento Em Linguagem C

- Robô Com Inteligência Baseada Em Algoritmo Genético

- Diferença Entre Uma Porta Serial E Paralela

- Dicas De Informática: Memória Ram

- Como Cuidar Bien Do Seu Micro



Passei.com.br | Biografias

FACEBOOK


PUBLICIDADE




encyclopedia