|
Странное поведение портов!, Мега32 - что может быть??? |
|
|
|
May 16 2006, 13:34
|
Местный
  
Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526

|
Такая ситуация - Мега32, частота 16М, порт В - подключен LCD (2x16), причем по четырехпроводной схеме. Работают старшие линии РВ(7,6,5,4). При обращении к дисплею, на младшие линии выдаются нули. Обращение к дисплею происходит в основном цикле программы. Далее, к порту В также подключено устройство, имеющее 4 выходных линии, на которых присутствует поочередно "1" на каждой линии. Состояние, когда все 4 линии "0" исключено. Опрос этих линий происходит по прерыванию (1 раз в 20 мс). Программа обработки прерывания считывает состояние регистра DDRB, переводит младшие линии порта В на прием, считывает состояние порта В (PINB), возвращает DDRB в исходное состояние, и передает управление основному телу программы. И все бы ничего, если бы не ситуация - если прерывание возникает в период работы функции вывода данных на дисплей (т.е. когда на младшие линии подаются "0"), то в прерывании считываются именно "0"!!! После переключения линий порта В на прием, делаю паузу (до 10 мксек), ничего не меняется. Т.о., это не паразитные емкости. А вот если перед переключением порта на прием, выдать на младшие линии порта "1", то все становится на свои места - данные считываются нормально. Помогите разобраться в чем дело...
|
|
|
|
|
 |
Ответов
|
May 20 2006, 22:24
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(_artem_ @ May 21 2006, 01:08)  Почему впустую ? Потому что "овчинка выделки не стоит". задача решается проще. Поупражняться с пользой можно было бы например так: За это время, можно было сделать то же самое устройство на двух МК, связанных по двухпроводке или по UART'у. Один МК сугубо для LCD причем с нормальной 8-битной схемой включения, а второй для всего остального. Вместо меги32 задачу можно было бы решить на двух M48, которые вместе стоят дешевле одной М32. Можно было тупо добавить шифратор, который бы кодировал 4 линии подключаемого устройства в две. В общем решений, причем в равной степени стандартных, предостаточно, надо лишь дать волю фантазии. Цитата(SasaVitebsk @ May 21 2006, 00:53)  Так зачем начинать??? Выяснил что это НЕПРАВИЛЬНО, - сел и перепаял. Отдал день. И двигайся дальше! Полностью солидарен с Вами.
|
|
|
|
Сообщений в этой теме
Sergio66 Странное поведение портов! May 16 2006, 13:34 _artem_ Приведенная вами ситуация может быть когда вы чита... May 16 2006, 13:53 Sergio66 Цитата(_artem_ @ May 16 2006, 17:53) Прив... May 16 2006, 13:58  WHALE а читаете через PINB? May 16 2006, 14:01   Sergio66 Цитата(WHALE @ May 16 2006, 18:01) а чита... May 16 2006, 14:04 _artem_ Единственное не понимаю - устройство у вас которое... May 16 2006, 14:12 Sergio66 Цитата(_artem_ @ May 16 2006, 18:12) Един... May 16 2006, 14:25  defunct Цитата(Sergio66 @ May 16 2006, 17:25) Есл... May 16 2006, 14:37   Sergio66 Цитата(defunct @ May 16 2006, 18:37) Цита... May 16 2006, 14:59    defunct Цитата(Sergio66 @ May 16 2006, 17:59) Есл... May 16 2006, 15:18     Sergio66 Цитата(defunct @ May 16 2006, 19:18) Цита... May 16 2006, 15:34      Sergio66 Да, есть один нюанс, я его упустил для упрощения о... May 16 2006, 15:45       defunct Цитата(Sergio66 @ May 16 2006, 18:45) Да,... May 16 2006, 15:59  OlegIvanov [/quote]
Что касается выдачи данных, то для того,... May 16 2006, 23:06 _artem_ навесте пулап резисторы - 1 ком вместо устройства ... May 16 2006, 14:33 Sergio66 Цитата(_artem_ @ May 16 2006, 18:33) наве... May 16 2006, 14:44 Laksus Доп. устройство итак подвешено через пулап резисто... May 16 2006, 18:06 WHALE Насколько я помню протокол,последней операцией зап... May 16 2006, 18:14 _artem_ Я Вас может быть неправильно понял но не могу инте... May 16 2006, 18:58 defunct Цитата(_artem_ @ May 16 2006, 21:58) Я Ва... May 16 2006, 20:05 Sergio66 Цитата(_artem_ @ May 16 2006, 22:58) Я Ва... May 17 2006, 05:54 _artem_ Мне это так не кажется - передача тетрады для порт... May 16 2006, 21:23 Sergio66 Цитата(_artem_ @ May 17 2006, 01:23) Мне ... May 17 2006, 06:40 _artem_ Можно отрассировать по выходу из обработчика преры... May 17 2006, 10:06 Sergio66 Цитата(_artem_ @ May 17 2006, 14:06) Можн... May 17 2006, 10:35  otrog В общем так:
Самый простой выход из ситуации это, ... May 17 2006, 11:54   Sergio66 Я только что проделал такой эксперимент - я отключ... May 17 2006, 15:35    defunct Цитата(Sergio66 @ May 17 2006, 18:35) Я т... May 17 2006, 15:49     Sergio66 Цитата(defunct @ May 17 2006, 19:49) Цита... May 19 2006, 09:22      OlegIvanov Цитата(Sergio66 @ May 19 2006, 12:22) Цит... May 19 2006, 15:50       Sergio66 [/quote]
Вам все толком говорят. Вы же сами выбра... May 19 2006, 17:26        defunct Цитата(Sergio66 @ May 19 2006, 20:26) If ... May 19 2006, 20:16 _artem_ Вложенные прерывания разрешены ? Конкретно знаете ... May 17 2006, 11:27 Laksus После переключения линий порта В на прием, делаю п... May 17 2006, 16:30 _artem_ Sergio66, можно ли сделать так :
- прямо в ISR уст... May 19 2006, 11:55 Sergio66 Цитата(_artem_ @ May 19 2006, 15:55) Serg... May 19 2006, 12:13 Sergio66 Цитата(_artem_ @ May 19 2006, 15:55) Serg... May 19 2006, 12:46 Sergio66 Вот такой кусок кода -
while (1)
{
DDRB = 0xf0;... May 19 2006, 13:20 Sergio66 Все чудо в том, что отладчик видит "1" н... May 19 2006, 12:32 _artem_ Может у вас с портом неполадки? Можно будет вывод... May 19 2006, 13:34 _artem_ Sergio66, Можно поменять пин ПБ4 на какой нибудь д... May 19 2006, 22:48 SasaVitebsk Применение развязки на резисторах мягко говоря нек... May 20 2006, 00:05 _artem_ атмега 32 может давать до десяти миллиампер на вых... May 20 2006, 03:45 Sergio66 Цитата(_artem_ @ May 20 2006, 07:45) атме... May 20 2006, 11:05 _artem_ Mozno postavit 1 kOm i poprobovat?
Vi tak i ne soo... May 20 2006, 12:14 Sergio66 Цитата(_artem_ @ May 20 2006, 16:14) Mozn... May 20 2006, 12:21  SasaVitebsk Ребята, можно делать всё!!! Можно брит... May 20 2006, 21:53  Sergio66 Цитата(defunct @ May 21 2006, 02:24) Цита... May 21 2006, 07:49   CDT Приветствую, Господа!
Делал я штуку, в которо... Jun 2 2006, 13:15
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|