ATmega8+АЦП зависают

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 12
Зарегистрирован: Ср фев 04, 2009 13:34:01

Сообщение WandererX »

Здравствуйте!
Делаю диплом на тему регистрации аналоговых сигналов на ПК. За основу взял схему, представленную здесь http://dikoy44.narod.ru/projects/vkr11.htm (автор Dykoy). Работает МК с АЦП AD7896. Тест (инициализацию) проходит, но при запуске считывания данных с АЦП МК зависает: горит желтый светодиод (опрос АЦП как я понимаю) и не реагирует на нажатия - нужно переподключать устройство (или МК резетить).
Удачно получалось запустить только несколько раз. При этом все работало, можно было менять режимы, но при переподключении та же проблема.
Посмотрите, пожалуйста, в чем может быть дело?
Код прошивки:
vkr.c
Программа пользователя
(10.71 КБ) 266 скачиваний
.
Еще может конструкторские ошибки у меня какие есть? Вот фото платы:
Плата.JPG
(141.41 КБ) 642 скачивания
Плата 2.JPG
(171.63 КБ) 390 скачиваний
Например, не мешает ли, что микросхемы в панельках сидят?
Последний раз редактировалось WandererX Вс май 30, 2010 08:44:53, всего редактировалось 1 раз.
Реклама
Родился
Сообщения: 12
Зарегистрирован: Ср фев 04, 2009 13:34:01

Сообщение WandererX »

Получилось запускать таким образом:
МК проходит тест и даже начинает опрос БЕЗ АЦП. После этого вставляю АЦП в опрашиваемую панельку:) и далее передача данных и регистрация идет нормально.
Почему же не получается по-человечески? :dont_know:... То есть по-кошачьи :)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Скажите на кой пес нам конструкция?
Схему надо, а не исполнение.
Выкладывайте схему - будет тогда разбор полетов
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Родился
Сообщения: 12
Зарегистрирован: Ср фев 04, 2009 13:34:01

Сообщение WandererX »

Meteor писал(а):Скажите на кой пес нам конструкция?
Схему надо, а не исполнение.
Выкладывайте схему - будет тогда разбор полетов
Так здесь же есть
WandererX писал(а):взял схему, представленную здесь http://dikoy44.narod.ru/projects/vkr11.htm
Не хотел повторяться. Вот схема:
Схема.GIF
(85.1 КБ) 409 скачиваний
Желтый светодиод на 28 выводе МК (в комментариях прошивки подписан).
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Насколько понял, вы прерываниями практически не работаете- только ждете поступления данных от ПК. От того и нет никаких реакций на нажатия.
Лучше наверное будет перелопатить код таким образом, что бы был цикл с проверкой флагов, установка которых происходит по прерываниям. (на форуме мульйон раз обмусолено)
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Родился
Сообщения: 12
Зарегистрирован: Ср фев 04, 2009 13:34:01

Сообщение WandererX »

Meteor писал(а):Лучше наверное будет перелопатить код
Это можно сказать программу занова писать! :shock: а я с программированием на Вы. Если бы не защита скоро, можно было бы поразбираться с прерываниями, почитать. Я обычно так и делаю, но это очень долго.
С этой прошивкой устройство у автора работало при скорости UART=2Mbs. Я и на 1Mbs перестраивал - не помогает. Хочу понять почему у меня не работает, где слабое звено... точнее даже работает, но очень редко... или с бубном при помощи вынимания АЦП.
На каком этапе выполнения кода в прошивке оно происходит (сам понимаю его очень поверхностно)? Может это поможет найти проблему в аппаратной части или в том же коде?
Вот лог портмона при удачном старте:

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

[size=85]Открытие порта:
2	0.02186814	COMTEST.EXE	IRP_MJ_CREATE	VCP4	SUCCESS	Options: Open 	
3	0.00000531	COMTEST.EXE	IOCTL_SERIAL_GET_BAUD_RATE	VCP4	SUCCESS		
4	0.00000223	COMTEST.EXE	IOCTL_SERIAL_GET_LINE_CONTROL	VCP4	SUCCESS		
5	0.00000223	COMTEST.EXE	IOCTL_SERIAL_GET_CHARS	VCP4	SUCCESS		
6	0.00000168	COMTEST.EXE	IOCTL_SERIAL_GET_HANDFLOW	VCP4	SUCCESS		
7	0.00087665	COMTEST.EXE	IOCTL_SERIAL_SET_BAUD_RATE	VCP4	SUCCESS	Rate: 1000000	
8	0.00098756	COMTEST.EXE	IOCTL_SERIAL_CLR_RTS	VCP4	SUCCESS		
9	0.00098057	COMTEST.EXE	IOCTL_SERIAL_CLR_DTR	VCP4	SUCCESS		
10	0.00098253	COMTEST.EXE	IOCTL_SERIAL_SET_LINE_CONTROL	VCP4	SUCCESS	StopBits: 1 Parity: NONE WordLength: 8	
11	0.00000196	COMTEST.EXE	IOCTL_SERIAL_SET_CHAR	VCP4	SUCCESS	EOF:0 ERR:0 BRK:0 EVT:0 XON:0 XOFF:0	
12	0.00097051	COMTEST.EXE	IOCTL_SERIAL_SET_HANDFLOW	VCP4	SUCCESS	Shake:0 Replace:0 XonLimit:0 XoffLimit:0	
13	0.00093084	COMTEST.EXE	IOCTL_SERIAL_CLR_RTS	VCP4	SUCCESS		
После нажатия INIT (зеленый светодиод моргает 4 раза):
494	0.00082413	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 01 	
496	0.00000559	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 44 	
После нажатия ЗАПУСК (100 мс, 1 измерение):
1043	0.00057382	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 02 	
1044	0.00021539	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 64 	
1045	0.00043777	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 00 	
1046	0.00025757	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 05 	
1047	0.00047101	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 01 	
1048	0.00069422	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 00 	

После нажатия "OK" на запрос "АЦП настроен! Нажмите ОК для начала измерения.":
//ИМЕННО ПОСЛЕ НАЖАТИЯ ОК ОБЫЧНО ЗАГОРАЕТСЯ ЖЕЛТЫЙ СВЕТОДИОД И НЕ ПРИХОДИТ ОТВЕТ ОТ МК (строки "IRP_MJ_READ")
//ПРИ УДАЧНОМ ЖЕ ЗАПУСКЕ НАЧИНАЮТСЯ ИЗМЕРЕНИЯ И ПРИХОДЯТ "IRP_MJ_READ":
1196	0.00071266	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 07 	
1198	0.00000698	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 00 	
1206	0.00000698	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 80 	
2574	0.00056180	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 1B 	
2575	0.00048470	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 64 	
2576	0.00073920	COMTEST.EXE	IRP_MJ_WRITE	VCP4	SUCCESS	Length 1: 00 	
2653	0.00027629	COMTEST.EXE	IOCTL_SERIAL_SET_RTS	VCP4	SUCCESS		
2656	0.00000754	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 00 	
2664	0.00000670	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 80
...
2672	0.00000670	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 80 	 	
2666	0.00000615	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 00 	
	
10658	0.00097750	COMTEST.EXE	IOCTL_SERIAL_CLR_RTS	VCP4	SUCCESS		
10660	0.00000698	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 80 	
10662	0.00000698	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 00 	
10668	0.00000698	COMTEST.EXE	IRP_MJ_READ	VCP4	SUCCESS	Length 1: 80 	
Закрытие порта:
34435	0.00000615	COMTEST.EXE	IRP_MJ_CLEANUP	VCP0	SUCCESS		
34436	0.11547836	COMTEST.EXE	IRP_MJ_CLOSE	VCP0	SUCCESS		[/size]
Реклама
Родился
Сообщения: 12
Зарегистрирован: Ср фев 04, 2009 13:34:01

Сообщение WandererX »

Нашел, почему МК виснет: 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
Родился
Сообщения: 12
Зарегистрирован: Ср фев 04, 2009 13:34:01

Сообщение WandererX »

Проблема вроде решилась! Помог хороший человек alex312: немного изменил код:
vkr.c
(11.08 КБ) 504 скачивания
Еще один вопрос есть:
Кнопка RESET в программе не работает, точнее в прошивке. Программа при нажатии на кнопку посылает 08H в МК. Я так понял это резет МК. Можно его все-таки реализовать? И как?
Родился
Сообщения: 12
Зарегистрирован: Ср фев 04, 2009 13:34:01

Сообщение WandererX »

По-видимому поторопился я с выводами :( Активное состояние Busy при запуске убирал шлейф для прошивки к парал. порту, который я не отпаял после прошивки... Причем методом исключения обнаружил, что достаточно, чтобы были припаяны только выводы SCK и GND.
Они между собой не имеют электрической связи, от порта разъем отключен... Значит помехи? Но вроде и кондюки и индуктивности по входу питания стоят... Может я чего-то не учитываю? Старожилы подскажите пожалуйста!
Родился
Сообщения: 12
Зарегистрирован: Ср фев 04, 2009 13:34:01

Сообщение WandererX »

Автор схемы (Dykoy) помог с бизи разобраться! :)) Подтянул CLK к земле через 10 кОм.
Насчет резета вопрос остается в силе. Прочитал, что можно на нулевой адрес сослаться для перезагрузки программы МК, но как это реализовать не нашел :dont_know:
Закрыто

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