Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт июл 29, 2025 22:05:00

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 82, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн мар 28, 2011 12:52:56 
Вымогатель припоя
Аватар пользователя

Карма: 2
Рейтинг сообщений: 3
Зарегистрирован: Чт июн 11, 2009 07:25:24
Сообщений: 623
Откуда: СПб
Рейтинг сообщения: 0
Питанием решилось. Строка ничего не дала.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 05, 2011 19:06:53 
Первый раз сказал Мяу!

Зарегистрирован: Пт фев 18, 2011 20:37:34
Сообщений: 31
Рейтинг сообщения: 0
Здравствуйте. Возникла проблема при работе с DS18B20. В железе датчик не инициализируется (датчик рабочий, проверял схему и с новым - не работает). В протеусе все пашет, сверился по документации, интервалы времени правильные. Подскажите в чем может бы загвоздка? Код и схему в протеусе прилагаю


Вложения:
Комментарий к файлу: Проект в студии и схема в протеусе
DS18B20.zip [70.09 KiB]
Скачиваний: 183
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 06:50:23 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс фев 27, 2011 01:01:11
Сообщений: 86
Откуда: Республика Крым
Рейтинг сообщения: 0
Уважаемые коты!
Что скажете по поводу применения 4 новых команд, описанных в http://www.atmel.com/dyn/resources/prod ... oc0856.pdf , а именно: XCH Z,Rd; LAS Z,Rd; LAC Z,Rd и LAT Z,Rd. Судя по описанию - команды очень даже полезные. Дизассемблер студии 4.18 SP3 их понимает, а вот ассемблер - нет. (Отсутствует подсветка и говорит, что неизвестная команда). Какие контроллеры работают с этими инструкциями?

_________________
Опыт и мудрость приходят с годами... К некоторым годы приходят одни...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 09:14:34 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
VirZh писал(а):
Что скажете по поводу применения 4 новых команд, описанных в http://www.atmel.com/dyn/resources/prod ... oc0856.pdf , а именно: XCH Z,Rd; LAS Z,Rd; LAC Z,Rd и LAT Z,Rd. Судя по описанию - команды очень даже полезные. Дизассемблер студии 4.18 SP3 их понимает, а вот ассемблер - нет. (Отсутствует подсветка и говорит, что неизвестная команда). Какие контроллеры работают с этими инструкциями?
... ИМХО если Atmel не вносит их в AVR Studio, наверное на то есть причины ... Например тест команды LAC Z,R17 на atmega8 дал результат dec YH dec ZL, а не то, что описано в руководстве ....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 13:51:51 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс окт 10, 2010 17:43:48
Сообщений: 362
Откуда: Воронеж
Рейтинг сообщения: 0
уважаемые коты!
программа является моим собственным вариантом бегущего огонька из обучалки: 4 программы индикации светодиодов переключаются между собой кнопкой на INT0.
один таймер отсчитывает время между переключениями светодиодов 200мс, а другой таймер включается по внешнему прерыванию и отсчитывает 250мс (программный антидребезг), после чего обнуляется и отключается.

проблема в том, что программа переключается периодически через одну. неужели задержки в 250мс мало или я все-таки где-то в тексте программы облажался?


Вложения:
runfire_with_choose.asm [6.57 KiB]
Скачиваний: 245
Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 13:57:31 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19736
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Necroteeth писал(а):
проблема в том, что программа переключается периодически через одну. неужели задержки в 250мс мало или я все-таки где-то в тексте программы облажался?

Прерываение по уровню или фронту/спаду (или по обоим)?

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 14:38:43 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс окт 10, 2010 17:43:48
Сообщений: 362
Откуда: Воронеж
Рейтинг сообщения: 0
Gudd-Head писал(а):
Necroteeth писал(а):
проблема в том, что программа переключается периодически через одну. неужели задержки в 250мс мало или я все-таки где-то в тексте программы облажался?

Прерываение по уровню или фронту/спаду (или по обоим)?

по спаду


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 14:41:12 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19736
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Necroteeth писал(а):
по спаду

Перед самым выходом из прерывания флаг прерывания сбрасываете?

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 14:58:34 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс окт 10, 2010 17:43:48
Сообщений: 362
Откуда: Воронеж
Рейтинг сообщения: 0
Gudd-Head писал(а):
Necroteeth писал(а):
по спаду

Перед самым выходом из прерывания флаг прерывания сбрасываете?

я не совсем понял... вы имели в виду GIFR что ли?
как у меня сделано: происходит прерывание INT0, при входе в его обработчик локально запрещается INT0, глобально разрешается все и запускается таймер Timer0 путем установки в TCCR0 значения прескалера.
зацикливаемся, пока не выставится регистр TimeIsOver в 1. это происходит в прерывании таймера 0, из которого мы возвращаемся в обработчик прерывания INT0 через reti.
после этого на единицу увеличивается переменная-счетчик Counter, показывающая текущую программу индикации, затем останавливается Timer0 и через reti возвращаемся в основной цикл.


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 15:04:34 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19736
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Necroteeth писал(а):
я не совсем понял... вы имели в виду GIFR что ли?

Да, его. Перед выходом из обработки прерывания по INT0 вы сбрасываете INTF0 (записью в него лог. "1")???

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 16:14:06 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Necroteeth писал(а):
я не совсем понял... вы имели в виду GIFR что ли?
как у меня сделано: происходит прерывание INT0, при входе в его обработчик локально запрещается INT0, глобально разрешается все и запускается таймер Timer0 путем установки в TCCR0 значения прескалера.
зацикливаемся, пока не выставится регистр TimeIsOver в 1. это происходит в прерывании таймера 0, из которого мы возвращаемся в обработчик прерывания INT0 через reti.
после этого на единицу увеличивается переменная-счетчик Counter, показывающая текущую программу индикации, затем останавливается Timer0 и через reti возвращаемся в основной цикл.

Вот это глум :shock: :shock: :shock:
сам то-то понял что хотел сделать?

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 18:32:41 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс окт 10, 2010 17:43:48
Сообщений: 362
Откуда: Воронеж
Рейтинг сообщения: 0
Gudd-Head писал(а):
Necroteeth писал(а):
я не совсем понял... вы имели в виду GIFR что ли?

Да, его. Перед выходом из обработки прерывания по INT0 вы сбрасываете INTF0 (записью в него лог. "1")???

вот это обработчик прерывания INT0:
Код:
Choose:         ldi Shift,0
            ldi Temp,0b00000000         ;запрещаем INT0
            Out GICR,Temp
            sei
            ldi TimeIsOver,0
            ldi TEMP,0b00001101         ;запуск таймера антидребезга
            out TCCR0,TEMP

Loop:         cpi TimeIsOver,1         ;ждем срабатывания таймера
            brne Loop
            
            inc Counter

            ldi TEMP,0               ;остановка таймера антидребезга
            out TCCR0,TEMP            


            reti

сопутствующий обработчик прерывания таймера0:
Код:
Delay:         ldi TimeIsOver,1         ;выставляем флаг того, что таймер антидребезга досчитал до конца и возвращаемся в обработчик прерывания INT0
            reti               


при симуляции я вообще не заметил никаких телодвижений со стороны регистра GIFR. выставлял вручную на пине INT0 в единицу - регистр не шелохнулся, и даже когда единицу сбросил (т.е. просимулировал отрицательный фронт сигнала) - регистр все равно никак не изменился, хотя программный указатель скакнул на метку обработчика прерывания. не могли бы вы тогда объяснить суть установки единицы в бит INTF0? что при этом происходить будет и надо ли потом эту единицу оттуда убивать?

GP1 писал(а):
Вот это глум
сам то-то понял что хотел сделать?

я не глумился ни над кем. выше я выкладывал полный листинг программы с комментариями. а это всего лишь текстовое дополнение к нему было


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 19:01:34 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Necroteeth писал(а):
я не глумился ни над кем. выше я выкладывал полный листинг программы с комментариями. а это всего лишь текстовое дополнение к нему было


я не о том, к чему такие извраты с программой?
кто вас вообще научил делать временные задержки в прерывании?

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 19:10:05 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19736
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Necroteeth писал(а):
при симуляции я вообще не заметил никаких телодвижений со стороны регистра GIFR.

Верить симуляции — дело десятое.
Necroteeth писал(а):
выставлял вручную на пине INT0 в единицу - регистр не шелохнулся, и даже когда единицу сбросил (т.е. просимулировал отрицательный фронт сигнала) - регистр все равно никак не изменился, хотя программный указатель скакнул на метку обработчика прерывания.

А как по-вашему, что произошло? Я выскажу свою версию: ядро зафиксировало спад на INT0 и выставился флаг. Т.к. глобально и локально прерывание разрешено, произошёл переход по соответствующему вектору с аппаратным снятием флага прерывания, которого вы не увидели.
Necroteeth писал(а):
не могли бы вы тогда объяснить суть установки единицы в бит INTF0? что при этом происходить будет

Суть: вы нажали кнопку, вошли в прерывание, флаг сбросился. Прерывания глобально запретились. Но из-за дребезга у вас произошёл ещё один спад и выставился флаг, но прерывания не произошло, т.к. оно запрещено глобально. Вы выходите из обработчика прерывания, глобально разрешаете прерывания и... Видите установленный флаг. И естессно, ещё раз обрабатываете то же самое прерывание, но теперь уже из-за дребезга.
Necroteeth писал(а):
и надо ли потом эту единицу оттуда убивать?

Перечитайте даташит и то, что я уже писал.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 19:19:45 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс окт 10, 2010 17:43:48
Сообщений: 362
Откуда: Воронеж
Рейтинг сообщения: 0
GP1 писал(а):
я не о том, к чему такие извраты с программой?
кто вас вообще научил делать временные задержки в прерывании?

никто меня не учил. морщу попу сам, методом проб и ошибок.
я не утверждал, что делал это правильно. просто считал, что так удобнее отсчитать нужное время, которое в интернетах определяют как 200-250мс.
Gudd-Head, спасибо за консультацию. пожалуй, и правда попробую поупражняться в техническом английском. надеюсь, это поможет


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 19:28:05 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Necroteeth писал(а):
... которое в интернетах определяют как 200-250мс.
...

даже самая х..я китайская кнопка успокаивается за 100-120 мс, в 99,9% достаточно 50-60 мс для подавления дребезга.
а временные задержки в прерывании не делай никогда, ты просто крадешь производительное время у процессора, за это время он столько полезного сможет сделать, ну, да я думаю, ты и сам до этого дойдешь, когда замутишь что-нибудь по-серьезней мигалки.
удачи.

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 19:31:59 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19736
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
GP1 писал(а):
даже самая х..я китайская кнопка успокаивается за 100-120 мс, в 99,9% достаточно 50-60 мс для подавления дребезга.

Подтверждаю. На работе как-то игрался с тактовой кнопкой и цифровым осциллом, м.б. даже картинки остались.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 20:56:19 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс окт 10, 2010 17:43:48
Сообщений: 362
Откуда: Воронеж
Рейтинг сообщения: 0
хорошо. а тогда такой вопрос - как грамотные люди осуществляют эту задержку на ассемблере?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 21:13:43 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
существуют различные способы, как правило конкретный метод определяется задачей, скажем определить факт нажатия - это одно, а различить короткое/длинное нажатие это совсем другое.
чаще всего кнопки опрашивают по прерываню таймера, но попадаются и по внешним прерываниям, но реже.

_________________
Чем дальше, тем больше становлюсь занудой...
Изображение


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт апр 07, 2011 21:14:25 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19736
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Necroteeth писал(а):
хорошо. а тогда такой вопрос - как грамотные люди осуществляют эту задержку на ассемблере?

Также, как и не на асемблере. Только не в прерывании.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 82, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y