Микроконтроллеры | 3 канальный ШИМ на Tiny15L? |
|
---|---|---|
А зачем ШИМ? 256 градаций ШИМ не много, ибо Заложил в алгоритм еще таблицу яркостей под глаз (нелинейный ШИМ). |
|
|
Alexey: Что бы "догадывалка" развивалась! AHTOXA: 256 градаций яркости - не многовато? AHTOXA: Прикинем максимально возможную частоту ШИМ: AndryG: Если "скоро Новый год", то, скорее всего, управлять будем лампами |
|
|
Как вам такой вариант 3-канального шима?
|
|
|
Хорошо, только есть два нюанса - в Tiny15 нет режимов Z+, и коэффициент заполнения ШИМа получится втрое ниже (по два холостых цикла на каждый ШИМ). |
|
|
Вообще-то есть, вот цитата, с.6 документа 1187. Registers 30 and 31 form a 16-bit pointer (the Z-pointer) which is used for indirect Flash memory and Register File access. When the Register File is accessed, the contents of R31 is discarded by the CPU. Вторую часть фразы не понял. Что такое холостые циклы и откуда они взялись? Как тут предотвратить форматирование фрагмента кода, [ pre ] чёто не работают, и как выбрать шрифт? |
|
|
Речь не о том, что с помощью регистра Z можно получить доступ к регистрам, речь о том, что в системе команд именно ATTiny15 НЕТ команды ld rNN,Z+, есть только ld rNN,Z. Про холостые циклы цитирую даташит на Tiny15: The Output Compare Register 1A is an 8-bit read/write register. В переводе на русский - операция сравнения TCNT1 и OCR1A выполнится только тогда, когда TCNT1 САМ досчитал до OCR1A, а не тогда, когда мы ему в ЭТОМ ЖЕ ЦИКЛЕ счета таймера подсунули в OCR1A новое значение. Проще говоря, нет никакой надежды, что между прерываниями по переполнению таймера мы получим по 3 прерывания по сравнению, мы их получим ровно ОДНО. Вот откуда берутся два холостых цикла. Впрочем, тут ситуация будет еще хуже - просто из трех ШИМов будет работать только один. PS. Кстати, в программе молчаливо предполагается, что задержка ШИМ1 < задержка ШИМ2 < задержка ШИМ3. Мягко говоря, это - далеко не факт |
|
|
chav1961: ...в системе команд именно ATTiny15 НЕТ команды ld rNN,Z+, есть только ld rNN,Z. Ну вот, век живи, век учись. Придётся добавить пару INC R30 в прерывание. chav1961: В переводе на русский - операция сравнения TCNT1 и OCR1A выполнится только тогда, когда TCNT1 САМ досчитал до OCR1A, а не тогда, когда мы ему в ЭТОМ ЖЕ ЦИКЛЕ счета таймера подсунули в OCR1A новое значение. Проще говоря, нет никакой надежды, что между прерываниями по переполнению таймера мы получим по 3 прерывания по сравнению, мы их получим ровно ОДНО. Вот откуда берутся два холостых цикла. Ну это вы, мне кажется, погорячились. Вот мой вольный перевод The Timer/Counter Output Compare Register 1A contains the data to be continuously compared with Timer/Counter1 A compare match occurs only if Timer/Counter1 counts to the OCR1A value. A software write that sets TCNT1 and OCR1A to the same value does not generate a compare match. Всё, труба зовёт, убегаю домой. |
|
|
chav1961:операция сравнения TCNT1 и OCR1A выполнится только тогда, когда TCNT1 САМ досчитал до OCR1A, а не тогда, когда мы ему в ЭТОМ ЖЕ ЦИКЛЕ счета таймера подсунули в OCR1A новое значение. По-моему, Вы неправильно поняли. Если записать в TCNT значение OCR1A, то прерывание не возникнет,да. А если записать в OCR1A значение TCNT+x, то оно естественно возникнет. Ибо таймер досчитает до этого значения. chav1961:Проще говоря, нет никакой надежды, что между прерываниями по переполнению таймера мы получим по 3 прерывания по сравнению, мы их получим ровно ОДНО. Соответственно, и этот вывод неверен. |
|
|
А я только читаю и вникаю. |
|
|
Смысл предложения GM в том, чтобы не обрабатывать каждый тик таймера, а грузить регистр OCR1A по очереди тремя значениями величины ШИМ. Т.е. вместо 256 прерываний обрабатывать 3+1 = 4. Я считал, что менять "на лету" OCR1A к нужному эффекту не приведет, но двумя голосами "против" оказался повержен Единственная проблема - задержки ШИМ перед загрузкой в OCR1A должны быть отсортированы по возрастанию, а в паре с ними должна храниться информация о том, с какой именно ногой (или несколькими ногами, если у двух или трех каналов значения ШИМа одинаковые) эта задержка связана. Если есть желание, попробуйте реализацию таким способом |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |