Micro tutorial sobre AVR
Tenho andado a escrever um pequeno tutorial em português sobre como programar AVR’s, microcontroladores da gama dos PIC. Já tem uma parte pronta, que mostra como montar um micro ambiente de desenvolvimento de hardware e software, e portanto cá fica o link, no fórum ElectronicaPT:
Micro-tutorial sobre AVR, no ElectronicaPT.com
Feliz codificação! (porque será que não soa tão bem como “happy coding”
?)
Rafael disse,
12 Dezembro 2008 às 20:33
Boas…
Quando tu no tutorial fases:
#include
#include
int main (void)
{
DDRA = 0×01; // Configurar pino PA0 como output
do { // inicio de ciclo
PORTA = 0×01; // Acender o LED
_delay_ms(500); // Esperar 500ms…
PORTA = 0×00; // Apagar o LED
_delay_ms(500); // Esperar 500ms…
}
while (1); // Saltar para o inicio do ciclo
}
O porque de " PORTA = 0x00; " fazer Apagar o LED
Porta é algum parametro do processador ou macro ou algo do genero?
~
Obrigado
Rafael
Njay disse,
12 Dezembro 2008 às 22:20
PORTA é o nome (macro em C) de um registo que está associado, ou que controla, o valor de cada pino do porto A do AVR. Cada bit deste registo, que é um registo de 8 bits e está “mapeado em memória”, controla um pino do AVR. Este AVR em particular tem 2 portos, o porto A e o porto B. Se abrires a datasheet deste AVR (aqui) vais ver, logo no inicio da 2ª página, em que pinos se situam os portos.
Logo, quando faço PORTA = 0×1 estou a colocar a 1 o bit 0 do porto A, que está associado ao pino 20 do chip, designado PA0; o AVR vai colocar 5V (um “1″) nesse pino. Ao fazer PORTA = 0×0 estou a mandar o AVR colocar 0V (um “0″) no pino, apagando o LED. Ao mesmo tempo, em ambos os comandos, estou a colocar a 0 todos os outros bits (logo, pinos) do porto A.
DDRA é o nome de outro registo associado ao porto A. Este registo controla o tipo de pino de cada pino do porto A, se é uma entrada ou uma saída. Para um pino ser uma saída, o respectivo bit neste registo tem que estar a 1, daí que o programa começa logo com DDRA = 0×1.