Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 104
Зарегистрирован: Сб фев 24, 2007 15:49:35

Сообщение sinobi »

DX168B,Jack_A -Огромное спасибо за помощь-Добился того что надо!
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Сообщение MS24 »

Ребят, не могу понять, при повторной отправки по UART флаг UDRE0 не устанавливается в единцу, подскажите пожалуйста в чем проблема?
Код приложил
Вложения
ShagDvig.asm
(9.33 КБ) 280 скачиваний
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Для начала, откуда вы знаете что именно при повторной отправке?
И что должна делать ваша прога?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Порадовало

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

init:
sei
разрешать прерывания нужно только ПОСЛЕ инициализации а не в начале, особенно до установки стека.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Сообщение MS24 »

Я отлаживаю в виртуальном отладчике AVR studio 5, для примера взял стандартный код, еоторый тоже приведу ниже. В отладчике, отправляется первый байт, когда я повторно захожу в подпрограмму отправки, флаг UDRE не поднимается больше. Я думаю, что это баг отладчика ar studio, или я что-то натупил? Объясните пожалуйста, уже 7 час не могу понять!
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

А ты когда повторно передаешь, проверяешь готовность передатчика? Перед передачей надо сначала дождаться передачи предыдущего.
Контактная информация:
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

MS24 писал(а):Я отлаживаю в виртуальном отладчике AVR studio 5, для примера взял стандартный код, еоторый тоже приведу ниже. В отладчике, отправляется первый байт, когда я повторно захожу в подпрограмму отправки, флаг UDRE не поднимается больше. Я думаю, что это баг отладчика ar studio, или я что-то натупил? Объясните пожалуйста, уже 7 час не могу понять!
Для начала надо зайти в руководство пользователя для 5 STUDIO и посмотреть , а вообще симмулятор ( дерьмо изначально) поддерживает ли USART для mega128/ Скорее всего нет.
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

у меня небыло проблем с UARTом в симуляторе студии, а вот с SPI в TINY26 были. там флаг не сбрасывался.
в итоге, приходилось переопределять метку на пустышку, чтобы можно было хотя бы остальное отладить. а потом вернуть подпрограмму передачи /приема и отладить в железе.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Сообщение Челюскин »

Господа, вопрос простейший, это скорей всего что-то я туплю сильно... Если порт контроллера настроен на ВЫВОД и в какой-нить разряд мы запишем единицу, её потом можно прочитать? порт в состоянии вывода можно прочитать вообще? :?
Лень - двигатель прогресса!
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

В общем случае можно. Но если физически порт у вас соединён с "нулём", а вы в него запишите "1", то рискуете прочитать из него "0", а не "1". За более подробной информацией — в ДШ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Сообщение Челюскин »

спасибо за быстрый ответ. сижу вот думаю как клаву 3*4 подключить к порту, вот и вопросы возникают такие.
Лень - двигатель прогресса!
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

3 бита на вывод, 4 на вход. И сканируйте сколько влезет. Развязать диодами, чтобы на самом деле "1" не провалилась в "0".
Docendo discimus
Контактная информация:
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Сообщение Челюскин »

Тогда вот что спрошу:

1.какая по времени развязка (пауза) должна быть между переключением столбцов?
2.как полученные коды (их я понимаю будет 3 по числу столбцов) сопоставить с состоянием клавиатуры?

p.s. если есть у кого схема с развязкой на диодах покажите пожалуйста. погуглил, прежде чем спросить, хотелось бы увидеть как на практике что куда паять, а то понавешано там много чего, и подтяжки всякие и диоды...
Лень - двигатель прогресса!
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

1. Порядка 10 мсек для устранения дребезга.
2. На бумажке разрисуйте и все станет на свои места. В том числе в уме разложится по полочкам.
Диоды расставьте так, чтобы при нажатии одновременном двух и более кнопок не получалось КЗ в цепях портов.
Docendo discimus
Контактная информация:
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Сообщение Челюскин »

Разрисовал уже все, даже коды состояния в таблицу записал - систему искал, блин!!!(о какой я :facepalm: ) по диодам поясните подробнее...
Лень - двигатель прогресса!
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Изображение
Инпуты подтянуты к питанию внутренними резюками.
Вложения
key.jpg
(8.75 КБ) 681 скачивание
Docendo discimus
Контактная информация:
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Сообщение Челюскин »

pyzhman писал(а):3 бита на вывод, 4 на вход. И сканируйте сколько влезет. Развязать диодами, чтобы на самом деле "1" не провалилась в "0".
согласно Вашей схеме, может наоборот??? или я чего-то не понимаю.....
Лень - двигатель прогресса!
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Вместо кнопок расположи на плате дорожки столбцами и строками, переводишь порт в режим вывода записываешь "0" ждешь пару мкс, устанавливаешь подтягивающий резистор для порта переводишь его в режим ввода и измеряешь время когда порт перейдет в "1" это будут десятки микросекунд. Так работает емкостная сенсорная клавиатура, те линии где время установления "1" будет больше - там есть "нажатие". перебирая строки и столбцы можно определить точки пересечения и тем самым номер нажатой кнопки.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Резистивник еще круче работает. Один источник тока, четыре резистора, два фильтра (RC или LC) и два АЦП. Данные из АЦП являются координатами точки прикосновения. :)
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

Один АЦП mega Pic Tiny в состоянии обработать 32 кнопки по одному каналу. Нафинг нужны эти матрицы и такое количество используемых выводов , аж 7 шт.
Ответить

Вернуться в «AVR»