Обсуждаем контроллеры компании Atmel.
Ответить

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Пт фев 05, 2016 07:57:52

Без понятия, что у него описано. :) Да, ловим факт срабатывания, а в прерывании щупаем вторую ногу. Если там 1 - значит крутили тудым, если 0 - сюдым. :)) Не затратно по ресурсам, не загружает контроллер постоянным опросом, и работает очень четко. Главное флаг прерывания сбрасывать, дабы от дребезга защититься, и конденсаторы на ноги повесить, чтобы совсем хорошо было.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Пт фев 05, 2016 10:33:13

А там что-то было про запрет прерываний и задержка по таймеру. Именно от дребезга.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Пт фев 05, 2016 10:46:24

Угу, задержка антидребезга. Это уж как Вам комфортнее. :) Без конденсаторов 0,1 на каналах нужна обязательно.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Пт фев 05, 2016 12:51:03

edm2007 Да, верно. Об аппаратной привязке пинов к таймеру совсем забыл, так как не использую это дело.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Пт фев 05, 2016 12:57:47

А штука, тем временем, очень недурственная. :)) Хоть и диктует условия по разводке плат...

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Пт фев 05, 2016 14:13:21

:) Возможно это мои тараканы распоясались, но для RGB у меня "не пошла" такая возможность таймеров.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Пт фев 05, 2016 14:16:17

Ну если только один модуль RGB && таймеры больше не нужны, то это лучший вариант. Ну а если каналов ШИМ требуется 10-20-30..., то тут уже программный BAM (не Вам, а Bit Angle Modulation) в помосчь. :))

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Пт фев 05, 2016 14:45:45

Да. :) Именно несколько каналов требуются. Вот сейчас пытаю ВАМ с 12 RGB ледами с ОК. Катоды попарно(0+6, 1+7...) сунуты на один из портов и переключаются динамически, в момент 0х80 в регистре сравнения. Аноды по 6 штук соединены по цветам и тоже на порт. ВАМ на высоких частотах нивелирует яркости и цвета, соответственно. :( Приходится делить клок таймера: цвета-то "красивеют", но линейка мерцает, подобно обычному программному шиму. А если использовать ВАМовскую плюшку одновременного включения(катодов, в моем случае) по маске, то придется добавлять буферные каскады, т.к. тинька ток уже не потянет, чего не хотелось бы. :)

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Пт фев 05, 2016 18:59:06

Туплю дальше...
Настроил все таймеры, т.е. один Т0 полностью и половину Т1 на аппаратный ШИМ. Все работает прекрасно. Режим ФастШИМ 8 бит. И даже энкодер работает, только с дребезгом. Решил запрещать прерывания, а разрешать, только когда таймер дотикает до нужного значения. И уперся в конфигурацию таймера Т1В... Как? если он уже на ШИМ настроен??? Т.е биты в WGM во всех регистрах выставлены. А мне надо СТС или какой другой режим...
Простите. Буду рад, если ткнете носом. :beer:

З.Ы. И зачем там сброс флага прерывания? Если их можно запретить? :dont_know: Или я как-то не так делаю?

И вот код. Сильно не пинайте. :oops:




З.З.Ы. Простите. кое-чего добился используя тупые задержки. И даже работает.
Еще другой вопрос теперь всплывает... Яркость светодиодов регулируется не линейно... :facepalm: Т.е. сначала она растет, а потом после некоторого придела почти не меняется, а крутить до самого максимального значения можно долго. Также убавляешь, а она не меняется, а потом начинает падать...
Как сделать, чтобы этого избежать тоже? :roll:

З.З.З.Ы. И еще энкодер какой-то интересный выдрал откуда-то... У него все изменения ловит за два щелчка при повороте.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 06:04:26

Аппаратный ШИМ, в большинстве случаев, в прерываниях не нуждается. Он для того и придуман, чтобы разгрузить ядро. Разработчики позаботились о том, чтобы не возникало никаких коллизий. Для этого ввели специальный буфер.

Запись регистров 16 разрядной периферии должна быть строго определенная - старшая часть - младшая часть. Чтение наоборот.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 06:25:12

Абалдеть! Сейчас попробую все это устранить. Мне еще осознать надо... :beer:

З.Ы. Изначально думал, раз таймер (ШИМ) 8 битный, то зачем старший загружать? потому и проигнорил его. :dont_know: (а про последовательность записи/чтения много где видел, спасибо).

З.З.Ы. И еще, обязательно адреса писать, где прерывания? Мне всегда думалось, что МК сам их по порядочку раскидывает....
А все. Дошло. Вы просто вырезали всю таблицу прерываний... :)
Последний раз редактировалось СКАЗОЧНИК Сб фев 06, 2016 07:07:55, всего редактировалось 2 раз(а).

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 06:57:13

INT0 оставил. :) Все остальные убрал, чтобы показать работу аппаратного ШИМ без оных.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 07:02:28

)) Так я другие и не использую... :dont_know:
И еще небольшой вопросик. Там в инициализации прописано прерывание включить по ИНТ0 и флаги сбросить. У меня по файлу Register summary из даташита в регистре флагов другие названия у этих прерываний... :dont_know: INTF1 и INTF0.

И другой еще вопросик.
Будет ли работать эта конструкция (проверю, конечно, еще до конца не все рассмотрел)

Код:
INT_0:

     
   LDI   R16,-10
    sbis PIND,3
   LDI   R16,10


А то по прерыванию сразу скидываем -10, потом смотрим куда крутим, а там получится, что прибавляем. По следующему опять скинем, потом прибавим. И так будем висеть в одном месте? Или я не правильно понимаю? Простите за дотошность... :oops:

А вот эта конструкция, просто в восторг меня привела!!!! Круто! Блин, как же мне еще далеко до совершенства. :(
Код:
SBI ACSR,ACD


Такс... ладно. Все попробовал. все работает.
Пара вопросов:

Как работает вышеуказанная конструкция в прерывании?
И как работают выводы ШИМ без этого:
Код:
;   ldi temp, (1<<OCIE1A)|(0<<OCIE1B)|(1<<OCIE0B)|(1<<OCIE0A)   ; три вывода на аппаратный ШИМ
;   out TIMSK, temp

? Что-то я где-то упускаю...
И куда девался дребезг? :dont_know:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 07:27:38

Точно! ДО меня дошло! :shock: :))) :))) :beer: :beer: :beer:
Вы замечательный человек. Дай вам Бог здоровья!

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 07:36:18

Спасибо. И Вам здоровья и успехов.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 08:25:28

:) Не получается сделать, чтобы за приделы диапазона не вылазило.. Крутишь энкодер, а он убавляет до минимума и снова в максимум уходит...
Код:
INT_0:

      LDI   R16, 10
       sbis PIND, 3
         LDI   R16, -10

         SUB VOLUME, R16

         cpi VOLUME, 0
         breq MIN
         cpi VOLUME, 250
         breq MAX

         rjmp G

      MIN:   LDI VOLUME, 0
               rjmp G
      MAX:   ldi VOLUME, 250

      G:      out OCR0A, VOLUME
            out OCR0B, VOLUME
            OUT OCR1AH, ZH            
            out OCR1AL, VOLUME
      
   reti


Все. понял где ошибка.

Код:
                 MIN:   LDI VOLUME, 10
               rjmp G
      MAX:   ldi VOLUME, 240



Не оставил возможности для дальнейших шагов...
Хорошо. Встал вопрос в другом. Яркость не линейная. (((((( Если делать по 10, то быстро все, но до конца не убавляет. А если делать по 2, то долго крутить приходится.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 08:51:18

Может сравнение делать более жестким.
Код:
cpi VOLUME, 250
         BRLO PC+2
MAX: LDI VOLUME, 250
         cpi VOLUME, 10
         BRSH PC+2
MIN: LDI VOLUME, 10

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 08:59:50

Елки, как у вас получается все время компактнее, чем у меня написать?! :roll: :) :)
Моя конструкция тоже работает теперь. :write:

Я тут сижу вообще думаю, что надо сравнивать до какого-то числа, а потом менять коэффициент прибавления/убавления. Чтобы в конце (уменьшения) диапазона яркость плавненько менялась, а в максимальных значениях более резко, т.к. там совсем не заметно изменений. :dont_know:

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 09:21:16

Визуально яркость меняется неравномерно, т.е. наверно, нужна таблица изменения параметра, из которой и выбирается следующее приращение.

Re: ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Сб фев 06, 2016 10:12:41

:facepalm: Думаю, почему же у меня чуток не так, как хочется... Забыл, что значение VOLUME чем больше, тем меньше яркость. Все делал наоборот. :facepalm: :kill: :oops:
Ответить