![]() |
|
|
|||||||
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#2
|
|||
|
|||
|
если задача только в том, чтобы мигать светодиодами, то спокойно можно использовать таймер и вручную мигать.
Простейший расчет: 16МГц тактовая частота процессора/100Гц допустимая частота мигания светодиодов/256уверен, что 256 градаций яркости - больше, чем надо = максимум 625 тактов на прерывание. Для обслуживания 6 каналов - больше чем достаточно. В прерывании достали переменную по каждому каналу, сравнили с счетчиком, если равно - перекинули соответствующую ногу. Примерно как написано ниже не проверял на синтаксис, но суть понятна, думаю. #define PWM_Count 6 uint8_t volatile Counter; uint8_t volatile PWM_DataPWM_Count; uint8_t volatile PWM_PinsPWM_Count; void Timervoid uint8_t i; if Counter==0 for i=0;i<PWM_Count;i PinPWM_Pinsi=1; for i=0;i<PWM_Count;i if PWM_Datai==i PinPWM_Pinsi=0; UPD. Интересно было бы если бы подсветка горела именно там, где надо, а не вся сторона. Но чую, что это реализовать будет уже сильно посложнее. Хотя почти уверен, что ардуинки хватит и для этого. Повесить динамическую индикацию, можно еще сдвиговые регистры использовать... |
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|
|