Ассемблер (ASM) для AVR в вопросах и ответах
- Сообщения: 104
- Зарегистрирован: Сб фев 24, 2007 15:49:35
DX168B,Jack_A -Огромное спасибо за помощь-Добился того что надо!
- Реклама
- Сообщения: 172
- Зарегистрирован: Пн мар 19, 2012 13:04:11
Ребят, не могу понять, при повторной отправки по UART флаг UDRE0 не устанавливается в единцу, подскажите пожалуйста в чем проблема?
Код приложил
Код приложил
- Вложения
-
- ShagDvig.asm
- (9.33 КБ) 280 скачиваний
Для начала, откуда вы знаете что именно при повторной отправке?
И что должна делать ваша прога?
И что должна делать ваша прога?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Порадовало
разрешать прерывания нужно только ПОСЛЕ инициализации а не в начале, особенно до установки стека.
Код: Выделить всё
init:
sei- Сообщения: 172
- Зарегистрирован: Пн мар 19, 2012 13:04:11
Я отлаживаю в виртуальном отладчике AVR studio 5, для примера взял стандартный код, еоторый тоже приведу ниже. В отладчике, отправляется первый байт, когда я повторно захожу в подпрограмму отправки, флаг UDRE не поднимается больше. Я думаю, что это баг отладчика ar studio, или я что-то натупил? Объясните пожалуйста, уже 7 час не могу понять!
- Реклама
А ты когда повторно передаешь, проверяешь готовность передатчика? Перед передачей надо сначала дождаться передачи предыдущего.
Для начала надо зайти в руководство пользователя для 5 STUDIO и посмотреть , а вообще симмулятор ( дерьмо изначально) поддерживает ли USART для mega128/ Скорее всего нет.MS24 писал(а):Я отлаживаю в виртуальном отладчике AVR studio 5, для примера взял стандартный код, еоторый тоже приведу ниже. В отладчике, отправляется первый байт, когда я повторно захожу в подпрограмму отправки, флаг UDRE не поднимается больше. Я думаю, что это баг отладчика ar studio, или я что-то натупил? Объясните пожалуйста, уже 7 час не могу понять!
у меня небыло проблем с UARTом в симуляторе студии, а вот с SPI в TINY26 были. там флаг не сбрасывался.
в итоге, приходилось переопределять метку на пустышку, чтобы можно было хотя бы остальное отладить. а потом вернуть подпрограмму передачи /приема и отладить в железе.
в итоге, приходилось переопределять метку на пустышку, чтобы можно было хотя бы остальное отладить. а потом вернуть подпрограмму передачи /приема и отладить в железе.
I am DX168B and this is my favourite forum on internet!
- Сообщения: 209
- Зарегистрирован: Ср ноя 03, 2010 14:46:17
Господа, вопрос простейший, это скорей всего что-то я туплю сильно... Если порт контроллера настроен на ВЫВОД и в какой-нить разряд мы запишем единицу, её потом можно прочитать? порт в состоянии вывода можно прочитать вообще? 
Лень - двигатель прогресса!
В общем случае можно. Но если физически порт у вас соединён с "нулём", а вы в него запишите "1", то рискуете прочитать из него "0", а не "1". За более подробной информацией — в ДШ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 209
- Зарегистрирован: Ср ноя 03, 2010 14:46:17
спасибо за быстрый ответ. сижу вот думаю как клаву 3*4 подключить к порту, вот и вопросы возникают такие.
Лень - двигатель прогресса!
3 бита на вывод, 4 на вход. И сканируйте сколько влезет. Развязать диодами, чтобы на самом деле "1" не провалилась в "0".
Docendo discimus
- Сообщения: 209
- Зарегистрирован: Ср ноя 03, 2010 14:46:17
Тогда вот что спрошу:
1.какая по времени развязка (пауза) должна быть между переключением столбцов?
2.как полученные коды (их я понимаю будет 3 по числу столбцов) сопоставить с состоянием клавиатуры?
p.s. если есть у кого схема с развязкой на диодах покажите пожалуйста. погуглил, прежде чем спросить, хотелось бы увидеть как на практике что куда паять, а то понавешано там много чего, и подтяжки всякие и диоды...
1.какая по времени развязка (пауза) должна быть между переключением столбцов?
2.как полученные коды (их я понимаю будет 3 по числу столбцов) сопоставить с состоянием клавиатуры?
p.s. если есть у кого схема с развязкой на диодах покажите пожалуйста. погуглил, прежде чем спросить, хотелось бы увидеть как на практике что куда паять, а то понавешано там много чего, и подтяжки всякие и диоды...
Лень - двигатель прогресса!
1. Порядка 10 мсек для устранения дребезга.
2. На бумажке разрисуйте и все станет на свои места. В том числе в уме разложится по полочкам.
Диоды расставьте так, чтобы при нажатии одновременном двух и более кнопок не получалось КЗ в цепях портов.
2. На бумажке разрисуйте и все станет на свои места. В том числе в уме разложится по полочкам.
Диоды расставьте так, чтобы при нажатии одновременном двух и более кнопок не получалось КЗ в цепях портов.
Docendo discimus
- Сообщения: 209
- Зарегистрирован: Ср ноя 03, 2010 14:46:17
Разрисовал уже все, даже коды состояния в таблицу записал - систему искал, блин!!!(о какой я
) по диодам поясните подробнее...
Лень - двигатель прогресса!
Инпуты подтянуты к питанию внутренними резюками.
- Вложения
-
- key.jpg
- (8.75 КБ) 681 скачивание
Docendo discimus
- Сообщения: 209
- Зарегистрирован: Ср ноя 03, 2010 14:46:17
согласно Вашей схеме, может наоборот??? или я чего-то не понимаю.....pyzhman писал(а):3 бита на вывод, 4 на вход. И сканируйте сколько влезет. Развязать диодами, чтобы на самом деле "1" не провалилась в "0".
Лень - двигатель прогресса!
Вместо кнопок расположи на плате дорожки столбцами и строками, переводишь порт в режим вывода записываешь "0" ждешь пару мкс, устанавливаешь подтягивающий резистор для порта переводишь его в режим ввода и измеряешь время когда порт перейдет в "1" это будут десятки микросекунд. Так работает емкостная сенсорная клавиатура, те линии где время установления "1" будет больше - там есть "нажатие". перебирая строки и столбцы можно определить точки пересечения и тем самым номер нажатой кнопки.
Резистивник еще круче работает. Один источник тока, четыре резистора, два фильтра (RC или LC) и два АЦП. Данные из АЦП являются координатами точки прикосновения. 
I am DX168B and this is my favourite forum on internet!
Один АЦП mega Pic Tiny в состоянии обработать 32 кнопки по одному каналу. Нафинг нужны эти матрицы и такое количество используемых выводов , аж 7 шт.


