роботы робототехника микроконтроллеры


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

> Описание: При включении МК загораются светодиоды (т.е. в порту возникают 1цы), хотя не должны
kultevator Post Id



Лейтенант


Сообщений всего: 26
Дата рег-ции: Апр. 2010  



Проблема такая:

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

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

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

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

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

И еще, в симуляторе AVR Studio программа нормально работает! При том, у другой программы с конпками проблем не было, загорались светодиоды строго в соответствие сигналам.

(Отредактировано автором: 09 Декабря, 2012 - 01:45:41)

 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



При подаче питания, держать "reset" емкостью 10-20 мкф. Должно помочь.
 
 Top
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



Наверно нужно подтянуть ресет к плюсу через резистор 10 кОм
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


Сообщений всего: 1490
Дата рег-ции: Сент. 2010  



Цитата:
Наверно нужно подтянуть ресет к плюсу через резистор 10 кОм


++1

Хоть датишит атмела и утверждает что это не обязательно, практика показывает что многие МК без этого не могут нормально запуститься.
 
 Top
kultevator Post Id



Лейтенант


Сообщений всего: 26
Дата рег-ции: Апр. 2010  



попробую что-нибудь из этого, спасибо.
Заметил, кстати, что эта ерунда начинается, когда в программе используется команда "CPSE" - сравнить регистры, и пропустить, если равны.
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


Сообщений всего: 1490
Дата рег-ции: Сент. 2010  



Еще можно подтянуть резистор к земле двумя кондерами 0.1мкф.
 
 Top
kultevator Post Id



Лейтенант


Сообщений всего: 26
Дата рег-ции: Апр. 2010  



Цитата:
Хоть датишит атмела и утверждает что это не обязательно

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

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

Если подтянуть "ресет" к плюсу, перестает работать сброс при подаче на него "нуля", а при запуске та же проблема остается.

(Отредактировано автором: 09 Декабря, 2012 - 13:28:05)

 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



вот так
Прикреплено изображение
123.png

 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



пачитал...
kultevator пишет:
эта ерунда начинается, когда в программе используется команда "CPSE

это програмная ошибка
Кинти, если не в ФСБ работаеье схему и код. (ну или кинте что сами решили уже все)
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



killgur +1
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



Predator, может, но я хотел бы у увидеть весь код, может у чела портв с портD спутан, а глаза у же зашорены (как у мня) и вот результат!
 
 Top
kultevator Post Id



Лейтенант


Сообщений всего: 26
Дата рег-ции: Апр. 2010  



Изначально хотел написать программу для энкодера - чтобы горел левый/правый светодиод, в зависимости от направления вращения. Код пока не стану выкладывать, ибо не разобрался еще, почему в симуляторе во "входном" порту изначально находятся нули, а на самом деле они подаются в качестве управляющего сигнала. В общем, я запутался, что с чем сравнивать командой CPSE (хотя и был вариант, стабильно работающий в симуляторе).

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

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


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

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

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

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

Только с резисторами 10 кОм на светодиодах я наврал, там 220 Ом ))
Прикреплено изображение
кнопки.jpg

(Отредактировано автором: 10 Декабря, 2012 - 00:15:45)

 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



cjA да я не против, и возможно в коде ошибки есть, но искать их в АВРах не возьмусь, просто одобряю затею killgur и такой сброс (через некоторое время после включения питания) крайне полезен для любой цифровой схемы.
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



http://myrobot.ru/forum/topic.ph...11&topic=426
ты мне помог avrasp обызглючить. Поставил usb-B(правильно? квадратный такой?) и шнур купил нормальный, там даже просвечивает фольгировка) Глюков больше не было.
(Добавление)
можно и 220 и 36 как у меня
Вопрос То какой? СЖЕГ ЛИ ТЫ RESET, PD0 И PD1- ПРЯМИКОМ НА ЗЕМЛЮ- Я ДУМАЮ ВРЯДЛИ, НО БОЛЬШЕ ТАК НЕ ДЕЛАЙ.
 
 Top
kultevator Post Id



Лейтенант


Сообщений всего: 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)

 
 Top
Страниц (2): [1] 2 »
« С чего начать? »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru