Micro tutorial sobre AVR

22 Setembro 2008 at 15:18 (Diy, Tutorial) (, , , )

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” :) ?)

2 Comentários

  1. Rafael disse,

    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

  2. Njay disse,

    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.

Afixar um Comentário