Пример проблемного проекта.
|
|
ADMIN |
Дата: Вт, 22.01.2008, 12:21 | Сообщение # 1 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Цитата из письма: Quote Не могу понять, в чём проблема. Микроконтроллер 16F876A работает так как ему захочется, а не так как полагается по программе. Например, пример из книги Чака Х. управление 7-сегментным индикатором (адаптированный под плату PIC-EASY) Code x var byte
numb1 var byte
portВ = %00000000 trisВ = %00000000 adcon1 = 6 trisA = %00000000 portA = %00000000 loop: for x = 0 to 9 step 1 gosub convrt portB = numb1 pause 100 next
goto loop
convrt:
lookup x, [$C0, $F9, $A4, $B0, $99, $92, $82, $F8, $80, $90], numb1 return Quote Глюки: 1) Поначалу всё работает, как полагается, а потом через некоторое время контроллер виснет и не реагирует на сброс и отключение питания только перепрашивать заново. 2) В программе задано время смены цифры на индикаторе 1 секунда, контроллер меняет цифру за 2, 3 … 10 секунд для каждой цифры по разному. 3) Работает, зависнет и снова работает. И такое происходит со всеми программами. Подскажите, пожалуйста, в чём может быть причина сих глюков. Из-за них не могу приступать к более сложным проектам.
|
|
|
|
ADMIN |
Дата: Вт, 22.01.2008, 12:34 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Эта проблема не в коде, судя по всему. При прошивке wdt отключен? MCLR сколько по питанию? Наводки какие рядом есть-нет? Если все программы глючат, не в ПИКЕ ли дело? Есть под рукой другой пик? Проверь на нем. Ответь на эти вопросы, может что прояснится.
|
|
|
|
evgenb |
Дата: Вт, 22.01.2008, 20:03 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 14.09.2007
Статус:
Offline
|
basicpic, После goto loop руководством РВР рекомендуется ставить END. Но точно не знаю. Проверь в Протеусе. Если работает, смотри камень
|
|
|
|
Romario |
Дата: Вт, 22.01.2008, 23:29 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
58
Замечания:
±
На сайте с 14.09.2007
Статус:
Offline
|
На MCLR - 5 вольт, END в конце программы стоит, наводок нет. При прошивке wdt всегда отключаю. Я уже задавал подобный вопрос на другом форуме, народ говорит: "Там есть SLEEP и пробуждение от WDT, хотя в исходнике их нет. Наверняка дело в "кривой" работе с WDT" Возможно сам контроллер глюкавый, проверю на другом после зарплаты. Кто ещё поделится своими глюками с МК, думаю это будет полезно для всех!
|
|
|
|
ADMIN |
Дата: Ср, 23.01.2008, 03:41 | Сообщение # 5 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
У меня ни в одной программе END не стоит. Главное зациклить программу. Если в исходнике нет sleep, то и не циклись на этом. Скорее проц глючит.
|
|
|
|
evgenb |
Дата: Ср, 23.01.2008, 09:57 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 14.09.2007
Статус:
Offline
|
basicpic, Показан только фрагмент программы. Такое похоже когда программа перезаписывается или теряет адрес исполнения. Возможно не выполняются условия 2К, возможно больше четырех вложенных подпрограмм, возможно некорректная работа READCODE или WRITECODE.
|
|
|
|
ADMIN |
Дата: Ср, 23.01.2008, 11:21 | Сообщение # 7 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Пример вроде взят из книги Хелибайка. Поэтому пусть автор выложит весь текст. Будем разбираться. Возможно стек переполняется где-то и все
|
|
|
|
Romario |
Дата: Ср, 23.01.2008, 13:02 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
58
Замечания:
±
На сайте с 14.09.2007
Статус:
Offline
|
Это и есть весь текст програмы (пример №3 Чак Хелибайк) адаптированный под оладочную плату PIC-Easy.
|
|
|
|
Aleks_ey |
Дата: Ср, 23.01.2008, 13:19 | Сообщение # 9 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
31
Замечания:
±
На сайте с 15.11.2007
Статус:
Offline
|
А может как раз и не надо отключать WDT кажись команда "PAUSE" его использует, хотя может ошибаюсь, но вроде так.
|
|
|
|
ADMIN |
Дата: Ср, 23.01.2008, 16:22 | Сообщение # 10 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
pause учитывает wdt, проверьте disasm'ом, на всякий случай. Роман, попробуй уже, наконец с другим процем, будем знать. Уже всех заинтриговал...
|
|
|
|
Aleks_ey |
Дата: Ср, 23.01.2008, 19:40 | Сообщение # 11 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
31
Замечания:
±
На сайте с 15.11.2007
Статус:
Offline
|
Да, ты прав. disasm'ом смотреть не обязательно нужно просто глянуть в файл PIC14EXT.BAS
|
|
|
|
ADMIN |
Дата: Чт, 24.01.2008, 03:03 | Сообщение # 12 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
А "pause 100" - это не секунда...
|
|
|
|
brown |
Дата: Чт, 24.01.2008, 04:44 | Сообщение # 13 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
У меня проблем с 876А в РВР не было. В начало проги вводил следующие строки: ADCON1 = 7 'Все порты цифровые ADCON0.0 = 0 'АЦП выключен SSPCON.5 = 0 'Модуль SSP выкл., порты цифровые А вот в Протоне при компиляции разными версиями одной и той же проги получал разный результат работы в железе, но это наверное проблема в компиляторе- так точную причину не установил.
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
ADMIN |
Дата: Чт, 24.01.2008, 05:33 | Сообщение # 14 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
У меня с протоном проблем вообще не было. Работаю только с ним.
|
|
|
|
Romario |
Дата: Пт, 25.01.2008, 20:36 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
58
Замечания:
±
На сайте с 14.09.2007
Статус:
Offline
|
Можете прислать какую небудь программку, написанную на Протоне. Испытаю её на МК.
|
|
|
|