Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Покупной. Я предпочитаю такие вещи брать готоые. Хватило эпопеи с самодельными программаторами.
Проект "своими лапами" видел здесь
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Chettuser

Сообщение Chettuser »

Спс. посмотрим.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Сообщение Necroteeth »

ploop писал(а):
вообще, время дребезга ориентировочно какое? микросекунды, милли? можно ли на аналоговом осцилле оценить его длительность для конкретной схемы, например?
Зависит от качества кнопки. Можете для эксперимента подпаять параллельно ей кондёр 0,1 - 1 мкФ
сделал все-таки как в обучалке - через цикл задержки. все равно срабатывает не всегда. попробую, наверное, кнопку поменять.
вообще, если на входе с кнопкой сидит единица, то как лучше распознавать нажатие - по фронту/смене уровня или как? я использовал срабатывание прерывания по заднему фронту, но вдруг обычно делают по-другому. подскажите, опытные коты!
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

я использовал срабатывание прерывания по заднему фронту
Использовать прерывания для кнопок нецелесообразно. Лучше их опрашивать тогда, когда необходимо. Делается это просто - читаете содержимое порта и накладываете маску:

Код: Выделить всё

in R16, PINB          ; читаем содержимое порта
andi R16, 0b00010000  ; отсекаем всё, кроме четвёртого бита
; Далее условия - BRNE, BREQ ... 
Вариант второй - SBRC, SBRS, SBIS, SBIC
Реклама
Эиком - электронные компоненты и радиодетали
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

Сообщение ValBag »

Necroteeth писал(а):как лучше распознавать нажатие - по фронту/смене уровня или как?
В принципе - без разницы, с точки зрения дребезга, т. к. разное время этого процесса, зависит от конструкции кнопки. Если вы наблюдаете срабатывание "через раз", то это может быть: слишком большая задержка или неисправная кнопка.
Второй момент: Если обнаружив замыкание кнопки, после задержки не проверить это еще раз, то при отпускании кнопки в результате возможного дребезга, может последовать ложное действие (незапланированное переключение светодиода в данном случае).
Последний раз редактировалось ValBag Пн янв 24, 2011 14:14:28, всего редактировалось 2 раза.
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Чтоб просто задействовать кнопки для отладки, я делаю так: во время нажатия загоняю программу в бесконечный цикл, пока не отпустишь.

Код: Выделить всё

--- основной цикл
in tr,PIND
sbrs tr,6
rcall decCorrection

--- подпрограмма
decCorrection:                  ; декремент коррекции 
dec Correction
ddl4:
    in tr,PIND
    sbrs tr,6                   
    rjmp ddl4 
ret
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Сообщение Necroteeth »

ploop писал(а):Чтоб просто задействовать кнопки для отладки, я делаю так: во время нажатия загоняю программу в бесконечный цикл, пока не отпустишь.

Код: Выделить всё

--- основной цикл
in tr,PIND
sbrs tr,6
rcall decCorrection

--- подпрограмма
decCorrection:                  ; декремент коррекции 
dec Correction
ddl4:
    in tr,PIND
    sbrs tr,6                   
    rjmp ddl4 
ret
если честно, я не очень понял смысл этого действа.
у меня же кнопочка без фиксации - щелкнул и все. несмотря на небольшую программную задержку, все равно светодиоды временами переключаются сразу по нескольку штук. в профессиональных устройствах как с этим борются?
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Если честно, как в профессиональных с этим дело обстоит - не знаю. Но когда понадобится могу сочинить/нагуглить.
если честно, я не очень понял смысл этого действа.
Объясняю.
В основном цикле программы идёт проверка нажатия. tr - обычный регистр.
in tr,PIND - берём в регистр значение из порта D
sbrs tr,6 - проверяем состояние шестого бита (там кнопка)
Если этот бит в единице, пропускаем следующую команду
rcall decCorrection - переход на подпрограмму
дальше зацикливание

Если кнопка не нажата, rcall decCorrection не вызывается. Если нажать - sbrs не сработает и не перепрыгнет следующую строку, соответственно сработает rcall

В подпрограмме то же самое. Пока кнопка нажата, крутимся в цикле по метке ddl4

Смысл такой: на одну кнопку жмём - значение в регистре Correction увеличивается, на другую уменьшается (тут только одна показана)

Если этого не сделать, то в каждой итерации будет уменьшаться значение в регистре Correction, пока держим кнопку. А на 8МГц частоте он много тысяч раз успеет регистр переполнить, пока палец кнопку отпустит.
Родился
Сообщения: 5
Зарегистрирован: Вс янв 23, 2011 23:12:53

Сообщение pos7 »

не знаю туда попал или нет, пред история: на новогодних праздниках заинтересовался МК ATMega (...duino),
все что надо спаял, что надо зашил, сейчас сижу, изучаю,
назрел такой вопрос, на который пока не нашел ответа

запуск внутренней программы идет примерно через 10 секунд после включения питания (или после RESET)
{пока все опыты на ATMEGA 8 - 16PU}

это очень долго, если я хочу собрать некий брелок на ATMege или еще какую автономную систему на батарейках (на аккумуляторе), то каждый раз при включении я должен ждать не менее 10 сек, а все время держать ее включенной или спящей не хочется, надо как то красиво продлить срок жизни батарейки, лучше полным выключением устройства

Пробовал баловаться фьюзами, большого результата нет, +/-3 сек от тех же 10 секунд.

Пробовал запускать с внутреннего генератора, то же большой разницы не заметил.

Может это изза того что прога заливалась из под "arduino-0022" и там всякого лишнего на старте делается.

Как здесь быть, какие есть решения ? или тут уже не чего не поделать, придется мирится, придется всегда ждать несколько секунд на включении.
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

запуск внутренней программы идет примерно через 10 секунд после включения питания (или после RESET)
Значит это программно сделана такая задержка. А сама программа в МК стартует после запуска тактового генератора + несколько его тактов (чтоб он вошел в рабочий режим) Время исчисляется милли- или даже микро-секундами, так что человек это никак не заметит.
Родился
Сообщения: 5
Зарегистрирован: Вс янв 23, 2011 23:12:53

Сообщение pos7 »

если так, получается что "arduino" что то туда заливает, чем то там на старте занимается, возможно инициализацией каких то массивов, синхронизации каких нибудь констант, переменных.....

что бы проверить сей домысл, мне значит надо залить туда прогу из другой оболочки, AVR Studio подойдет для этого ?
или что другое порекомендуете и где взять пример простого "Blink" (моргание светодиодом) для теста, на AVR Studio не нашел не каких примеров,
а может не там искал.

сама оболочка "arduino" мне понравилась, легко программировать, множество уже готовых библиотек, разжёванные примеры, не хотелось бы с ней расставаться

или может подкинете готовый HEX файл Blink-а, так как заливаю через PonyProg через AVR Studio пока не могу, программатор еще не сделал
Родился
Сообщения: 5
Зарегистрирован: Вс янв 23, 2011 23:12:53

Сообщение pos7 »

а есть такое предположение может в "arduino" срабатывает автозагрузчик на RESET-e который ждет обмена по посл.порту, тогда вопрос, а как его можно отключить, может фьюзами можно сделать так чтобы запускалась сразу программа, а не автозагрузчик, почему думаю на автозагручик, потому что видно активность сразу на запуске по RXD, TXD, а после уже стартует основная программа
Родился
Сообщения: 5
Зарегистрирован: Вс янв 23, 2011 23:12:53

Сообщение pos7 »

да! это BootLoader, как теперь его научится отключать и включать по необходимости
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

бутлоадер отключить фьюзами =)
Ставим плюсы: )
Встал на лапы
Аватара пользователя
Сообщения: 129
Зарегистрирован: Пн окт 04, 2010 17:58:31

Сообщение Wereww »

Ребята подскажите, паяю USBasp - а для резонатора нужны кондёры по 18 пик, но в магазин так влом идти только из-за них, вобщем осталась гора совковых (если помните такие - в 90х еще их ото всюду выдирали и несли сдавать) - так вот на одном маркировка непонятная - N24p - подойдёт ли он - и как читать подобное ? :)
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб

Сообщение AI_Disable »

Да пофиг на эти кондёры. Главное не забудьте включить фьюз SCOPT. Ну и на всякий, заземлите корпус кварца :)
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 129
Зарегистрирован: Пн окт 04, 2010 17:58:31

Сообщение Wereww »

AI_Disable писал(а):Да пофиг на эти кондёры. Главное не забудьте включить фьюз SCOPT. Ну и на всякий, заземлите корпус кварца :)
Это не есть суть проблемы, туда я собрался залить прошивку от AVRDopper'a :)) Вот с кондёрами только непонятки, да и для чего они везде стоят в таком включении ? :)
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб

Сообщение AI_Disable »

Дак я об этом и говорю. Фьюз SCOPT как рас существует для того, чтобы "повесить" эти кондёры, но "изнутри" контроллера, а не снаружи.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 458
Зарегистрирован: Пн дек 13, 2010 13:01:59
Откуда: Украина

Сообщение DJ_Kiridza »

Посоветуйте парочку аналогов ATmega16 по функционалу?
Проектирую свой девайс, что мне подходит в атмеге: раздельно можно назначать пины входов/выходов (мне нужно 13 выходов и 10 входов), парочка АЦП, юарт на борту, работа от внешнего кварца, подтягивающие резисторы на борту, работа на частотах до 16Мгц (не для всех атмег), программирование не выпаивая из платы... В принципе по объему бортовых мозгов требований пока не знаю, потому и атмега16 (с запасом), и я так понял в атмеге можн овключить бортовые кондёры для внешнего кварца?

Вобщим какие еще контроллеры обладают заданым функционалом?
(это чтобы свести к миннимуму кол-во деталей на плате - фактически 1 контроллер + кварц, бп у меня отдельно)...

Я просто в контроллерах начинающий, неплохо бы сравнить функционал других вариантов AVR или PIC-ов подходящий под условия выше, JTAG-ом можно пожертвовать.
Пасиб.
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

ATmega48/88/168/328/
Ответить

Вернуться в «Разные вопросы по МК»