Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

ATtiny 85A

Вт дек 24, 2019 12:49:36

Дoбыл на рынке лет пять тому назад этот микроконтроллер ради любопытства. Но из-за TSSOP-исполнения уж тяжело к нему подобраться и спичечную коробочку с ним убрал подальше, чтобы не потерять…

И вот на прошлой неделе установил себе Proteus 8…
Естественно, многие ключевые элементы в нём отсутствуют, либо не имеют модели симуляции. Например, тот же Z80 графически есть, но логически не симулируется…
А элемент 12И-НЕ (К531ЛА19/74S134) вовсе не так работает, выдавая на выходе не инверсный, а прямой результат… И разрешающий сигнал - логическая единица! :shock:
Конечно, я скачал архивы с ZX-Spectrum и Радио-86РК, но элемент отображения композитного видео не работает и даёт предупреждение «Batch mode model creation function(s) not found in display.DLL. [TVOUT#008A]». И только «boblite» имеет «RGBIOUT» - работающий цветной дисплей…
А так как микросхема телевизионного сепаратора LM1881 так же отсутствует в списке элементов симуляции, я взял сигналы развёртки, идущие к «RGBIOUT», чтобы подтянуть их к ATtiny 85. И тут я споткнулся с прерываниями…
Не срабатывают они по сигналу строчной развёртки через вывод 3(PCINT4) как бы я ни старался!

Открыл проект попроще и решил в нём кнопками прерывания отладить…
Однако и в нём они не вырабатываются!
Вот что тут не так?

И ещё вопрос…
СпойлерК данному ATtiny можно подключить 12 светодиодов (если очень захотеть).
Однако, я попытался сделать обратное - подключить 12 кнопок…
(Помните тему?)
Но почему-то регистры R22 и R23, при нажатии двух кнопок несут не два, а три бита.
Получается, будто по двум проводам нельзя опросить две кнопки, разделённые диодами?

Алгоритм:

  • Настраиваем выводы 5,6,7 на вывод и 2,3 на ввод
  • Перемещаем логический «0» от вывода 5 к выводу 7 и считываем три раза выводы 2,3 в регистры R20,R21,R22
  • Настраиваем выводы 5,6,7 на ввод и 2,3 на вывод
  • Перемещаем логический «0» от вывода 2 к выводу 3 и считываем два раза выводы 5,6,7 в регистры R23,R24
  • Маскируем, сдвигаем и упаковываем все 12 битов в два регистра R22,R23

Код:
      ; Reset Vector
        RJMP    Reset
        RJMP    Event
        RJMP    Event
        NOP     ; TIMER
        NOP     ; EEPROM
        NOP     ; Analog
        NOP     ; Timer 0 Compare A
        NOP     ; Timer 0 Compare B
        NOP     ; Watch
        NOP     ; ADC Conversion
;       .ORG    0x0010
;==============
; CODE SEGMENT
;==============
Event:
Reset:
        LDI     R16,LOW(RAMEND)
        OUT     SPL,R16
        LDI     R16,HIGH(RAMEND)
        OUT     SPH,R16
        LDI     R16,1 << PUD
        OUT     MCUCR,R16
Phase_1:; Vertical Out - Horizontal In
        LDI     R17,(1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4)
        OUT     PORTB,R17
        LDI     R16,(1 << DDB0) | (1 << DDB1) | (1 << DDB2)
        OUT     DDRB,R16
        LDI     R17,(1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4)
        OUT     PORTB,R17
        IN      R20,PINB
        LDI     R17,(1 << PB0) | (1 << PB2) | (1 << PB3) | (1 << PB4)
        OUT     PORTB,R17
        IN      R21,PINB
        LDI     R17,(1 << PB0) | (1 << PB1) | (1 << PB3) | (1 << PB4)
        OUT     PORTB,R17
        IN      R22,PINB
Phase_2:; Horizontal Out - Vertical In
        LDI     R17,(1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4)
        OUT     PORTB,R17
        LDI     R16,(1 << DDB3) | (1 << DDB4)
        OUT     DDRB,R16
        LDI     R17,(1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB4)
        OUT     PORTB,R17
        IN      R23,PINB
        LDI     R17,(1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB3)
        OUT     PORTB,R17
        IN      R24,PINB
Phase_3:; Pack the bits
        ANDI    R24,(1 << PB0) | (1 << PB1) | (1 << PB2)
        LSL     R24
        LSL     R24
        LSL     R24
        ANDI    R23,(1 << PB0) | (1 << PB1) | (1 << PB2)
        OR      R23,R24
        ANDI    R20,(1 << PB3) | (1 << PB4)
        LSR     R20
        LSR     R20
        LSR     R20
        ANDI    R21,(1 << PB3) | (1 << PB4)
        LSR     R21
        OR      R21,R20
        ANDI    R22,(1 << PB3) | (1 << PB4)
        LSL     R22
        OR      R22,R20
        LDI     R21,0x3F
        EOR     R22,R21
        EOR     R23,R23
        ; Now is code in R23 and R22
Stopped:RJMP    Phase_1;Stopped
Это ошибка в коде, в самом алгоритме или сама схема в принципе работать не может?
Вложения
12-buttons.png
12 кнопок по 5 проводам
(17.42 KiB) Скачиваний: 259
BiKeyPad.zip
Bidirectional Keys Pad
(17.6 KiB) Скачиваний: 185
tiny_134.zip
Схема с ЛА19 и ATtiny85A
(61.32 KiB) Скачиваний: 214

Re: ATtiny 85A

Ср дек 25, 2019 18:27:06

У вас даже много ног на 12 кнопок. 4-х вполне.)

ATtiny 85A

Чт дек 26, 2019 15:49:34

У вас даже много ног на 12 кнопок. 4-х вполне.)
Этo шутка? :)

Оказывается в коде я допустил опечатку: «OR R22,R20» следует исправить на «OR R22,R21»…

А с PCINT4 по PB4 так и не разобрался и поступил крайне тупо - по PCINT5/RESET сбрасываю процессор…
Оказывается, по RESET не все регистры обнуляются и можно профиксировать по значениям регистров программно, в каком месте произошёл СБРОС.
Конечно, это крайне тупой способ, но он 100% работает!

Но я код полностью переписал…
Схему переработал и сделал её красивее
Сделал 10 кнопок и 2 индикатора через оптронную развязку для выдачи информации.
Если ко сбросу подтянуть отдельную кнопку или приёмник, то можно получать информацию…

Или я ошибаюсь?
Вложения
10-buttons.txt
Опрос кнопок и мигание индикаторами
(2.85 KiB) Скачиваний: 116
10-buttons.png
10 кнопок ввода
2 индикатора вывода
(63.56 KiB) Скачиваний: 262

Re: ATtiny 85A

Пн янв 27, 2020 10:57:02

У вас даже много ног на 12 кнопок. 4-х вполне.)
Этo шутка? :)
Или я ошибаюсь?

Нет, "польный сериоз".)

Re: ATtiny 85A

Пн янв 27, 2020 16:39:57

если без внешних регистров сдвига, то про 4 ноги на 12 кнопок - точно шутка.
а если с регистрами сдвига, то реально.

Re: ATtiny 85A

Пн янв 27, 2020 17:09:57

На АЦП еще можно. )

Re: ATtiny 85A

Пн янв 27, 2020 17:11:37

разве? а ADC на порт кнопок заюзать ка во всех причичных телеках?

Re: ATtiny 85A

Вт янв 28, 2020 08:05:47

Рисуете квадрат ("Что вы такой неровный квадрат нарисовали? Вы что дальтоник?")). 4 угла нужно подключить к МК. Каждый угол соединяется с другими через диод с кнопкой. Встречно-параллельно. Т.о., в каждом соединении будет по 2 кнопки. Итого 12, ага? Опрос, думаю, понятен. Активизируете нулём один угол и проверяете 3 остальные. И так все 4 угла. Элементарно, Ватсон.)

Re: ATtiny 85A

Вт янв 28, 2020 11:35:03

болно муторно это и клава нестандартна
я видел девайсы где дляэкономи ног в индикаторе с ДИ часть сегментоф фключена встречно осталным... вот геморто с мматрицей вывода ....без бочки пива не понять...

Добавлено after 2 minutes 17 seconds:
чем 1 ногий вариант с ADC не устроил?

Re: ATtiny 85A

Вт янв 28, 2020 12:59:45

musor писал(а):
чем 1 ногий вариант с ADC не устроил?

А как там с разрешением по аналоговому входу? Его хватит, чтобы повесить на один провод, к примеру, 64 кнопки?

Re: ATtiny 85A

Вт янв 28, 2020 13:35:19

да хоть 256 ...

Re: ATtiny 85A

Вт янв 28, 2020 13:42:36

Ага, конечно. Хоть бы 8 повесили. На один канал имеется ввиду. А без АЦП вообще никаких проблем. Хоть в индикации, хоть где. Разбираешься только один раз и потом напрочь обо всём забываешь.)

Re: ATtiny 85A

Вт янв 28, 2020 14:54:42

А как там с разрешением по аналоговому входу? Его хватит, чтобы повесить на один провод, к примеру, 64 кнопки?

Решение для мазохистов. Дело не только в разрешении - резисторы делителя д.быть с точностью доли процента, переходное сопротивление кнопки = 0, а плата - очень большое сопротивление, не нарушаемое влагой и неотмытым флюсом. Лучше всего на фторопласте :))

Re: ATtiny 85A

Вт янв 28, 2020 22:59:54

Пошел за фторопластом.

Re: ATtiny 85A

Вт янв 28, 2020 23:10:52

вы о чем каке доли процента вы же не измеритель собирает?
кнопки да есали закиснут могут глючить но они и так глючат....даже по 1 ена порту
вполне себе рабоче рещегни на десяток или чуть боле кноепок
на 64 уже конечно много обвязки там матрица рулит...

Re: ATtiny 85A

Ср янв 29, 2020 09:26:55

Господин из Спиртогонска... Будьте так любезны и переведите то, что Вы написали: ...даже по 1 ена порту вполне себе рабоче рещегни

Re: ATtiny 85A

Пт янв 31, 2020 14:50:30

"Это непереводимая игра слов." :)

Re: ATtiny 85A

Пт янв 31, 2020 22:31:52

Jack_A писал(а):Решение для мазохистов. Дело не только в разрешении - резисторы делителя д.быть с точностью доли процента, переходное сопротивление кнопки = 0, а плата - очень большое сопротивление, не нарушаемое влагой и неотмытым флюсом. Лучше всего на фторопласте
Решение с кнопками на АЦП часто используется в устройствах, выпускаемых промышленно. Наверное, если реализовывать таким образом клавиатуру на пару сотен кнопок, понадобятся резисторы с точностью доли процента, и т.д. Пара десятков кнопок ("цифровая" клавиатура плюс десяток различных управляющих клавиш) реализуется легко.
Stan47 писал(а):Господин из Спиртогонска... Будьте так любезны и переведите то, что Вы написали
а оно Вам надо? ;) я так понял, что musor что-то вроде маскота этого форума. Фольклорный элемент :)

Re: ATtiny 85A

Сб фев 01, 2020 08:58:09

Мне-то оно не надо. Но создается впечатление, что он или над нами издевается, или канал связи с созвездием Омега зашумлен.

Re: ATtiny 85A

Сб фев 01, 2020 19:31:05

А Вы бы сначала подключили бы с 10-к кнопок к одному каналу, добились бы результата, глядишь и почувствовали бы тему. А тогда и дальше можно было бы говорить о чём то, не?
Ответить