Еще один blink и без delay, и без millis

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

Может кому интересно, извращенский блинк - с его настройкой моргает пару раз за секунду. на 4 и 5 пине ардуины наны...

если поставить 05 то будет блинкать раз в две секунды где-то

TCCR1B=0x05; // от 01 до 05 можно менять деление частоты

Скетч занимает 190 байт. 


int main(void) //начало программы
{
  
  DDRD=0x30; //инициализируем 4,5 выводы как выходы ардуино нано
  PORTD=0x30; //посылаем высокий уровень на выходы
  TCCR1A=0x00;// инициализация таймера TCNT1 16 ти битный
  TCCR1B=0x04; // от 01 до 05 можно менять деление частоты
  TCNT1H=0; //обнуление регистра таймера, старший регистр
  TCNT1L=0; //младший регистр
  
  
  
    while(1)// бесконечный цикл типо loop
    {
    
    
    if (TCNT1L >= 0x00 && TCNT1H <= 0x7F) // формируем положительный импульс на ногах 4,5 ардуино нано
    {
    PORTD=0x30;
    }
  
  
     
    if (TCNT1L >= 0x00 && TCNT1H >= 0x80) // формируем нулевой импульс
    {
       PORTD=0x00; 
    } 
    
    
    }
}

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Ага, только вместо магических чисел надо было писать имена битов, а то замучают вопросами откуда такие числа взялись.

Да и новички не знающие, что такое регистры и как их настраивать, по названиям битов хоть бы ориентировались и с даташитом сверялись. Хотя о чём это я... новички и даташиты вещи не совместимые... всё равно нихрена не будут читать.

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

Согласен ) но я и сам новичек! если бы не попадались такие похожие исходники, то и не задумался что там глубже. 

Углубление в СИ  думаю совсем не плохо для любого кто хочет более круто кодить.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

1. В Ардуино принято setup() и loop(). main() в Ардуино нет.

2. Как Вы считаете, будет ли жто компилироваится, скажем, на Due?

3. Коль запускаем таймер, почему бы не позволить ему самостоятельно управлять выходами?

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016

продемонстрируйте плиз свой вариант с пояснениями. и я выше написал что извращеный! )

и если main работает значит есть как есть и прямые доступы к портам, тут есть больше чем можно представить себе на первый взгляд . Конечно лучше с этими делами сидеть и дебажить в AVR Studio + протеусом тестить... 

но факты говорят.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

andriano пишет:

main() в Ардуино нет.

в СССР сексу нет!(с)

int main() {}
Скетч использует 66 байт (1%) памяти устройства. Всего доступно 6144 байт.
Глобальные переменные используют 0 байт (0%) динамической памяти, оставляя 1024 байт для локальных переменных. Максимум: 1024 байт.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Клапауций 112 пишет:

andriano пишет:

main() в Ардуино нет.

в СССР сексу нет!(с)

int main() {}
Скетч использует 66 байт (1%) памяти устройства. Всего доступно 6144 байт.
Глобальные переменные используют 0 байт (0%) динамической памяти, оставляя 1024 байт для локальных переменных. Максимум: 1024 байт.

 

И?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017
 if (TCNT1L >= 0x00 && TCNT1H >= 0x80) // формируем нулевой импульс
25     {
26        PORTD=0x00;
27

    }

а зачем весь порт D абнулять?

5alex5
5alex5 аватар
Offline
Зарегистрирован: 10.04.2016
Можем конечно и по битно замутить
 
 if (TCNT1L >= 0x00 && TCNT1H >= 0x80) // формируем нулевой импульс
25     {
26        PORTD &= ~(1<<4);
       PORTD &= ~(1<<5);
27

    }

-------------------------------------------------------------------------------------------

или сразу так 
 
if (TCNT1L >= 0x00 && TCNT1H >= 0x80) // формируем нулевой импульс
25     {
26        PORTD &= ~(0x03<<4);
27

    }

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

andriano пишет:

И?

main()! в Дуино! есть!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Клапауций 112 пишет:

andriano пишет:

И?

main()! в Дуино! есть!

Нету!

gcc != Duino

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

andriano пишет:

Клапауций 112 пишет:

andriano пишет:

И?

main()! в Дуино! есть!

Нету!

gcc != Duino

gcc в Дуино есть!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

В автомобиле тоже есть тормоз, но это совершенно не означает, что автомобиль == тормоз.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

andriano пишет:

В автомобиле тоже есть тормоз, но это совершенно не означает, что автомобиль == тормоз.

верно. это означает, что утверждающий это - тормоз.

andriano пишет:

gcc != Duino

итак: в Дуино есть маин и жсс.