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

Обсуждаем контроллеры компании Atmel.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

BOB51 писал(а):и делаем соответствующую подпрограммку дрыголапа, инициирующую прерывание.
Проще прыгнуть в обработчик прерывания .
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15792
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Только именно под чистым ассемблером.
:hunger:
У автора вопроса АДУРИНА и, по всей вероятности, рамки ее функционала.
А там вызвать обработчик независимо от прерывания (без глубоковлезания в СИ)...
Пока так не изголялся на таком уровне...
:dont_know:
Реклама
Грызет канифоль
Сообщения: 278
Зарегистрирован: Сб янв 03, 2015 21:03:24

Сообщение alex68md »

У автора вопрос ПОД ЧИСТЫМ АСМ
откуда вы взяли ардуина ? это я компилил через ардуину асмовскую вставку. просо мне так удобней

Как в чистом асме записать единицу в EIFR ?

Добавлено after 1 minute 54 seconds:
Faun как опытный асемблерщик может ответит ?
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="alex68md",url="/forum/viewtopic.php?p=3637043#p3637043"]Как в чистом асме записать единицу в EIFR ?[/uquote]
Для чего? По даташит - никак. Запись единицы в биты EIFR приводит к сбросу этих битов. Запись нуля не оказывает на них никакого воздействия.
На практике я наблюдаю полное соответствие поведения МК и даташит.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15792
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

EIFR - регистр аппаратного контроля состояния прерываний по INT0/INT1
Посему и возможные для него состояния:
аппаратный взвод флага при наличии прерывания по соответствующему условию (ежли прерывание разрешено);
аппаратный сброс флага по выходу из подпрограммы обслуживания прерывания или программный сброс флага.
8)
Просто надо почитать даташит да понять чего внутри МК происходить должно.
Да разницу между программно-управляемыми и аппаратно-управляемыми ресурсами МК освоить.
:tea:
Реклама
akl
Друг Кота
Сообщения: 4473
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

[uquote="BOB51",url="/forum/viewtopic.php?p=3637117#p3637117"]...аппаратный взвод флага при наличии прерывания по соответствующему условию (ежли прерывание разрешено)...[/uquote]Уточню. Взвод флага прерывания осуществляется независимо от разрешенности оного. Условие выполнено - флаг аппаратно взводится. Программа решает сама как реагировать на это событие.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

alex68md, если бы пояснил зачем это надо, то наверняка найдется альтернативый способ решения "хотелки".
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Грызет канифоль
Сообщения: 278
Зарегистрирован: Сб янв 03, 2015 21:03:24

Сообщение alex68md »

друзья я все это понимаю (и знаю) как он взводиться и как он сбрасываеться.

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

а применение всегда найдеться - подняли флаг, сработало прерывание (хотя фактически понятно что нет). ну хотя это можно и еденицу записать на ногу прерывания.
больше ради спортивного интереса конечно.
Друг Кота
Аватара пользователя
Сообщения: 7083
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

а проект сохранился?
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Чудес не бывает, эти флаги программно только сбрасываются. Сама внутренняя логика такова.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15792
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

А почему бы и не поставить?
К примеру настроено прерывание по перепаду а сам порт предварительно выставлен как выход с уровнем 1.
Ежли аппаратно такой фокус пройдет - программа пишет туда 0 и тем самым ставит флаг в 1 (улетая в прерывание).
:roll:
Только по факту это то же самое программное прерывание, только по своей же лапке.
8)
Спутать - вполне можно с переусердия - флаги то на тех же местах, что и биты регистров порта...
:tea:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18789
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

alex68md писал(а):просто у меня какимто чюдом получилось его вручную взвести через асм код
это был обман зрения :)
alex68md писал(а):вот просто доказать атмелу что мы можем даже программно его взвести
это вряд ли :) я так понимаю, что там обычный RS-триггер: на S вход заведена логика сигналов с пина микроконтроллера, а на вход R - внутренняя шина данных. поэтому при всем желании никак вы туда ничего не запишите, ибо пишется R-вход триггера, а читается - выход триггера.
BOB51 писал(а):А почему бы и не поставить?
потому что эта "поставка" делается не записью в регистр EIFR, как требуется по условию задачи :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Грызет канифоль
Сообщения: 278
Зарегистрирован: Сб янв 03, 2015 21:03:24

Сообщение alex68md »

ладно чтото никак не получается. наверно показалоось.

а подскажите такой вопрос. в первой строчки тут все понятно :
asm volatile("sbi %0, %1" : : "I" (_SFR_IO_ADDR(PORTB)), "I" (PB5));
asm volatile("sbi %0, 0x07" : "I" (_SFR_IO_ADDR(PORTB)):);

1) для чего вообще используется секция вывод и в каких случаях? после первой :
2) почему во второй строчке после первой : в секции вывод унас определение аргумента %0 , почему не после второго : ?
Друг Кота
Аватара пользователя
Сообщения: 15792
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

ARV
Ёжли человек с перегрузу
:write: :sleep: :shock:
случайно вместо EIFR впишет
соответствующий порт ввода/вывода (или еще какого....),
а затем по утрячку при анализе вчерашнего ... поправится...
:dont_know:
Ведь от "волшебного исходника" у него следов не осталось...
:wink:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

alex68md, а не могли бы Вы сначала почитать документацию, а только после этого задавать вопросы?
Грызет канифоль
Сообщения: 278
Зарегистрирован: Сб янв 03, 2015 21:03:24

Сообщение alex68md »

Простонуб , т.е. если после этой инструкции переменная поменяет свое значение то она используется как вывод?
Ок, тогда куда писать порт, как первая или вторая строчка? У всех в примерах в нете порт как инпут, несмотря на то что по мануалу мы же меняем значение этой переменной и получается надо как во второй строчке?

Добавлено after 2 minutes 41 second:
BOB51, если это вы мне, то многократно уже озвучивалось , просто строчка sbi port,pin. Посмотрите мои ответы внимательно.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

alex68md, с точки зрения компилятора, порт - это указатель, причем константный. И его значение мы не меняем. В ассемблере меняем то, на что ссылается этот указатель.
Грызет канифоль
Сообщения: 278
Зарегистрирован: Сб янв 03, 2015 21:03:24

Сообщение alex68md »

ПростоНуб, хорошо так и как правильнЕЕ ? первая или вторая запись ?
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

alex68md, правильнее первая, так как никаких переменных, известных компилятору, и никаких регистров, используемых компилятором, в коде не изменяется.
Грызет канифоль
Сообщения: 278
Зарегистрирован: Сб янв 03, 2015 21:03:24

Сообщение alex68md »

понятно спасибо
Ответить

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