Форум myROBOT.ru » Шаг за шагом » С чего начать? » Помогите, может сталкивались с такой проблемой..

Страниц (2): [1] 2 »
 

1. kultevator - 09 Декабря, 2012 - 01:25:16 - перейти к сообщению
Проблема такая:

Светодиоды на выводах порта С (естественно, определенных как выходы) должны, согласно программе, загораться при определенных конфигурациях сигналов на "входящих" выводах порта D (при помощи кнопок).

Прошиваю МК, все работает, как надо. НО!

НО если выключить и снова включить питание, светодиоды загораются СРАЗУ, и чтобы все заработало как надо, приходится сначала подавать сигнал на вывод "RESET".

Может, кто-то сталкивался с такой проблемой? Прошу помощи!

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

И еще, в симуляторе AVR Studio программа нормально работает! При том, у другой программы с конпками проблем не было, загорались светодиоды строго в соответствие сигналам.
2. Роботов - 09 Декабря, 2012 - 09:33:19 - перейти к сообщению
При подаче питания, держать "reset" емкостью 10-20 мкф. Должно помочь.
3. Artem - 09 Декабря, 2012 - 10:35:49 - перейти к сообщению
Наверно нужно подтянуть ресет к плюсу через резистор 10 кОм
4. nestandart - 09 Декабря, 2012 - 10:40:54 - перейти к сообщению
Цитата:
Наверно нужно подтянуть ресет к плюсу через резистор 10 кОм


++1

Хоть датишит атмела и утверждает что это не обязательно, практика показывает что многие МК без этого не могут нормально запуститься.
5. kultevator - 09 Декабря, 2012 - 10:50:44 - перейти к сообщению
попробую что-нибудь из этого, спасибо.
Заметил, кстати, что эта ерунда начинается, когда в программе используется команда "CPSE" - сравнить регистры, и пропустить, если равны.
6. nestandart - 09 Декабря, 2012 - 11:21:51 - перейти к сообщению
Еще можно подтянуть резистор к земле двумя кондерами 0.1мкф.
7. kultevator - 09 Декабря, 2012 - 12:55:52 - перейти к сообщению
Цитата:
Хоть датишит атмела и утверждает что это не обязательно

...как цитату вставить?

nestandart, не могли бы Вы точно указать, в каком даташите, т. е. на какой конкретный девайс, и на какой странице это указано? Ну, или может ссылочку..

Если подтянуть "ресет" к плюсу, перестает работать сброс при подаче на него "нуля", а при запуске та же проблема остается.
8. killgur - 09 Декабря, 2012 - 17:24:31 - перейти к сообщению
вот так
9. cjA - 09 Декабря, 2012 - 20:54:31 - перейти к сообщению
пачитал...
kultevator пишет:
эта ерунда начинается, когда в программе используется команда "CPSE

это програмная ошибка
Кинти, если не в ФСБ работаеье схему и код. (ну или кинте что сами решили уже все)
10. Predator - 09 Декабря, 2012 - 22:41:56 - перейти к сообщению
killgur +1
11. cjA - 09 Декабря, 2012 - 23:26:21 - перейти к сообщению
Predator, может, но я хотел бы у увидеть весь код, может у чела портв с портD спутан, а глаза у же зашорены (как у мня) и вот результат!
12. kultevator - 09 Декабря, 2012 - 23:44:38 - перейти к сообщению
Изначально хотел написать программу для энкодера - чтобы горел левый/правый светодиод, в зависимости от направления вращения. Код пока не стану выкладывать, ибо не разобрался еще, почему в симуляторе во "входном" порту изначально находятся нули, а на самом деле они подаются в качестве управляющего сигнала. В общем, я запутался, что с чем сравнивать командой CPSE (хотя и был вариант, стабильно работающий в симуляторе).

Но проблему с "самовключением" я пытался решить, используя совсем простые программы.

Цитата:
это програмная ошибка


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

Вот последняя схема, по которой я все соединил, и к которой относится все, описанное в этом сообщении. Конденсаторов подходящих пока нет, на неделе забегу в радиодетали.

Коды программ тоже выложу

Может, дело в наводках на выводах порта D?,

Только с резисторами 10 кОм на светодиодах я наврал, там 220 Ом ))
13. Predator - 09 Декабря, 2012 - 23:51:30 - перейти к сообщению
cjA да я не против, и возможно в коде ошибки есть, но искать их в АВРах не возьмусь, просто одобряю затею killgur и такой сброс (через некоторое время после включения питания) крайне полезен для любой цифровой схемы.
14. cjA - 10 Декабря, 2012 - 00:18:49 - перейти к сообщению
http://myrobot.ru/forum/topic.ph...11&topic=426
ты мне помог avrasp обызглючить. Поставил usb-B(правильно? квадратный такой?) и шнур купил нормальный, там даже просвечивает фольгировка) Глюков больше не было.
(Добавление)
можно и 220 и 36 как у меня
Вопрос То какой? СЖЕГ ЛИ ТЫ RESET, PD0 И PD1- ПРЯМИКОМ НА ЗЕМЛЮ- Я ДУМАЮ ВРЯДЛИ, НО БОЛЬШЕ ТАК НЕ ДЕЛАЙ.
15. kultevator - 10 Декабря, 2012 - 00:39:50 - перейти к сообщению
вот два кода.
Одна кнопка включает, а другая выключает светодиод (программа работает, светодиоды не "шалят"Подмигивающий:

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