LINUX.ORG.RU

История изменений

Исправление WRG, (текущая версия) :

Попробовал отключить сторожевой таймер, так же мигает зацикливается. Вариант со sleep_mode() тоже не помог, а -Os у меня и так уже есть. Забавно, но если оставить только такой код в функции main, то мигает 1 раз как положено.

#define F_CPU 1000000UL  // 1 MHz
#include <avr/io.h>
#include <util/delay.h>

void setup();

int main(void)            
{
    DDRC |= _BV(PC1);  // led pin as outpiut 
    PORTC |= _BV(PC1);
    _delay_ms(100);
    PORTC &= ~_BV(PC1);
    _delay_ms(100);
  
    while(1);

    return 0;
}

void setup()
{
    DDRB = 0x0;
    DDRC = 0x0;
    DDRD = 0x0;
    
    DDRC |= _BV(PC1);  // led pin as outpiut
    
    // left motor
    DDRB |= _BV(PB7);   // enable pin
    DDRD |= _BV(PD5);   // pin 1
    DDRD |= _BV(PD6);   // pin 2
    
    // right motor
    DDRB |= _BV(PB6);   // enable pin
    DDRB |= _BV(PB1);   // pin 1
    DDRB |= _BV(PB2);   // pin 2
    
    PORTC |= _BV(PC1);
    _delay_ms(100);
    PORTC &= ~_BV(PC1);
    _delay_ms(100);
}

PS: За код спасибо. Глянул, есть что одолжить)

Исходная версия WRG, :

Попробовал отключить сторожевой таймер, так же мигает зацикливается. Вариант со sleep_mode() тоже не помог, а -Os у меня и так уже есть. Забавно, но если оставить только такой код в функции main, то мигает 1 раз как положено.

#define F_CPU 1000000UL  // 1 MHz
#include <avr/io.h>
#include <util/delay.h>

void setup();

int main(void)            
{
    DDRC |= _BV(PC1);  // led pin as outpiut 
    PORTC |= _BV(PC1);
    _delay_ms(100);
    PORTC &= ~_BV(PC1);
    _delay_ms(100);
  
    while(1);

    return 0;
}

void setup()
{
    DDRB = 0x0;
    DDRC = 0x0;
    DDRD = 0x0;
    
    DDRC |= _BV(PC1);  // led pin as outpiut
    
    // left motor
    DDRB |= _BV(PB7);   // enable pin
    DDRD |= _BV(PD5);   // pin 1
    DDRD |= _BV(PD6);   // pin 2
    
    // right motor
    DDRB |= _BV(PB6);   // enable pin
    DDRB |= _BV(PB1);   // pin 1
    DDRB |= _BV(PB2);   // pin 2
    
    PORTC |= _BV(PC1);
    _delay_ms(100);
    PORTC &= ~_BV(PC1);
    _delay_ms(100);
}