Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
16.08.2016, 14:46
|
|
Прохожий
Регистрация: 16.08.2016
Сообщений: 7
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
На приборе под управлением LPC2388 несколько светодиодов включаются-выключаются от портов 0, 1, 3.
Те светодиоды, что от порта 3 - включаются/выключаются по FIO3CLR, FIO3SET как часы - а вот для нулевого и первого портов - все выключено, IO0CLR, IO0SET не работают (равно как и IO1CLR, IO1SET) - при этом, если идти по шагам в отладчике, видно - IO0SET, IO1SET - устанавливаются и сбрасываются как надо, битики то добавляются, то сбрасываются в слове состояния.
Как ими управиться? Или в процессоре что-то где-то установлено, чтобы на выход подавался потенциал?
|
|
|
|
16.08.2016, 14:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
Сообщение от idov
|
На приборе под управлением LPC2388
|
Это прибор промышленного изготовления, или ваша разработка?
Если промышленного, значит изначально он был исправен, и эти светодиоды светились?
Если да, то после какого события они перестали светиться? Скачок напряжения в сети, пролитое кофе, падение на пол?
|
|
|
|
16.08.2016, 15:03
|
|
Заблокирован
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
|
Re: Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
Наверно порт на выход надо настроить. Не?
Листинг где?
|
|
|
|
16.08.2016, 15:15
|
|
Прохожий
Регистрация: 16.08.2016
Сообщений: 7
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
Сообщение от Alex9797
|
Это прибор промышленного изготовления, или ваша разработка?
Если промышленного, значит изначально он был исправен, и эти светодиоды светились?
Если да, то после какого события они перестали светиться? Скачок напряжения в сети, пролитое кофе, падение на пол?
|
Прибор "наш".
Светодиоды светились. На предыдущей версии.
А на новой версии у такого же самого LPC2388 не сбрасывается потенциал на пинах 0го и 1го портов.
Проверили тестером, на порту 3 (от него тоже на 1 светодиод идет сигнал) все как положено, ставится и сбрасывается.
А на нескольких пинах 0 и 1 портов - остается потенциал, хоть ты его IO0SET, хоть ты его IO0CLR, хотя отладчиком видно, что в значении IO0SET нужные биты поднимаются и нулятся.
Если бы тестером не видел, что фигня творится уже на выходе из LPC2388 - грешил бы на возможно новую разводку (она старая, но кто их знает). А так - только остается понять, почему из микросхемы выходит не то. И возможно ли это из-за каких-то внутренних установок LPC2388.
|
|
|
|
16.08.2016, 15:19
|
|
Прохожий
Регистрация: 16.08.2016
Сообщений: 7
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
Сообщение от индюк
|
Наверно порт на выход надо настроить. Не?
Листинг где?
|
Порт на выход настроен.
Вот кусочками листинг.
Вот установка на вход/выход
// kbd keys input
IO0DIR &= ~BIT(31);
FIO3DIR &= ~BIT(26);
FIO2DIR &= ~BIT(5);
// leds output
IO0DIR |= BIT(14);
IO1DIR |= BIT(1 | BIT(20)|BIT(21)|BIT(23)|BIT(24);
FIO3DIR |= BIT(23)|BIT(24)|BIT(25);
Вот последующее управление
void emb_led( unsigned char led, unsigned char on )
{
switch( led ) {
case 1: if(on)IO1CLR=BIT(1 ; else IO1SET=BIT(1 ; break; // loopback 1
case 2: if(on)IO0CLR=BIT(14); else IO0SET=BIT(14); break; // loopback 2
case 3: if(on)IO1CLR=BIT(20); else IO1SET=BIT(20); break; // loopback 3
case 4: if(on)IO1CLR=BIT(23); else IO1SET=BIT(23); break; // loopback 4
case 5: if(on)IO1CLR=BIT(24); else IO1SET=BIT(24); break; // speed 10
case 6: if(on)FIO3CLR=BIT(25); else FIO3SET=BIT(25); break; // speed 100
case 7: if(on)IO1CLR=BIT(21); else IO1SET=BIT(21); break; // speed 1000
case 8: if(on)FIO3CLR=BIT(23); else FIO3SET=BIT(23); break; // link
case 9: if(on)FIO3CLR=BIT(24); else FIO3SET=BIT(24); break; // full duplex
default: break;
}
}
При этом - можно отладчиком посмотреть IO0SET или IO1SET, они четырехбайтовые числа, в них отражается сброс или установка пина порта - но на выходе из LPC2388 это не отражается, там на этих пинах постоянный потенциал.
|
|
|
|
16.08.2016, 15:48
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
Ой как грязненько сделано. Надо срочно изучать указатели.
|
|
|
|
16.08.2016, 22:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
Ну, если старая версия работала, а новая нет, то логично было бы сравнить листинги обеих версий, особо уделяя внимание участкам, которые могут влиять на конфигурацию пинов. Прямо каждую строку сравнивать. Их не так уж много, и различия быстро найдутся.
Кстати, используемые пины менялись в новой версии, относительно старой? В любом случае надо обратить внимание на то, выходят ли на проблемные пины выходы или входы альтернативных функций? Возможно, что они как раз на эти функции и сконфигурированы, поэтому на их состояние и не влияют команды установки пинов порта.
Кроме того, чтобы ускорить поиск, надо написать кусочек тестовой проги, в которой сразу же после начальной конфигурации проблемный пин программно установить в ноль, или в единицу, повесив предварительно на этот пин светодиод. А лучше два последовательно, зеленый и красный. Светодиоды включить последовательно, между землей и плюсом питания, а к точке их соединения - подключить интересующий пин, через резистор 2...3 килоома. Если пин будет в невесомости - оба светодиода погашены. Если пин будет сконфигурирован на выход, то один из светодиодов обязательно будет светиться. Если светятся оба - значит на этом выходе молотят импульсы, о скважности которых можно судить по соотношению яркостей светодиодов. Очень информативная штука.
Так вот, чтобы не таращить глаза, в поисках места в программе, в котором может несанкционированно измениться конфигурация этих пинов, надо сначала убедиться, что они в принципе могут работать нормально. Как я уже начал выше, пишем кусочек тестовой проги, в которой сразу же после установки конфигурации устанавливаем интересующий пин в ноль, запускаем задержку 100...300мс, затем устанавливаем пин в единицу, снова задержка - и возврат в начало бесконечного цикла, на установку пина снова в ноль. Ну, это так, как вариант. Этот тест даст возможность убедиться, что компилятор еще в норме, что проц еще нормальный, что пин тоже способен. И что искать причину надо в глубине проги. Особенно в обработке прерываний.
Кстати, перед этим тестом обязательно надо запретить нахрен все прерывания.
Ну, и подобный тест применить поочередно ко всем глючным пинам. Это даст полезную информацию к размышлению.
|
|
|
Сказали "Спасибо" Alex9797
|
|
|
17.08.2016, 15:11
|
|
Прохожий
Регистрация: 16.08.2016
Сообщений: 7
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
Листинги сравнивать - оно верно...
Вот только в приборе поменялась микросхема ПЛИС, а процессор и его софт - не менялись.
Однако я уже проверял - старый прибор (со старой ПЛИС) - работает ОК, я туда вставил отладочные установки битов типа
IO0CLR(x) - чтобы бит х засветился,
IO0SET(x) - чтобы бит х погас
И на старом приборе - и гаснут и светятся, я дебаггером в пошаговом режиме вижу. Где надо - засветился, где надо погас.
И на новом в IO0DIR биты нужные в 1 - т.е. эти пины - порты вывода.
Нет ли где в установка LPC2388 какой-нибудь побитовой маски для портов? При этом PINSEL'ы я уже проверил - там все ОК, стоят одни нули - значит эти пины портов 0 и 1 принимаются за GPIO, а не за что-то другое.
|
|
|
|
17.08.2016, 15:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
Сообщение от idov
|
А на нескольких пинах 0 и 1 портов - остается потенциал
|
"Остается потенциал" - это надо как понимать? Наверное, это означает, что на них логическая единица?
А как при этом себя чувствует процессор? Можно ли сказать, что он при этом греется сильнее обычного?
Куда эти пины подсоединены?
Сообщение от idov
|
в приборе поменялась микросхема ПЛИС
|
Если эти пины подключены к ПЛИС, которая отличается от предыдущей версии, то можно предположить, что некоторые ее пины теперь сконфигурированы на выход, и эти выходы оказались подключенными к пинам процессора, которые тоже пытаются что-то выдавать из себя. Ну, например проц пытается выставить ноль на выход. А навстречу ему из ПЛИС приходит единица. И в этой схватке ПЛИС побеждает. А проц пыжится, но это приводит только к его повышенному нагреву.
В общем, я бы попробовал отрезать дорожку от проблемного пина, и посмотреть, что из этого получится.
|
|
|
|
17.08.2016, 16:17
|
|
Прохожий
Регистрация: 16.08.2016
Сообщений: 7
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос по LPC2388. Странная реакция битов портов 0 и 1.
Кажется, я нащупал кончик ниточки - в старом приборе регистр IO0PIN, IO1PIN живо реагируют на любую работу с пинчиками - поднимаются, падают - видно в отладчике.
А на новой версии оба регистра втупую чистые нули - и никак туда ничего не записать, хоть впрямую попытался IO1PIN=BIT(20); - ни-че-го.
Не знает ли кто - кто управляет регистрами IO0PIN, IO1PIN?
Кто их может задать неписабельными (RO)?
Или это просто бракованный процессор мне попался?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Вопрос по LPC2388
|
lacoder |
Микроконтроллеры, АЦП, память и т.д |
8 |
07.11.2010 14:20 |
Часовой пояс GMT +4, время: 02:54.
|
|