Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
14.06.2007, 19:05
|
|
Прохожий
Регистрация: 05.06.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 1 сообщении
|
Помогите найти, где ошибка!!!
Здраствуйте!!!
Вот решил занятся AVR-ми. Выполняю упражнения, для отработки базовых элементов. Одно из упражнений сделать счетчик, для подсчета количество нажатий на кнопку. Программку написал - здесь трудностей не было. В Proteus все работало и не, что непредвещало трудностей. Но когда собрал на макетке, это все работало раз от раза. То правельно отображаются цифры, потом выкл/вкл питание совершенно другие сегменты загараются, но при этом они повторяются после 10 нажатий на кнопку. Что не делал я только: вкл. внутринию RC цепочку, подбирал интегрирующию цепочку по сбросу. Подскажите ,кто знает в чем дело?
Зарание Блогадарин!!!
-- Прилагается рисунок: --
|
|
|
|
14.06.2007, 19:07
|
|
Прохожий
Регистрация: 05.06.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 1 сообщении
|
А вот это злополучная макетная плата!!!
-- Прилагается рисунок: --
|
|
|
|
14.06.2007, 20:23
|
|
Вид на жительство
Регистрация: 12.04.2007
Сообщений: 348
Сказал спасибо: 2
Сказали Спасибо 36 раз(а) в 32 сообщении(ях)
|
То что ты взялся за изучение AVR и выполняешь упражнения это конечно похвально, но зачем же так загружать форум и народ кодами и картинками, в следующие разы прикрепляй файл архива, в котором исходный текст программы, фото чего угодно (если нужно) и проект в Proteus (если нужно).
Самое главное - текст программы должен быть с комментариями!!! Чтобы другим было проще понять что ты делаешь в программе, да и тебе потом легче будет понять что делал
Сейчас сложно разобраться в твоей программе [/b]
|
|
|
|
14.06.2007, 21:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Ошибки бывают не только программные, но и аппаратные!
Судя по фото макетки, такие у Вас запросто могут иметь место.
Удачи!
|
|
|
|
14.06.2007, 22:12
|
|
Частый гость
Регистрация: 04.12.2004
Сообщений: 18
Сказал спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Как пелась песня?
ПРОЕКТ В СТУДИЮ!
__________________
И опыт, сын ошибок, трудный...
|
|
|
|
15.06.2007, 09:29
|
|
Частый гость
Регистрация: 30.09.2004
Сообщений: 39
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
|
Init: ser Temp
out DDRD,Temp
ldi Temp,0b01111111 ;RB7-вход, а RB6..RB0-выходы!
out DDRB,Temp ;Почему RB0 выход !? Должен быть ВХОД! Судя по схеме должно быть:
ldi Temp,0b11111110
out DDRB,Temp
Кроме того, в программе не увидел нигде как ты "борешся" с дребезгом контакта! После первого срабатывания кнопки необходимо или несколько раз опросить вход на повторение состояния (в данном случае это "0")раз 10-1000 - подбирай экмпериментально.
ldi R20,0b00111111
out PortD,R20
ldi Temp,0b00000001
out PortB,Temp
ldi R21,0b00000110
ldi R22,0b01011011
ldi R23,0b01001111
ldi R24,0b01100110
ldi R25,0b01101101
ldi R26,0b01111101
ldi R27,0b00000111
ldi R28,0b01111111
ldi R29,0b01101111
clr Counter
ldi Temp,LOW(RAMEND)
out SPL,Temp
ldi Temp,HIGH(RAMEND)
out SPH,Temp
; =================
Start:
sbic PinB,0
rjmp start
inc Counter
cpi Counter,10
brne PC+2
clr Counter
ldi ZL,20
add ZL,Counter
Ld Temp,z
out PortD,Temp
rcall Debounce
Releasewait:
sbis PinB,0
rjmp Releasewait
rcall Debounce
rjmp start
Debounce:
ldi Temp,$80
ldi Temp2,$38
ldi Temp3,$01
Loop:
subi Temp,1
sbci Temp2,0
sbci Temp3,0
brcc Loop
ret
|
|
|
|
15.06.2007, 09:33
|
|
Прописка
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
|
Здравствуйте Всем.
sanitar249, чо загружать человека пустышками, лучше указать на -! Макетка конечно не супер, НО. Кварц распологать как можно ближее к МК и ее обвеску соответственно. Кондеры по питанию на МК лучше к его ногам. МК может ловить просто помеху (наводку). А вот коментарии к тексту проги - это как "правило хорошего тона".
С уважением Геннадий.
|
|
|
|
15.06.2007, 16:30
|
|
Прохожий
Регистрация: 05.06.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 1 сообщении
|
Сообщение от kmw
|
Кроме того, в программе не увидел нигде как ты "борешся" с дребезгом контакта!
|
Дребезг контактов устраняю вводом задержки 0,1с между моментом отпускание кнопки и повторном ее проверки
Сообщение от GeorgeScar
|
ПРОЕКТ В СТУДИЮ!
|
Действительно было глупо выложить код программы без коментариев! Исправляюсь вот здесь ВСЕ:
http://ifolder.ru/2361912
|
|
|
|
16.06.2007, 05:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
У меня вопрос: А надо ли опрашивать снова кнопку после задержки 0.1 сек? ведь и так понятно что она сработала,убираем дребезг и поехали дальше.
|
|
|
|
16.06.2007, 07:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Сообщение от CERGEI1982
|
У меня вопрос: А надо ли опрашивать снова кнопку после задержки 0.1 сек? ведь и так понятно что она сработала,убираем дребезг и поехали дальше.
|
Приведу ,"проверенный в боях", алгоритм опоса "клавы"(кнопки). Каждая кнопка(сенсор) опрашивается 3(5,7...зависит от необх.надежности)раз с интерв. 0,01-0,1 с по данным(каждая выборка) опроса мажоритарным "голосованием" принимается решение, нажималась ли кнопка.После принятия решения,что кнопка нажата, выдается биппер 0,5с и пауза 0,5с, далее опрос продолжается(если не нужно отслеживать повторное нажатие,опрос кнопки прекращаем до отпускания). Опрос клавы лучше делать по прерыванию от первого нажатия,т.к. человеко-машинный интерфейс ооочень медленный(с точки зрения машины ) . Временные интервалы выбираются из соображений удобоприменимости данного интерфейса.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:48.
|
|