Например TDA7294

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





Текущее время: Ср апр 17, 2024 01:22:00

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7597 ]     ... , , , 329, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср мар 21, 2018 22:59:12 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Цитата:
модульное программирование и отладка сначала модулей, затем верхний уровень.

Прекрасен подход только на бумаге, в реальности полуается не так как задумывалось и всё резко становится хуже.
К тому же, подход применим только когда поставлено чёткое Т.З. в деталях и изменений не предвидится.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср мар 21, 2018 23:47:14 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Ср окт 15, 2014 12:45:46
Сообщений: 117
Откуда: Анапа
Рейтинг сообщения: 0
Не могу понять почему протеус криво компонует исходник? При пошаговом выполнении вылетает "No source code in this line". Или я что-то делаю не так.


Кстати, а по адресу 0х0046 не должго быть какого-то прерывания или команды RETI, а так получается адрес никуда, а просто так на прерывание без вызова протеус не даст выйти, насколько мне известно

СпойлерИзображение

_________________
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 22, 2018 06:55:43 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 3
...

С МК AVR я начал работать с 2007 года. Сначала писал на асме, затем перешел на си. В студии работаю с самого начала. В протеусе неоднократно пробовал работать. В итоге на последней попытке плюнул и забил на протеус.
С одной стороны протеус как бы удобен тем, что накидал схему и можно эту схему просимулировать. Такой подход может быть и удобен на небольших схемах.
Приведу в качестве примера один свой проект. Блок управления термоформовочным станком. Состав: МК, регистры ввода-вывода 74HC165 - 3 шт, 74HC595 - 2 шт. 24 входа, 16 выходов. Символьный дисплей 20х4. Матричная клавиатура. "Сейчас мы со всей этой хренью попытаемся взлететь". Я попытался как-то сделать на протеусе. Компьютер так завис на этой схеме, что я прекратил дальнейшие попытки работать в протеусе и весь проект отлаживал как и прежде в студии.
Да, непросто. Но если приноровиться, то все не так уж и сложно.
Алгоритм простой. Как работают микросхемы регистры ввода-вывода нам прекрасно известно, тем более, что SPI аппаратный. Написали программный модуль, сделали тестовый проект, проверили в железе. Если что, отладили в симуляторе. Теперь этот модуль можно смело выкидывать из головы. Беремся за следующий модуль, скажем, символьный дисплей. Тут все аналогично. Я с такими дисплеями работаю без флага ожидания. Только на запись. Проверили работоспособность, что-то вывели для проверки. Этот пункт теперь тоже выкидываем из головы. Матричная клавиатура. Написали модуль, сделали тестовую программу. Вывели коды кнопок на дисплей, выкинули из головы. Дальше остается только сама программа. Алгоритм работы самого устройства в целом.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 22, 2018 10:17:48 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Ср окт 15, 2014 12:45:46
Сообщений: 117
Откуда: Анапа
Рейтинг сообщения: 0
Спор ни о чем. С таким же результатом можно спорить что лучше ВАЗ 2102 или 2103. Если хотите продолжать, проще создать ветку "Что круче:........ или ..........", и там разводить срач.

_________________
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 22, 2018 12:45:35 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
2 Jetetex когда то помогло в случае "No source code in this line" - разместил файл протеуса там где исходник, правда на Си это было
Цитата:
Если что, отладили в симуляторе

хм. AVR Studio 4.19 хэлп:
Simulator Modules
USI is not supported.
TWI is not supported.
Analog Comparator is not supported.
Analog input is not supported.
лучше эмулятор имхо, правда у Atmel было дорого всегда, но народ извращался - HappyJTAG2 JTAG и ISP для AVR:
http://microsin.net/programming/avr/happyjtag2.html
з.ы. в коментах есть чтоб AVR Studio не падала


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 22, 2018 12:55:27 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Цитата:
модульное программирование и отладка сначала модулей, затем верхний уровень.

Прекрасен подход только на бумаге, в реальности полуается не так как задумывалось и всё резко становится хуже.
К тому же, подход применим только когда поставлено чёткое Т.З. в деталях и изменений не предвидится.


Вполне нормально получается - подход древний, с самого рождения ассемблера применяется.
Другое дело, что модульная (многофайловый проект) программа несколько специфична в отношении написания самих модулей и правил работы с ними. О многих приемах можно только догадываться или своими "шишками" осваивать на практике.
Или вспоминать "давно забытое" старое для I8080/Z80/I8086.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 22, 2018 21:33:41 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Цитата:
Дальше остается только сама программа. Алгоритм работы самого устройства в целом.

А потом оказывается что эти самые модули которые выбросили из головы начинают конфликтовать друг с другом. Где-то одинаковые регистры задействовали, где-то выходит за границу выделенной памяти и портит соседний участок...
Такой подход предполагает очень тщательное документирование каждого модуля, согласование всех модулей в рамках проекта и это отбирает по времени и ресурсам едва ли не больше чем на реализацию самой программы. И самое ужасное что это позволяет только УМЕНЬШИТЬ количество очевидных ошибок.

Тогда как метод научного(не полностью же рандомно писать программу) тыка с последующей симуляцией работает гораздо быстрее.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 22, 2018 22:17:04 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Ср окт 15, 2014 12:45:46
Сообщений: 117
Откуда: Анапа
Рейтинг сообщения: 4
Дело было вечером, делать было нечего... решил я я по свободе перечитать тему с самого начала, и вот что заметил: темы повторяются каждые 10-15 страниц. И в попытке как-то систематизировать сделал что-то вроде навигации или содержания. Получилось или нет, судить Вам:

Руководство по AVR на русском
http://asm-avr.narod.ru/?oprd=1

Про стек тут:
Спойлер-

http://www.radiokot.ru/start/mcu_fpga/avr/08/
viewtopic.php?p=138709#p138709

Кнопки, клавиатуры
Спойлер-
http://asm-avr.narod.ru/?oprd=1

...к меге 8 прикручена матричеая клава на порт С...
viewtopic.php?p=157483#p157483

- фиксировать длительное и короткое нажатие кнопки
viewtopic.php?p=409842#p409842

- избавится от дребизга клавиатуры.
viewtopic.php?p=323224#p323224

- собрать матричную клавиатуру и опрашивать ее 32ой мегой.
viewtopic.php?p=727232#p727232


Прерывания. таймеры
Спойлерhttp://asm-avr.narod.ru/?oprd=1
-Нужно запустить 16 битный таймер, и в определенный момент его считать и сбросить. (ATTiny2313)
viewtopic.php?p=75446#p75446

- прерывания правильно отрабатываются, но вот частота срабатывания не совпадает с расчётной
viewtopic.php?p=408405#p408405

-чтоб контроллер установил порт В в высокий уровень и через 2 сек в низкий уровень и на этом всё прекратилось
viewtopic.php?p=83599#p83599

- происходит прерывание по завершению приема UART, МК перегружается или...
viewtopic.php?p=99533#p99533

- прерывание таймера компаратора - 1 раз в секунду, прогрмма работает 2 минуты и 7 секунд, после чего...
viewtopic.php?p=154743#p154743

- Как в асме организовать смещение влево при записи в ОЗУ?
viewtopic.php?p=167822#p167822

- надо чтоб после включения света он погорел чуть чуть и потух, микросхема ATtiny2313
viewtopic.php?p=171248#p171248

- Помогите пожалуйста с иницаализацией таймера мк AtMega2561
viewtopic.php?p=187197#p187197

- как можно управлять скоростью счета таймера 1 в ATtiny 2313 и числом до которого он считает
viewtopic.php?p=314566#p314566

- при выходе из прерывания данные с АЦП затираются данными до прерывания
viewtopic.php?p=182416#p182416

- attiny12 у нее одно внешнее прерывание, я подключил две кнопки
viewtopic.php?p=330934#p330934

- Нужна помощь по таймеру. Например, делаю задержку
viewtopic.php?p=338772#p338772

- делаю типа секундомера кторый пока считает...
viewtopic.php?p=478704#p478704

- при включении авр уходил в сон, при внешнем прерывании просыпался,
viewtopic.php?p=610378#p610378

- как грамотнее всего В КОНКРЕТНОМ МЕСТЕ программы запустить таймер
viewtopic.php?p=713603#p713603



РОНы и Регистры ввода/вывода
Спойлерhttp://asm-avr.narod.ru/?oprd=1

- ициализировать пару регистров
viewtopic.php?p=188687#p188687

- как присвоить значение отдельным битам порта содержимое какой-нибудь переменной?
viewtopic.php?p=488698#p488698

- как в асме выставлять/снимать один бит порта не изменяя остальных?
viewtopic.php?p=186992#p186992

- часто встречается загрузка регистров примерно таким способом:
viewtopic.php?p=190666#p190666

- прочитать бит по одному адресу из пространства ввода-вывода (I/O space) и записать его по другому адресу и номеру разряда
viewtopic.php?p=193277#p193277

- почему в блоке «Переключение светодиода» в первой строчке PINB а не PORTB
viewtopic.php?p=223372#p223372

- запрограмировать отдельные биты в РОНе, но чтобы другие остались прежними.
viewtopic.php?p=323185#p323185

- ATmega48 - не могу записать в OCR0A, OCR0B, OCR2A!
viewtopic.php?p=338837#p338837

- инвертировать два (младших) разряда в регистре ввода-вывода?
viewtopic.php?p=372935#p372935

- запись в FLASH. Нужно её считать и запихнуть в регистр
viewtopic.php?p=376073#p376073

- Не могу проверить порт B attiny2313
viewtopic.php?p=484658#p484658


математика
Спойлер-
http://asm-avr.narod.ru/?oprd=1

- код умножает двухбайтовое число на 4.875
viewtopic.php?p=377898#p377898

- декремент 16-ти битного числа,
viewtopic.php?p=319684#p319684

-преобразование 16-битного двоичного слова в пять двоично-десятичных (три байта)?
viewtopic.php?p=524894#p524894


Разное
Спойлер-
http://asm-avr.narod.ru/?oprd=1

- Вопрос в следующем, пришел тот злащасный день когда мне понадобилась работа с не целыми числами типа 1,5 в ассемблере, ести ли какие либо стандартные варианты работы с такими числами или нужно чегото мудрить, если мудрить то как???
viewtopic.php?p=56246#p56246

- почему не получается вызывать подпрограммы
viewtopic.php?p=89497#p89497

- подставляю файл с описанием регистров m64def.inc при ассеблирование у меня вылетает ошибка
viewtopic.php?p=90290#p90290

-передать некое число по одному пину но получается огромный код!
viewtopic.php?p=90672#p90672

- хочу подружить мегу64 и ммс карту 32метра (меньше не нашёл хотя устроила бы и 8метровая)
viewtopic.php?p=91055#p91055

- Возникла непонятка с косвенной адресацией это так понимаю нухно только для парных регистров X,Y,Z?
viewtopic.php?p=93091#p93091

- пытаюсь работать с AT45DB161 (SO8) MEG-ой 64-ой подключил флэшку на штатный SPI контроллера
viewtopic.php?p=96506#p96506

- может ли кто поделиться драйвером на ЖКИ (на базе контроллера HD44780)
viewtopic.php?p=97053#p97053

- Хочу тахометр на МК для вентилятора ПК.
viewtopic.php?p=97359#p97359

- идеи по поводу сложения чисел в доп. коде в 24 разрядный регистр(8x3)
viewtopic.php?p=121289#p121289

- mega128. столкнулся с такой проблемой, в АВРстудио при копиляции на команду OUT DDRG,R16 пишет error: Operand 1 out of range: 0x64
viewtopic.php?p=126549#p126549

- Мне надо записать байт из регистра данных SPI в массив
viewtopic.php?p=141316#p141316

- Мне нужен код прошивки для AVR для общения с жёстким диском
viewtopic.php?p=146994#p146994

- Пытаюсь освоить Mega8535. Для начала решил помигать светодиодами, при обращении к одной и той же подпрограмме два и более раза подряд програмуля не работает
viewtopic.php?p=150761#p150761

- для датчика ds18b20? А то у меня никак не получается.
viewtopic.php?p=449819#p449819

- Вопрос заключается в динамической индикации
viewtopic.php?p=642334#p642334

- работала в железе на ATtiny2313, появилась необходимость портировать или типа того эту прогу на ATmega168
viewtopic.php?p=536028#p536028

- чтобы в подпрограмме содержание регистра уменьшалось ... устанавливало значение и выполняло ещё ряд действий?
viewtopic.php?p=491490#p491490

- минимальное число циклов может занять программный SPI?
viewtopic.php?p=501314#p501314

- на дисплей сразу выдаётся цифра "1", хотя
viewtopic.php?p=491232#p491232

- у меня динамическая индикация
viewtopic.php?p=484674#p484674

- У меня ещё вопрос по условным переходам
viewtopic.php?p=377868#p377868

- при попадании в определенный диапазон чисел я попадал на метку иначе дальше
viewtopic.php?p=184420#p184420

- почему огонек всевремя бежит, а не показывает комбинацию 10101010 по истечении 3х пробегов
viewtopic.php?p=186392#p186392

- ...захотел сделать сохранение данные в ЕЕПРОМ
viewtopic.php?p=196784#p196784

- начал изучать асм, добрел до массивов и вот не могу понять
viewtopic.php?p=217320#p217320

цикл из 8 обработок, в котором в зависимости от результата в регистре флагов
viewtopic.php?p=290413#p290413

- вопрос относительно дизассемблеров для AVR.
viewtopic.php?p=309445#p309445

- хочу напомнить что вектора у меги16 - 2-х словные и имеют только четные адреса $0002, $0004, $0006 и т.д., просто писать reti
viewtopic.php?p=317619#p317619

-


USART:
Спойлерhttp://asm-avr.narod.ru/?oprd=1

- Нужно использовать USART1 в atmega64
viewtopic.php?p=238046#p238046

- сделал такую маленькую программку, чтобы разобраться с юсартом.(мега16).
viewtopic.php?p=643510#p643510

- суть такая UART должен работать по прерыванию при приеме данных, а ...
viewtopic.php?p=239594#p239594

- Не вызывается прерывание по опустошению UDR
viewtopic.php?p=716868#p716868

- Хочу разобраться с этим USART. Мега 16.
viewtopic.php?p=316881#p316881


Полезная литература
Спойлерhttp://asm-avr.narod.ru/?oprd=1

    Ю.Ревич "Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера"



Ну как-то вот так :write:

_________________
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 23, 2018 05:44:30 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Alexeyslav писал(а):
...

Категорически не соглашусь с вами! Ассемблер изначально предполагает тщательное планирование. И документирования в том или ином виде. Написание отдельных документов, комментарии, рисование алгоритмов. А также следование определённым правилам. Стиль и свод правил каждый программист вырабатывает сам. Есть и общепринятые правила.
Регистры. Нужно сразу и жестко, раз и навсегда определить, как и какие регистры использовать. Глобальные, часто используемые, служебные, временные.
Модульность. Нет ничего хорошего в том, что вся программа представляет из себя огромную простыню. Это как минимум затрудняет чтение программы. Программа должна быть разбита на логические блоки. В идеале следует добиться следующего: каждый модуль должен быть максимально самостоятельным. У такого подхода следующие преимущества:
В разы ускоряется создание проектов. Проекты собираются как конструктор из кубиков-модулей.
Чтобы не было проблем с регистрами нужно следовать правилам и тщательно отслеживать регистры в каждом модуле. Сохранять и восстанавливать контекст при необходимости.
Память. Максимально исключить ошибки можно единственным способом: использование не абсолютных адресов, а меток. И, естественно, тщательно проверять все операции с памятью, чтобы не выйти за пределы диапазонов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 23, 2018 09:09:04 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Для работ под ассемблером есть два варианта
полная проработка программной модели "с нуля" для малой прикладной задачи
и
модульная сборка из заранее подготовленных библиотек для больших проектов.
Что не исключает и комбинированного стиля.
При модульном варианте каждый из модулей получает дополнительное обрамление функциями хранения используемых ресурсов и обязательными правилами генерации имен используемых ресурсов.
Особых общих правил не имеется.
Примеры из "полнофункциональных" компиляторов (имеющих в составе ассемблер, линкер и библиотекарь) для avrasm2 (как и для c51asm от атмела для mcs51) не применимы из-за специфики отсутствия линкера и библиотекаря в самом составе компилятора.
Однако работа в любом из вариантов вполне реальна.
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 23, 2018 09:29:51 
Встал на лапы

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03
Сообщений: 106
Откуда: Гродно, BY
Рейтинг сообщения: 0
В avrasm2 для полного счастья не хватает локальных меток.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 23, 2018 17:22:55 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Ср окт 15, 2014 12:45:46
Сообщений: 117
Откуда: Анапа
Рейтинг сообщения: 0
Всем здрасте. Собираюсь в проекте использовать ШИМ, но где-то вроде как читал, что регистры сравнения OCR не могут иметь крайние значения (0 и 255). Так ли это???

Симулятор не ругается, но как бы потом в железе не возникло проблем. ШИМ планируется на вкл/выкл, + кнопка без фиксации на функцию вкл/выкл этого безпредела.

Attiny 13, Proteus 8, 9,6 МГц, /8 установлено.
Код:
Спойлер
Код:
;==============
; Main.asm file generated by New Project wizard
;
; Created:   Чт авг 10 2017
; Processor: ATtiny13, 9.6 MHz
; SKDIV/8 programed
; Compiler:  AVRASM (Proteus)
;
;==============

;==============
; DEFINITIONS
;==============
.def temp=r16
.def temp1=r17
.def temp2=r18
.def flag=r19         ; регистр пользовательских флагов
.def count0=r20         ; вспомогательный счетчик0 для отсчета времени
.def count1=r21         ; вспомогательный счетчик1 для отсчета времени
.def shift=r22

.equ on=0         ; признак нажатия кнопки
.equ tA=1         ; флаг прерывания А
.equ tB=2         ; флаг прерывания В
;==============
; VARIABLES
;==============
.dseg
readPin: .byte 1

.cseg


;==============
; RESET and INTERRUPT VECTORS
;==============
.org 0
   rjmp RESET         ; Reset Handler
.org 1
   rjmp EXT_INT0      ; IRQ0 Handler
.org 2
   rjmp PC_INT0         ; PCINT0 Handler
.org 3
   rjmp TIM0_OVF      ; Timer0 Overflow Handler
.org 4
   rjmp EE_RDY          ; EEPROM Ready Handler
.org 5
   rjmp ANA_COMP       ; Analog Comparator Handler
.org 6
   rjmp TIM0_COMPA      ; Timer0 CompareA Handler
.org 7
   rjmp TIM0_COMPB      ; Timer0 CompareB Handler
.org 8
   rjmp WATCHDOG      ; Watchdog Interrupt Handler
.org 9
   rjmp ADC_conv       ; ADC Conversion Handler



 ;RESET         ; Reset Handler
 EXT_INT0:      ; IRQ0 Handler
 PC_INT0:      ; PCINT0 Handler
 TIM0_OVF:      ; Timer0 Overflow Handler
 EE_RDY:       ; EEPROM Ready Handler
 ANA_COMP:       ; Analog Comparator Handler
 ;TIM0_COMPA:      ; Timer0 CompareA Handler
 ;TIM0_COMPB:      ; Timer0 CompareB Handler
 WATCHDOG:      ; Watchdog Interrupt Handler
 ADC_conv:       ; ADC Conversion Handler
reti

RESET:
      ldi r16,RAMEND          ;инициализация стека
      out SPL, r16
      ldi temp,0b11111101      ;установка портов на выход
      out DDRB,temp
      clr temp            ;сброс портов в лог "0"
      out portb,temp
;==============
;инициализация таймеров
;==============
      ldi temp,(1<<WGM00)|(1<<WGM01)|(1<<COM0A1)   ; установка режима Fast PWM
      out TCCR0A,temp
      ldi temp,(1<<CS01)|(1<<CS00)         ; предделитель таймера на 64 (9МГц/8/64=18750 Гц)
      out TCCR0B,temp
      ldi temp,(1<<OCIE0A)            ; разрешить прерывание по совпадению A |(1<<OCIE0B)   
      out TIMSK0,temp
      ldi temp,(1<<OCF0A)|(1<<OCF0B)         ; Установка флагов прерываний
      out TIFR0,temp
      ldi temp,0               ; регистр сравнения А, ШИМ
      out OCR0A,temp
      ldi temp,250               ; регистр сравнения В, для таймера
      out OCR0B,temp
      ldi temp,0               ;очистка счетного регистра
      out TCNT0,temp

   sei

rjmp main


;==============
;      Прерывания
;==============
TIM0_COMPA:
reti

TIM0_COMPB:
      ldi temp,tB      ; установить флаг события "сброс по переполнению B"
      in temp,OCR0A      ; загрузить значение регистра сравнения ШИМ в переменную
      inc temp         ; инкремент значения ШИМ
      breq exit_compA      ; если =0, значит достигли максимального значения, выходим
      out OCR0A,temp      ; иначе загрузить новое значение в ШИМ.
exit_compA:
    reti

;==============
;      CODE SEGMENT
;==============

main:
     
     
exit_main:
  rjmp main
     
     

_________________
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 23, 2018 17:31:59 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Зачем
ldi temp,tB ,если потом сразу
in temp,OCR0A ?

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 23, 2018 18:12:42 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Ср окт 15, 2014 12:45:46
Сообщений: 117
Откуда: Анапа
Рейтинг сообщения: 0
Позже все операции планирую вынести из прерывания и оставить только установку флага. А обрабатывать в основном цыкле.

_________________
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.


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

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Всем здрасте. Собираюсь в проекте использовать ШИМ, но где-то вроде как читал, что регистры сравнения OCR не могут иметь крайние значения (0 и 255). Так ли это???...

А подумать ... ?
0 - не имеет смысла, а 255 в принципе вполне применимо, только это то же самое, что и прерывание по переполнению.
Т.Е. ШИМ там не будет - непрерывный сигнал либо 0 либо 1.
8)
Кстати... В Кривом Рогу раньше неплохая контора по кассовой технике была - "резонанс" называется.
Неплохие аппараты делала...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 23, 2018 19:47:18 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Ср окт 15, 2014 12:45:46
Сообщений: 117
Откуда: Анапа
Рейтинг сообщения: 0
Цитата:
непрерывный сигнал либо 0 либо 1.



Это да. Так даже лучше. Сомнения именно в том - не возникнет ли каких то конфликтов на контроллере.
Смысл в том, что бы по нажатию на кнопку включить одной ногой блок питания, после этого плавно зажечь светодиодные ленты. После повторного нажатия сделать все наоборот, т.е. сначала плавно потушить свет, а потом выключить блок питания.
Сразу отвечу - блок питания на 250 Ватт, на котором висит около 40 метров ленты, поэтому и нужно его отключить что бы не жрал лишнего.

Цитата:
Кстати... В Кривом Рогу раньше неплохая контора по кассовой технике была - "резонанс" называется.
Неплохие аппараты делала...


Не знаю, но название знакомое. :dont_know:

_________________
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 23, 2018 19:55:00 
Встал на лапы

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03
Сообщений: 106
Откуда: Гродно, BY
Рейтинг сообщения: 0
На выходе ШИМа не непрерывный сигнал в одном из состояний то ли 0, то ли 255. В каком не помню. Принудительно отключал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 23, 2018 20:12:17 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Ср окт 15, 2014 12:45:46
Сообщений: 117
Откуда: Анапа
Рейтинг сообщения: 0
Протеус в осцилографе показывает именно непрерывный сигнал - при OCRA=0 низкий, а на OCR0A=255 высокий. Именно это меня немного и смущает, ведь ему каг бы надо время на переключение пина, а при 0 он должен одновременно и включить и выключить ногу :shock: . Просто нехоцца без особой необходимости увеличивать код сравнениями. Оно в общем то и не критично, но все таки..

_________________
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт мар 27, 2018 13:31:22 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср авг 17, 2011 23:12:30
Сообщений: 538
Рейтинг сообщения: 0
Кто подскажет как сбросить флаг DOR в UART, именно с помощью команд,а не на словах как пишут обычно:Бит DOR очищается (сбрасывается в 0) когда данные приняты и пересланы в UDR.,лично у меня не получаеться его скинуть,почему то когда он устанавливается никак не прочитать данные.(((


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт мар 27, 2018 14:26:21 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Ср окт 15, 2014 12:45:46
Сообщений: 117
Откуда: Анапа
Рейтинг сообщения: 0
если смотреть по ATMega16, то никак. Он доступен только для чтения. В даташите на Вашего таракана посмотрите на UCSRA (в 16). под табличкой регистра написаны буквы W и R. Они обозначают возможности регистра:
R (read)- чтение
W (write)- запись
W/R (read/write)- чтение/запись

Изображение

PS: с USART не знаком, но в ДШ написано, этот бит установлен пока буфер приема (UDR) не будет СЧИТАН.

PPS: Люди добрые, когда вы, крича громко хелп ми научитесь нормально оформлять вопрос? Не понятно какой контроллер, не известен код программы, нет никакой информации, от которой можно оттолкнутся для решения ВАШЕГО вопроса. Здесь нет телепатов


Вложения:
Без имени.jpg [11.04 KiB]
Скачиваний: 754

_________________
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.


Последний раз редактировалось Jetetex Вт мар 27, 2018 15:03:00, всего редактировалось 1 раз.
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7597 ]     ... , , , 329, , , ...  

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


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

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


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

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


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