Здравствуйте! Делаю диплом на тему регистрации аналоговых сигналов на ПК. За основу взял схему, представленную здесь http://dikoy44.narod.ru/projects/vkr11.htm (автор Dykoy). Работает МК с АЦП AD7896. Тест (инициализацию) проходит, но при запуске считывания данных с АЦП МК зависает: горит желтый светодиод (опрос АЦП как я понимаю) и не реагирует на нажатия - нужно переподключать устройство (или МК резетить). Удачно получалось запустить только несколько раз. При этом все работало, можно было менять режимы, но при переподключении та же проблема. Посмотрите, пожалуйста, в чем может быть дело? Код прошивки:
Вложение:
Комментарий к файлу: Программа пользователя vkr.c [10.71 KiB]
Скачиваний: 255
. Еще может конструкторские ошибки у меня какие есть? Вот фото платы:
Получилось запускать таким образом: МК проходит тест и даже начинает опрос БЕЗ АЦП. После этого вставляю АЦП в опрашиваемую панельку:) и далее передача данных и регистрация идет нормально. Почему же не получается по-человечески? ... То есть по-кошачьи
Скажите на кой пес нам конструкция? Схему надо, а не исполнение. Выкладывайте схему - будет тогда разбор полетов
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Насколько понял, вы прерываниями практически не работаете- только ждете поступления данных от ПК. От того и нет никаких реакций на нажатия. Лучше наверное будет перелопатить код таким образом, что бы был цикл с проверкой флагов, установка которых происходит по прерываниям. (на форуме мульйон раз обмусолено)
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Это можно сказать программу занова писать! а я с программированием на Вы. Если бы не защита скоро, можно было бы поразбираться с прерываниями, почитать. Я обычно так и делаю, но это очень долго. С этой прошивкой устройство у автора работало при скорости UART=2Mbs. Я и на 1Mbs перестраивал - не помогает. Хочу понять почему у меня не работает, где слабое звено... точнее даже работает, но очень редко... или с бубном при помощи вынимания АЦП. На каком этапе выполнения кода в прошивке оно происходит (сам понимаю его очень поверхностно)? Может это поможет найти проблему в аппаратной части или в том же коде? Вот лог портмона при удачном старте:
Нашел, почему МК виснет: BUSY АЦП после подачи питания все время 1! Если эту ножку BUSY не всавлять в панель, то все ок, но я так понимаю измерения будут неверными. Вопрос: почему так может получаться? Что даст раскоммент следующих строк ? #define UDRE 5 //#define ADC_BUSY PINB.0 #define NCONVST PORTB.1 #define RXC 7 #define ERROR PINC.3 //#define INIT PINC.1 #define TxGO PINC.5
Еще один вопрос есть: Кнопка RESET в программе не работает, точнее в прошивке. Программа при нажатии на кнопку посылает 08H в МК. Я так понял это резет МК. Можно его все-таки реализовать? И как?
По-видимому поторопился я с выводами Активное состояние Busy при запуске убирал шлейф для прошивки к парал. порту, который я не отпаял после прошивки... Причем методом исключения обнаружил, что достаточно, чтобы были припаяны только выводы SCK и GND. Они между собой не имеют электрической связи, от порта разъем отключен... Значит помехи? Но вроде и кондюки и индуктивности по входу питания стоят... Может я чего-то не учитываю? Старожилы подскажите пожалуйста!
Автор схемы (Dykoy) помог с бизи разобраться! Подтянул CLK к земле через 10 кОм. Насчет резета вопрос остается в силе. Прочитал, что можно на нулевой адрес сослаться для перезагрузки программы МК, но как это реализовать не нашел
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения