Микроконтроллеры | 3 канальный ШИМ на Tiny15L? |
|
---|---|---|
smg123, если возникла проблема с тем, что что-то не успеваете обработать, нужно переносить обработку прерывания T0 в основную программу. В обработчике T0 просто взводите какой-нибудь бит, а в основной программе анализируете его, и , если он взведен, то а). сбрасываете его, и б). выполняете то, что раньше делали в обработчике прерываний T0. Фоновый процесс (основная программа) выполняется с разрешенными прерываниями, так что время ее выполнения для обработчика ШИМа совершенно некритично. Почему переполняется счетчик команд, сказать не могу, возможно (не в обиду будь сказано) Вы просто забыли зациклить программу Выложите исходник, поглядим. |
|
|
Рискую оказаться белой вороной, т.к. исходник в формате Algorithm Builder. Или выкладывать в виде рисунков? |
|
|
|
||
Вот варианты. |
|
|
smg123, в ХОРОШЕМ2 не совсем понял манипуляции с T и Tick. В обработчике прерываний не нужно делать ++, нужно просто сделать Tick=1, и точно так же в основном цикле не нужно делать T++, нужно просто сделать Tick=0 (или как это там делается в Builder-е). Поскольку AB реальный код скрывает (видели, наверное, что некоторые строки в пошаговом режиме "выполняются" по несколько раз), лучше не делать предположений о том, как будет работать та же самая ++. И еще момент - при входе в прерывание регистр состояния в AB как-то сохраняется? Если да, то куда именно, не пересекается ли он с Вашими назначениями на регистры. Сишные компиляторы для AVR любят для таких манипуляций регистры r0 и r1, не исключено, что AB тоже "взлюбил" какой-то из регистров. Если регистр состояния при входе в обработчик не сохраняется, а при выходе - не восстанавливается, работа программы будет абсолютно непредсказуемой - тогда позаботьтесь о нем "руками". В остальном код, на мой взгляд, вполне адекватный. Переполнения счетчика команд у себя не обнаружил В обработчике прерываний T1, судя по "щелчкам", выполняется в среднем 15 команд + еще 3..4 надо накинуть на вызов обработчика, притом что для заданной тактовой частоты длина обработчика не должна быть более 32-4=28 команд. Так что засовывать в обработчик T0 что-то отличное от установки флага даже не пытайтесь. |
|
|
Затыкается при попытке прочитать адрес 1F2, команда LPM .Вы выходите за границу своей таблицы(непонятно, какое его дело) Если заменить в Z на 1F1 то все проходит. chav1961: AB тоже "взлюбил" какой-то из регистров |
|
|
Alexey: Если вы позаботитесь. |
|
|
chav1961: не совсем понял манипуляции с T и Tick Alexey: Вы выходите за границу своей таблицы |
|
|
smg123: Если я добавлю в работающий основной алгоритм небольшую п\п тоже может заткнуться. Уже в другом месте. В тайни15 стоит аппаратный 3-х уровневый стек. Видимо, вы исчерпали его лимит, т.е.неправильно вложили ваш ваучер . |
|
|
GM: ...аппаратный 3-х уровневый стек... лимит... |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |