Описание: При включении МК загораются светодиоды (т.е. в порту возникают 1цы), хотя не должны |
Поиск в теме | Версия для печати |
kultevator |
Отправлено: 09 Декабря, 2012 - 01:25:16
|

Лейтенант

Сообщений всего: 26
Дата рег-ции: Апр. 2010
|
Проблема такая:
Светодиоды на выводах порта С (естественно, определенных как выходы) должны, согласно программе, загораться при определенных конфигурациях сигналов на "входящих" выводах порта D (при помощи кнопок).
Прошиваю МК, все работает, как надо. НО!
НО если выключить и снова включить питание, светодиоды загораются СРАЗУ, и чтобы все заработало как надо, приходится сначала подавать сигнал на вывод "RESET".
Может, кто-то сталкивался с такой проблемой? Прошу помощи!
Добалю, что не помогает даже принудительная усановка "нулей" на выводах порта перед началом основной программы.
И еще, в симуляторе AVR Studio программа нормально работает! При том, у другой программы с конпками проблем не было, загорались светодиоды строго в соответствие сигналам.(Отредактировано автором: 09 Декабря, 2012 - 01:45:41) |
|
|
kultevator |
Отправлено: 09 Декабря, 2012 - 23:44:38
|

Лейтенант

Сообщений всего: 26
Дата рег-ции: Апр. 2010
|
Изначально хотел написать программу для энкодера - чтобы горел левый/правый светодиод, в зависимости от направления вращения. Код пока не стану выкладывать, ибо не разобрался еще, почему в симуляторе во "входном" порту изначально находятся нули, а на самом деле они подаются в качестве управляющего сигнала. В общем, я запутался, что с чем сравнивать командой CPSE (хотя и был вариант, стабильно работающий в симуляторе).
Но проблему с "самовключением" я пытался решить, используя совсем простые программы.
Цитата:это програмная ошибка
Это вряд ли програмная ошибка, увы, светодиод(ы) загораются при включении, отключаются при сбрасыании (и тогда программа работает нормально), но через какое-то неопределенное время загораются снова (могут почти сразу, а могут и подождать несколько секунд).
Вот последняя схема, по которой я все соединил, и к которой относится все, описанное в этом сообщении. Конденсаторов подходящих пока нет, на неделе забегу в радиодетали.
Коды программ тоже выложу
Может, дело в наводках на выводах порта D?,
Только с резисторами 10 кОм на светодиодах я наврал, там 220 Ом )) Прикреплено изображение
(Отредактировано автором: 10 Декабря, 2012 - 00:15:45) |
|
|
kultevator |
Отправлено: 10 Декабря, 2012 - 00:39:50
|

Лейтенант

Сообщений всего: 26
Дата рег-ции: Апр. 2010
|
вот два кода.
Одна кнопка включает, а другая выключает светодиод (программа работает, светодиоды не "шалят" :
CODE:.device ATmega8
.include "m8def.inc"
sbi DDRC,5
sbi PORTD,0
sbi PORTD,1
waitset1:
sbic PIND,1
rjmp waitset1
sbi PORTC,5
waitset2:
sbic PIND,0
rjmp waitset2
cbi PORTC,5
rjmp waitset1
Согласно следующей программе, светодиоды загораются, если меняется состояние одной из кнопок. Программа работает, НО только если успеть нажать (или отжать) кнопку до того, как светодиоды загорятся "по собственному желанию"! ПОЧЕМУ они сами загораются именно в этой программе?
CODE:.device ATmega8
.include "m8def.inc"
ldi r18,0b00000011
out PORTD,r18
ldi r18,0b00110000
out DDRC,r18
in r16,PIND
Checking_eq:
in r17,PIND
cpse r16,r17
rjmp Not_eq
rjmp Checking_eq
Not_eq:
ldi r18,0b00110000
out PORTC,r18 (Отредактировано автором: 10 Декабря, 2012 - 00:45:16) |
|
|
|
Поиск в теме | Версия для печати |
Страниц (2): [1] 2 » |
« С чего начать? » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
  |
|
|
|