Помогите с программированием PICа

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

Помогите начинающему разобраться с программированием пика.
написал прогу , при вкл. питания светодиод моргает с частотой около 0,5 с. при нажатии кнопы он должен начать моргать с частотой примерно 1 сек(почему примерно я циклы не подгонял точно), так вот вроде работает , нажимаю кнопу светодиод моргает медленнее , но один цикл , а потом начинает моргать с частотой 0,5 сек. И не могу найти где баг.
Самое интересное что в мп лабе все работает нормально.в
Вложения
ASM_SXEMA.rar
(12.85 КБ) 233 скачивания
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7362
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Программу стереть и написать заново. Или по крайней мере строчки

Код: Выделить всё

                BTFSS           PORTB,0         ;проверка замыкания кнопы
                GOTO            PP1             ;если замкнуто то переход в подпрограмму
вытащить из внутреннего цикла за пределы внешнего - это раз.
Второе, PP1 - это у тебя не подпрограмма. Или сделай подпрограмму, или
посмотри куда в конце ее ведет переход. Пока что получается, что этот кусок у тебя ничего не делает, поскольку после перехода на START твои значения снова затираются начальными значениями.
Это то что бросилось в глаза сразу. Внимательнее проводи отладку и со временем такие глупости делать не будешь.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 328
Зарегистрирован: Вт ноя 20, 2007 17:30:36
Откуда: Раша

Сообщение dalay-lama »

Как-то странно... Исходя из схемы кнопка к программе не имеет ни какого отношения. TRISA сброшен, т.е. все порты RA работают на выход. На кой тогда нужна кнопка на RA0? Зачем RB0 настроен на вход? Зачем Вы перечисляете регистры STATUS, TRIS, PORT, F... и т.д? Достаточно подключить в проект стандартный Header Files. Сделал набросок программки. При включении свд мигает каждые 0,5 сек. При нажатии и удержании кнопки свд мигает каждые 1 сек. При отпускании снова 0,5 сек. На Вашей схеме свд мигать не будет. Подключен неправильно. Остальное пробуйте сами.
Вложения
Led.asm
(2.83 КБ) 232 скачивания
Важнейшая задача цивилизации - научить человека мыслить. /Т. Эдисон/
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

В схеме опечатка, там опрос кнопки происходит по RB0,
Почему указаны не используемые регистры ? потому что этот кусок я писал для другой проги.
И в тз я написал что смена частоты моргания должна сменяться при нажатии и отпускании кнопки.А не держать ее постоянно.
За первый пост спс, сейчас перепрошью и проверю.
Вложения
ASM_SXEMA.rar
(12.75 КБ) 202 скачивания
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 328
Зарегистрирован: Вт ноя 20, 2007 17:30:36
Откуда: Раша

Сообщение dalay-lama »

OOzzzz писал(а):В схеме опечатка, там опрос кнопки происходит по RB0.
В таком случае нет необходимости в установке доп. резистора 10 ком с RB0 на +Uпит. В программе подключите подтягивающие резисторы!
OOzzzz писал(а):Почему указаны не используемые регистры ? потому что этот кусок я писал для другой проги.
А причём здесь другая прога? Я написал о том, что дополнительное описание регистров м/к таких как STATUS, TRISх, PORTх, F... и т.д мартышкин труд. Все они есть в файле xxxxxx.inc. Достаточно его подключить в проект.
OOzzzz писал(а):в тз я написал что смена частоты моргания должна сменяться при нажатии и отпускании кнопки.А не держать ее постоянно.
Я не слепой. Видел. Поработайте немного своими мозгами. Если уж будет совсем непонятно, тогда все вопросы сюда...
Ещё раз: светодиод на схеме нарисован неверно.
Важнейшая задача цивилизации - научить человека мыслить. /Т. Эдисон/
Реклама
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

Вот исправил ошибки и опечатки в схеме, перепрошил и результат тот же.
При нажатии проходит один цикл и опять моргает с частотой 0,5 сек.
А в мп лабе нормально :(
Вложения
asm.rar
(12.76 КБ) 212 скачиваний
Контактная информация:
Реклама
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

Согласен со светодиодом. но это не правильно нарисовал, а так он работает. Изменил схему.
Вложения
asm1.rar
(12.9 КБ) 209 скачиваний
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7362
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

OOzzzz писал(а):Согласен со светодиодом. но это не правильно нарисовал, а так он работает. Изменил схему.
Гораздо логичнее теперь программа выглядит.
По поводу ТЗ: а так и задумано, чтобы кнопка опрашивалась ТОЛЬКО во время светящегося светодиода?
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

да какое там, прости господи, техзадание.. лабораторная работа, наверное. Обработки кнопок так таковой нет, ну, мигать что-то будет..
преподу хватит.
Чуть поправил, а то прямо код глаза режет
Вложения
morg1.zip
(1.34 КБ) 210 скачиваний
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7362
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

urry писал(а):Чуть поправил, а то прямо код глаза режет
Не совсем. Человек старательно опрос кнопки сует внутрь циклов паузы. Наверное, есть желание фиксировать факт срабатывания кнопки максимально оперативно. Хотя тогда не понятно, почему опрос размещен не внутри первого цикла, а во втором?
Если бы мне нужно было бы сделать такую хохму, я бы сделал исключительно на прерываниях. Мне лениво считать такты в циклах, а так сделал прерывание раз в 250мкс и наступит счастье. Если не нужно строго пол-секунды можно и с ватчдогом извратиться ;-)
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

да какое там, прости господи, техзадание.. лабораторная работа, наверное. Обработки кнопок так таковой нет, ну, мигать что-то будет..
преподу хватит.

Это не лабораторная, я уже давно отучился. Просто раньше схемы паял на дискретных элементах, но это сейчас уже прошлый век, вот решил разбираться с рicами.

По поводу ТЗ: а так и задумано, чтобы кнопка опрашивалась ТОЛЬКО во время светящегося светодиода? нет так не задумано но я видел этот баг

На прерываниях пробовал, то же самое у меня получается :cry:
Скачал архив сейчас буду разбирать
Контактная информация:
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

да какое там, прости господи, техзадание.. лабораторная работа, наверное. Обработки кнопок так таковой нет, ну, мигать что-то будет..
преподу хватит.
Чуть поправил, а то прямо код глаза режет
скачал. прошил результат тот же
Контактная информация:
Родился
Сообщения: 10
Зарегистрирован: Пн сен 07, 2009 02:21:07
Откуда: Украина

Сообщение nicolia »

Последняя прога вроде должна работать как надо.
Если судить по предпоследней то задержка моргания 05 сек загружается
один раз В НАЧАЛЕ программы и больше никоим чудом не трогается. При первом нажатии на кнопу загружается 1 сек и больше ничего. Из сего следует что пик у вас сбрасывается либо вы прошиваете пик одной и тойже прогой.
сброс МК (если это не РОR) можно отловить если ввести ещё одну переменную (типа RCOUNT), на старте делать ей incf и выводить младший бит её на ещё один светодиод
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

Может, проще сбросить собаку в процедуре временной задержки ?
Но, если это не лабораторная, то все сделано не так.
Процедура опроса кнопок - это отдельная задача, которая должна корректировать дребезг кнопки. Для этого она вызывается миллисекунд через 10 и при опросе модифицируется счетчик антидребезга - решение о том, что кнопка нажата или отжата, принимается по тому, сколько этот счетчик насчитал.
Временные задержки такой длительности - только через таймер! Иначе у Вас не останется времени ни на что другое.
Контактная информация:
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

nicolia писал :
[/quote]Из сего следует что пик у вас сбрасывается либо вы прошиваете пик одной и тойже прогой.
сброс МК (если это не РОR) можно отловить если ввести ещё одну переменную (типа RCOUNT), на старте делать ей incf и выводить младший бит её на ещё один светодиод
Скорее всего сбрасывается, но почему, и как это отловить , можно поподробнее. На счет того что я не прошиваю, специально зашил другую прогу , там все работает, зашиваю эту . не работает, вернее работает но не правильно
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

поскольку я не хочу быть голословным, то - как бы я сделал - присоединяю.
Единственное - на асме меня теперь под пистолетом программить не заставишь
- писал на хайтеке. Компилятор ожно скачать на моем ресурсе
- да простят меня модераторы за ссылку http://www.remexpert.com/ipb/ipb.html?a ... owfile=153
нужно после регистрации запостить пару сообщений - хоть в курилку, такое...
Вложения
mla.rar
(44.91 КБ) 225 скачиваний
Контактная информация:
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

urry ваш вариант прошил, работает почти стабильно , бывают глюки если удержать кнопку :)) , но я так и не понял чего моя прога не работает как нужно :cry:
Контактная информация:
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

urry еще в твоей проге не выставлены биты конфигурации,я поставил cp-off, pwrte-on,wdte-off, xt.
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

OOzzzz писал(а):но я так и не понял чего моя прога не работает как нужно :cry:
Перепишите алгоритм с учетом замечаний - не хотите на си, пишите на асме, но наверное, Вам нужно в раздел "для начинающих" ?
Контактная информация:
Открыл глаза
Сообщения: 57
Зарегистрирован: Сб сен 05, 2009 16:21:14
Откуда: Украина

Сообщение OOzzzz »

Долго не писал инет был в отключке.
Вот переписал прогу, но результат такой же. проходит два такта и начинает моргать с частотой о,5 сек. Если держать кнопу то моргает с частотой 1 сек.
Файл асм прилагаю, где баги прячутся ?
Вложения
1 morg1.asm
(4.44 КБ) 318 скачиваний
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»