Еще один blink и без delay, и без millis
- Войдите на сайт для отправки комментариев
Вс, 23/04/2017 - 16:37
Может кому интересно, извращенский блинк - с его настройкой моргает пару раз за секунду. на 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; } } }
Ага, только вместо магических чисел надо было писать имена битов, а то замучают вопросами откуда такие числа взялись.
Да и новички не знающие, что такое регистры и как их настраивать, по названиям битов хоть бы ориентировались и с даташитом сверялись. Хотя о чём это я... новички и даташиты вещи не совместимые... всё равно нихрена не будут читать.
Согласен ) но я и сам новичек! если бы не попадались такие похожие исходники, то и не задумался что там глубже.
Углубление в СИ думаю совсем не плохо для любого кто хочет более круто кодить.
1. В Ардуино принято setup() и loop(). main() в Ардуино нет.
2. Как Вы считаете, будет ли жто компилироваится, скажем, на Due?
3. Коль запускаем таймер, почему бы не позволить ему самостоятельно управлять выходами?
продемонстрируйте плиз свой вариант с пояснениями. и я выше написал что извращеный! )
и если main работает значит есть как есть и прямые доступы к портам, тут есть больше чем можно представить себе на первый взгляд . Конечно лучше с этими делами сидеть и дебажить в AVR Studio + протеусом тестить...
но факты говорят.
main() в Ардуино нет.
в СССР сексу нет!(с)
main() в Ардуино нет.
в СССР сексу нет!(с)
И?
if
(TCNT1L >= 0x00 && TCNT1H >= 0x80)
// формируем нулевой импульс
25
{
26
PORTD=0x00;
27
}
а зачем весь порт D абнулять?
if
(TCNT1L >= 0x00 && TCNT1H >= 0x80)
// формируем нулевой импульс
25
{
26
27
}
-------------------------------------------------------------------------------------------
if
(TCNT1L >= 0x00 && TCNT1H >= 0x80)
// формируем нулевой импульс
25
{
26
PORTD &= ~(0x03<<4);
27
}
И?
main()! в Дуино! есть!
И?
main()! в Дуино! есть!
Нету!
gcc != Duino
И?
main()! в Дуино! есть!
Нету!
gcc != Duino
gcc в Дуино есть!
В автомобиле тоже есть тормоз, но это совершенно не означает, что автомобиль == тормоз.
В автомобиле тоже есть тормоз, но это совершенно не означает, что автомобиль == тормоз.
верно. это означает, что утверждающий это - тормоз.
gcc != Duino
итак: в Дуино есть маин и жсс.