Мелкие вопросы по МК и ПЛИС.
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Покупной. Я предпочитаю такие вещи брать готоые. Хватило эпопеи с самодельными программаторами.
Проект "своими лапами" видел здесь
Проект "своими лапами" видел здесь
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: Мелкие вопросы по МК и ПЛИС.
ploop писал(а):вообще, время дребезга ориентировочно какое? микросекунды, милли? можно ли на аналоговом осцилле оценить его длительность для конкретной схемы, например?
Зависит от качества кнопки. Можете для эксперимента подпаять параллельно ей кондёр 0,1 - 1 мкФ
сделал все-таки как в обучалке - через цикл задержки. все равно срабатывает не всегда. попробую, наверное, кнопку поменять.
вообще, если на входе с кнопкой сидит единица, то как лучше распознавать нажатие - по фронту/смене уровня или как? я использовал срабатывание прерывания по заднему фронту, но вдруг обычно делают по-другому. подскажите, опытные коты!
Re: Мелкие вопросы по МК и ПЛИС.
я использовал срабатывание прерывания по заднему фронту
Использовать прерывания для кнопок нецелесообразно. Лучше их опрашивать тогда, когда необходимо. Делается это просто - читаете содержимое порта и накладываете маску:
Код: Выделить всё
in R16, PINB ; читаем содержимое порта
andi R16, 0b00010000 ; отсекаем всё, кроме четвёртого бита
; Далее условия - BRNE, BREQ ...
Вариант второй - SBRC, SBRS, SBIS, SBIC
Re: Мелкие вопросы по МК и ПЛИС.
В принципе - без разницы, с точки зрения дребезга, т. к. разное время этого процесса, зависит от конструкции кнопки. Если вы наблюдаете срабатывание "через раз", то это может быть: слишком большая задержка или неисправная кнопка.Necroteeth писал(а):как лучше распознавать нажатие - по фронту/смене уровня или как?
Второй момент: Если обнаружив замыкание кнопки, после задержки не проверить это еще раз, то при отпускании кнопки в результате возможного дребезга, может последовать ложное действие (незапланированное переключение светодиода в данном случае).
Последний раз редактировалось ValBag Пн янв 24, 2011 14:14:28, всего редактировалось 2 раза.
Re: Мелкие вопросы по МК и ПЛИС.
Чтоб просто задействовать кнопки для отладки, я делаю так: во время нажатия загоняю программу в бесконечный цикл, пока не отпустишь.
Код: Выделить всё
--- основной цикл
in tr,PIND
sbrs tr,6
rcall decCorrection
--- подпрограмма
decCorrection: ; декремент коррекции
dec Correction
ddl4:
in tr,PIND
sbrs tr,6
rjmp ddl4
ret- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: Мелкие вопросы по МК и ПЛИС.
ploop писал(а):Чтоб просто задействовать кнопки для отладки, я делаю так: во время нажатия загоняю программу в бесконечный цикл, пока не отпустишь.Код: Выделить всё
--- основной цикл
in tr,PIND
sbrs tr,6
rcall decCorrection
--- подпрограмма
decCorrection: ; декремент коррекции
dec Correction
ddl4:
in tr,PIND
sbrs tr,6
rjmp ddl4
ret
если честно, я не очень понял смысл этого действа.
у меня же кнопочка без фиксации - щелкнул и все. несмотря на небольшую программную задержку, все равно светодиоды временами переключаются сразу по нескольку штук. в профессиональных устройствах как с этим борются?
Re: Мелкие вопросы по МК и ПЛИС.
Если честно, как в профессиональных с этим дело обстоит - не знаю. Но когда понадобится могу сочинить/нагуглить.
Объясняю.
В основном цикле программы идёт проверка нажатия. tr - обычный регистр.
in tr,PIND - берём в регистр значение из порта D
sbrs tr,6 - проверяем состояние шестого бита (там кнопка)
Если этот бит в единице, пропускаем следующую команду
rcall decCorrection - переход на подпрограмму
дальше зацикливание
Если кнопка не нажата, rcall decCorrection не вызывается. Если нажать - sbrs не сработает и не перепрыгнет следующую строку, соответственно сработает rcall
В подпрограмме то же самое. Пока кнопка нажата, крутимся в цикле по метке ddl4
Смысл такой: на одну кнопку жмём - значение в регистре Correction увеличивается, на другую уменьшается (тут только одна показана)
Если этого не сделать, то в каждой итерации будет уменьшаться значение в регистре Correction, пока держим кнопку. А на 8МГц частоте он много тысяч раз успеет регистр переполнить, пока палец кнопку отпустит.
если честно, я не очень понял смысл этого действа.
Объясняю.
В основном цикле программы идёт проверка нажатия. tr - обычный регистр.
in tr,PIND - берём в регистр значение из порта D
sbrs tr,6 - проверяем состояние шестого бита (там кнопка)
Если этот бит в единице, пропускаем следующую команду
rcall decCorrection - переход на подпрограмму
дальше зацикливание
Если кнопка не нажата, rcall decCorrection не вызывается. Если нажать - sbrs не сработает и не перепрыгнет следующую строку, соответственно сработает rcall
В подпрограмме то же самое. Пока кнопка нажата, крутимся в цикле по метке ddl4
Смысл такой: на одну кнопку жмём - значение в регистре Correction увеличивается, на другую уменьшается (тут только одна показана)
Если этого не сделать, то в каждой итерации будет уменьшаться значение в регистре Correction, пока держим кнопку. А на 8МГц частоте он много тысяч раз успеет регистр переполнить, пока палец кнопку отпустит.
Re: Мелкие вопросы по МК и ПЛИС.
не знаю туда попал или нет, пред история: на новогодних праздниках заинтересовался МК ATMega (...duino),
все что надо спаял, что надо зашил, сейчас сижу, изучаю,
назрел такой вопрос, на который пока не нашел ответа
запуск внутренней программы идет примерно через 10 секунд после включения питания (или после RESET)
{пока все опыты на ATMEGA 8 - 16PU}
это очень долго, если я хочу собрать некий брелок на ATMege или еще какую автономную систему на батарейках (на аккумуляторе), то каждый раз при включении я должен ждать не менее 10 сек, а все время держать ее включенной или спящей не хочется, надо как то красиво продлить срок жизни батарейки, лучше полным выключением устройства
Пробовал баловаться фьюзами, большого результата нет, +/-3 сек от тех же 10 секунд.
Пробовал запускать с внутреннего генератора, то же большой разницы не заметил.
Может это изза того что прога заливалась из под "arduino-0022" и там всякого лишнего на старте делается.
Как здесь быть, какие есть решения ? или тут уже не чего не поделать, придется мирится, придется всегда ждать несколько секунд на включении.
все что надо спаял, что надо зашил, сейчас сижу, изучаю,
назрел такой вопрос, на который пока не нашел ответа
запуск внутренней программы идет примерно через 10 секунд после включения питания (или после RESET)
{пока все опыты на ATMEGA 8 - 16PU}
это очень долго, если я хочу собрать некий брелок на ATMege или еще какую автономную систему на батарейках (на аккумуляторе), то каждый раз при включении я должен ждать не менее 10 сек, а все время держать ее включенной или спящей не хочется, надо как то красиво продлить срок жизни батарейки, лучше полным выключением устройства
Пробовал баловаться фьюзами, большого результата нет, +/-3 сек от тех же 10 секунд.
Пробовал запускать с внутреннего генератора, то же большой разницы не заметил.
Может это изза того что прога заливалась из под "arduino-0022" и там всякого лишнего на старте делается.
Как здесь быть, какие есть решения ? или тут уже не чего не поделать, придется мирится, придется всегда ждать несколько секунд на включении.
Re: Мелкие вопросы по МК и ПЛИС.
запуск внутренней программы идет примерно через 10 секунд после включения питания (или после RESET)
Значит это программно сделана такая задержка. А сама программа в МК стартует после запуска тактового генератора + несколько его тактов (чтоб он вошел в рабочий режим) Время исчисляется милли- или даже микро-секундами, так что человек это никак не заметит.
Re: Мелкие вопросы по МК и ПЛИС.
если так, получается что "arduino" что то туда заливает, чем то там на старте занимается, возможно инициализацией каких то массивов, синхронизации каких нибудь констант, переменных.....
что бы проверить сей домысл, мне значит надо залить туда прогу из другой оболочки, AVR Studio подойдет для этого ?
или что другое порекомендуете и где взять пример простого "Blink" (моргание светодиодом) для теста, на AVR Studio не нашел не каких примеров,
а может не там искал.
сама оболочка "arduino" мне понравилась, легко программировать, множество уже готовых библиотек, разжёванные примеры, не хотелось бы с ней расставаться
или может подкинете готовый HEX файл Blink-а, так как заливаю через PonyProg через AVR Studio пока не могу, программатор еще не сделал
что бы проверить сей домысл, мне значит надо залить туда прогу из другой оболочки, AVR Studio подойдет для этого ?
или что другое порекомендуете и где взять пример простого "Blink" (моргание светодиодом) для теста, на AVR Studio не нашел не каких примеров,
а может не там искал.
сама оболочка "arduino" мне понравилась, легко программировать, множество уже готовых библиотек, разжёванные примеры, не хотелось бы с ней расставаться
или может подкинете готовый HEX файл Blink-а, так как заливаю через PonyProg через AVR Studio пока не могу, программатор еще не сделал
Re: Мелкие вопросы по МК и ПЛИС.
а есть такое предположение может в "arduino" срабатывает автозагрузчик на RESET-e который ждет обмена по посл.порту, тогда вопрос, а как его можно отключить, может фьюзами можно сделать так чтобы запускалась сразу программа, а не автозагрузчик, почему думаю на автозагручик, потому что видно активность сразу на запуске по RXD, TXD, а после уже стартует основная программа
Re: Мелкие вопросы по МК и ПЛИС.
да! это BootLoader, как теперь его научится отключать и включать по необходимости
Re: Мелкие вопросы по МК и ПЛИС.
Ребята подскажите, паяю USBasp - а для резонатора нужны кондёры по 18 пик, но в магазин так влом идти только из-за них, вобщем осталась гора совковых (если помните такие - в 90х еще их ото всюду выдирали и несли сдавать) - так вот на одном маркировка непонятная - N24p - подойдёт ли он - и как читать подобное ? 
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Да пофиг на эти кондёры. Главное не забудьте включить фьюз SCOPT. Ну и на всякий, заземлите корпус кварца 
Re: Мелкие вопросы по МК и ПЛИС.
AI_Disable писал(а):Да пофиг на эти кондёры. Главное не забудьте включить фьюз SCOPT. Ну и на всякий, заземлите корпус кварца
Это не есть суть проблемы, туда я собрался залить прошивку от AVRDopper'a
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Дак я об этом и говорю. Фьюз SCOPT как рас существует для того, чтобы "повесить" эти кондёры, но "изнутри" контроллера, а не снаружи.
- DJ_Kiridza
- Мучитель микросхем
- Сообщения: 458
- Зарегистрирован: Пн дек 13, 2010 13:01:59
- Откуда: Украина
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Посоветуйте парочку аналогов ATmega16 по функционалу?
Проектирую свой девайс, что мне подходит в атмеге: раздельно можно назначать пины входов/выходов (мне нужно 13 выходов и 10 входов), парочка АЦП, юарт на борту, работа от внешнего кварца, подтягивающие резисторы на борту, работа на частотах до 16Мгц (не для всех атмег), программирование не выпаивая из платы... В принципе по объему бортовых мозгов требований пока не знаю, потому и атмега16 (с запасом), и я так понял в атмеге можн овключить бортовые кондёры для внешнего кварца?
Вобщим какие еще контроллеры обладают заданым функционалом?
(это чтобы свести к миннимуму кол-во деталей на плате - фактически 1 контроллер + кварц, бп у меня отдельно)...
Я просто в контроллерах начинающий, неплохо бы сравнить функционал других вариантов AVR или PIC-ов подходящий под условия выше, JTAG-ом можно пожертвовать.
Пасиб.
Проектирую свой девайс, что мне подходит в атмеге: раздельно можно назначать пины входов/выходов (мне нужно 13 выходов и 10 входов), парочка АЦП, юарт на борту, работа от внешнего кварца, подтягивающие резисторы на борту, работа на частотах до 16Мгц (не для всех атмег), программирование не выпаивая из платы... В принципе по объему бортовых мозгов требований пока не знаю, потому и атмега16 (с запасом), и я так понял в атмеге можн овключить бортовые кондёры для внешнего кварца?
Вобщим какие еще контроллеры обладают заданым функционалом?
(это чтобы свести к миннимуму кол-во деталей на плате - фактически 1 контроллер + кварц, бп у меня отдельно)...
Я просто в контроллерах начинающий, неплохо бы сравнить функционал других вариантов AVR или PIC-ов подходящий под условия выше, JTAG-ом можно пожертвовать.
Пасиб.
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Re: Мелкие вопросы по МК и ПЛИС.
ATmega48/88/168/328/