Страница 1 из 1

Программатор BM9010

Добавлено: Пт май 18, 2012 19:29:26
RAIDER
Собрал мигалку из 24 светодиодов. Программу написал. Взял контроллер мегу8515. В нем была какая то прошивка. Я залил новую программу и прошил фьюзы. После этого на всех ножках контроллера 1,5 В и я не могу ни записать ни считать программу выдает ошибку AVRProg can not entering programming mode. Все светодиоды просто светятся в полнакала.

Код: Выделить всё

#include <mega8515.h>
#include  <delay.h>

void Seriya_1(void)   //Просто мигают все светодиоды
{
        PORTB=0xFF;
        PORTD=0xFF;
        PORTC=0xFF;
        delay_ms(50);
        PORTB=0x00;
        PORTD=0x00;
        PORTC=0x00;
        delay_ms(50);
}

void Seriya_2(void)   //моргают через один
{
        PORTB=0b01010101;
        PORTD=0b01010101;
        PORTC=0b01010101; 
        delay_ms(40);
        PORTB=0b10101010;
        PORTD=0b10101010;
        PORTC=0b10101010;
        delay_ms(40);
}

void Seriya_3(void) //бегущий огонек по кругу
{
    unsigned char b;
    PORTB=0x00;
    PORTD=0x00;
    PORTC=0x00;
    for (b=0; b<=7; b++)
    {
        PORTB=1<<b;
        delay_ms(20);
    } 
    PORTB=0x00;
    for (b=0; b<=7; b++)
    {
        PORTD=1<<b;
        delay_ms(20);
    }
    PORTD=0x00;
    for (b=0; b<=7; b++)
    {
        PORTC=1<<b;
        delay_ms(20);
    }
    PORTC=0x00;
}

void Seriya_4(void)  //постепенное заполнение с верху вниз и потом моргание
{
        unsigned char a,b2;
            b2=7;
            PORTB|=1<<0;
            for (a=0; a<=b2; a++)
            {   
                PORTB|=1<<(a+1);           
                PORTC|=1<<(b2-a);
                delay_ms(50);
            }   
            for (a=0; a<=4; a++)
            {
                PORTD|=1<<a;
                PORTD|=1<<(b2-a); 
                delay_ms(50);
            }           
            PORTB=0x00;
            PORTD=0x00;
            PORTC=0x00;
            for (a=0; a<3; a++)
            {
                PORTB=0xFF;
                PORTD=0xFF;
                PORTC=0xFF;
                delay_ms(50);
                PORTB=0x00;
                PORTD=0x00;
                PORTC=0x00;
                delay_ms(50);
            }
      //  }
}

void Seriya_5(void)   // бегущий огонек по 3
{
    unsigned char a;
    for (a=0; a<=5; a++)
    {

        if (a<5)
            PORTB|=1<<a;
        PORTB|=1<<(a+1);
        PORTB|=1<<(a+2);
        delay_ms(20);
        PORTB=0x00;
    }
    for (a=0; a<5; a++)
    {
        if (a<5)
            PORTD|=1<<a;
        PORTD|=1<<(a+1);
        PORTD|=1<<(a+2);
        delay_ms(20);
        PORTD=0x00;
    }
    for (a=0; a<5; a++)
    {
        if (a<5)
            PORTC|=1<<a;
        PORTC|=1<<(a+1);
        PORTC|=1<<(a+2);
        delay_ms(20);
        PORTC=0x00;
    }
}

void Seriya_6(void)  //бегущий огонек заполняет сердце и на втором круге опустошает его
{
    unsigned char b;
    PORTB=0x00;
    PORTD=0x00;
    PORTC=0x00;
    for (b=0; b<=7; b++)
    {
        PORTB|=1<<b;
        delay_ms(20);
    } 
    for (b=0; b<=7; b++)
    {
        PORTD|=1<<b;
        delay_ms(20);
    }
    for (b=0; b<=7; b++)
    {
        PORTC|=1<<b;
        delay_ms(20);
    }
   
    delay_ms(50);
    PORTB=0xff;
    PORTD=0xff;
    PORTC=0xff;
   
    for (b=0; b<=7; b++)
    {
        PORTB&=~(1<<b);
        delay_ms(20);
    } 
    for (b=0; b<=7; b++)
    {
        PORTD&=~(1<<b);
        delay_ms(20);
    }
    for (b=0; b<=7; b++)
    {
        PORTC&=~(1<<b);
        delay_ms(20);
    }
}

void main(void)
{
unsigned  char a;
    // Port A initialization
    PORTA=0xFF;
    DDRA=0x00;

    // Port B initialization
    PORTB=0x00;
    DDRB=0xFF;

    // Port C initialization
    PORTC=0x00;
    DDRC=0xFF;

    // Port D initialization
    PORTD=0x00;
    DDRD=0xFF;
   
   
    a=0;
    while (1)
    {             
        //Seriya_1();
        //Seriya_2();
        //Seriya_3();
        //Seriya_4();
        //Seriya_5();
        for (a=0; a<3; a++)
            Seriya_1();
        for (a=0; a<3; a++)
            Seriya_3();
        for (a=0; a<3; a++)
            Seriya_6();
        for (a=0; a<3; a++)
            Seriya_4();
        for (a=0; a<3; a++)
            Seriya_5();
        for (a=0; a<3; a++)
            Seriya_2();
       
    }
}

Re: Программатор BM9010

Добавлено: Пн май 28, 2012 14:44:13
ds1307
Вы явно напутали с фьюзами. Теперь надо либо уменьшить частоту програмировани, либо восстанавливать МК. И не слишком ли маленькое время вы задали в задержках? 40-50ms. Может надо было 500?