???
Математика на уровне МГУ

Показано с 1 по 25 из 78

Тема: Скан-код POWER

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Офицер Форума Аватар для Zorge
    Регистрация
    06.03.2004
    Адрес
    Байконур
    Возраст
    43
    Сообщений
    2,893
    Images
    10

    Re: Скан-код POWER

    Запись того же значения бита в управляющий регистр, что там и было - никак не влияет ни на одну периферийную железяку AVR-ки.
    А вот вложенные прерывания - на архитектуре AVR 8-bit лучше не делать - полностью согласен с LeonT.
    Внутри прерываний - только циклы задержки и ничего больше - все равно никто не прервет. Но делать нужно все быстро и коротенько - чтобы ни на кого другого сильно не влиять.
    Цитата Сообщение от LeonT
    (кстати, команда RETI отличается от команды RET только воздействием на флаг I, это иногда можно использовать, например если при выходе из прерывания нужно, чтобы в дальнейшем прерывания оставались запрещены)
    А не наоборот? RETI разрешает прерывания, а RET - флаг прерываний не трогает вообще. Или это и имелось в виду?
    // 地辟于丑 - Земля рождена в час Быка

  2. #2
    Зашедший
    Регистрация
    29.10.2010
    Возраст
    63
    Сообщений
    8

    Re: Скан-код POWER

    Цитата Сообщение от Zorge Посмотреть сообщение
    А вот вложенные прерывания - на архитектуре AVR 8-bit лучше не делать - полностью согласен с LeonT.
    Внутри прерываний - только циклы задержки и ничего больше - все равно никто не прервет. Но делать нужно все быстро и коротенько - чтобы ни на кого другого сильно не влиять.
    Вот это очень спорное высказывание.
    Вызов прерываний из другого прерывания допускается в случае крайней необходимости, например в одном прерывании вы выводите значение на индикатор и в это же время приходит импульс формирующий измерительный интервал... Что важнее вывести все цифири до последней или запустить/остановить процесс значение которого потом будем выводить на дисплей?
    А вот делать задержки внутри обработчика прерывания есть наипервейшее зло, само название - "прерывание" говорит о том что прерывается основной (читай самый важный) процесс, а вы в нем задержку...
    для Змея
    1. если буржуйские мануалы плохо курятся купи/скачай книжку А.В.Евстифеева "Микроконтроллеры AVR семейства mega/tiny/classik Руководсво пользователя" это выжатые мануала по разным семействам только на русском
    читаешь-уточняешь(на конкретный камень, в буржуйском мануале)-применяешь
    2. есть такая прога VMLab 3.15 заточена как раз под АВРки, проста как 7 коп. и позволяет моделировать вх.сигналы.
    ИМХО протеус слишком перегружен для любителей.
    3. если желаешь и дальше программировать - тогда меняй стиль, использование абсолютных значений и имен регистров по умолчанию прямой путь к запутыванию себя и тех кто потом будет пытаться помогать запустить софтину.

    in r17,timsk
    sbr r17,1<<TOIE0 ;сразу видно что разрешаем прерывание от Т0 по переполнению
    out timsk,r17

    ну и R17 заменить на, скажем, temp
    ну и т.д. не будем углубляться - это все-таки сайт не про мк

  3. #3
    Старший инструктор Аватар для ZMIY
    Регистрация
    28.07.2007
    Адрес
    Магнитогорск
    Возраст
    48
    Сообщений
    3,142

    Re: Скан-код POWER

    Цитата Сообщение от jamper Посмотреть сообщение
    Вот это очень спорное высказывание.
    Вызов прерываний из другого прерывания допускается в случае крайней необходимости, например в одном прерывании вы выводите значение на индикатор и в это же время приходит импульс формирующий измерительный интервал... Что важнее вывести все цифири до последней или запустить/остановить процесс значение которого потом будем выводить на дисплей?
    А вот делать задержки внутри обработчика прерывания есть наипервейшее зло, само название - "прерывание" говорит о том что прерывается основной (читай самый важный) процесс, а вы в нем задержку...
    Ага, тоже подобные мысли вчера в голове крутились. Поэтому в более в более критичном процессе запретил таки прерывания, вообще все. А в менее критичном разрешил.
    Цитата Сообщение от jamper Посмотреть сообщение
    для Змея
    Для ЗмИя
    Цитата Сообщение от jamper Посмотреть сообщение
    1. если буржуйские мануалы плохо курятся купи/скачай книжку А.В.Евстифеева "Микроконтроллеры AVR семейства mega/tiny/classik Руководсво пользователя" это выжатые мануала по разным семействам только на русском
    читаешь-уточняешь(на конкретный камень, в буржуйском мануале)-применяешь
    Эх. Да сколько ж я уже этих книжек скачал, сколько сайтов перерыл...
    Где-то одно понятно (для моего разума) написано, где-то другое...
    А один фиг уточнять и сверяться приходится с родным буржуйским даташитом (ладно, может хоть на этом поприще английский выучу, давно мечтал в принципе)
    Цитата Сообщение от jamper Посмотреть сообщение
    есть такая прога...
    Есть. И ещё миллион других прог есть. Все не изучишь, мне бы для начала все мнемоники ассемблера назубок запомнить а то постоянно со справочниками сверяться приходится. Я так решил, что пока эту прогу не допишу, никаких Визуал Бейсиков , т.е. программ автоматизирующих работу и т.д. Цель - именно мозг раскачать. А уже потом с просветлённым разумом можно подбирать более удобную программу.
    Цитата Сообщение от jamper Посмотреть сообщение
    3. если желаешь и дальше программировать - тогда меняй стиль, использование абсолютных значений и имен регистров по умолчанию прямой путь к запутыванию себя и тех кто потом будет пытаться помогать запустить софтину.

    in r17,timsk
    sbr r17,1<<TOIE0 ;сразу видно что разрешаем прерывание от Т0 по переполнению
    out timsk,r17

    ну и R17 заменить на, скажем, temp
    ну и т.д.
    Да я и сам уже это понял. Вчера добрых несколько часов убил, всё переименовывал, упорядочивал, заворачивал в макросы...
    Цитата Сообщение от jamper Посмотреть сообщение
    не будем углубляться - это все-таки сайт не про мк
    Сайт не про МК, а тема про МК, так что по правилам сайта, это не оффтоп, поэтому можно и углубиться

    PS Это Ваше первое сообщение на данном форуме, причём в такой специфической теме... Нет, это не упрёк или что-то ещё, просто необычно как-то
    "У пилота есть работа - он летает самолёт" (с) М/Ф Смешарики
    Ник в WoT: Rulevoy

  4. #4
    Зашедший
    Регистрация
    29.10.2010
    Возраст
    63
    Сообщений
    8

    Re: Скан-код POWER

    Все очень просто
    AVR это мое основное хобби, причем пишу исключительно на АСМе , поэтому не смог промолчать про прерывания.
    а дополнительное, но не менее любимое ИЛ-2 ЗС , и вот после смерти очередного джоя решил забодяжить что-нибудь этакое, поиск привел меня на этот сайт, а тут "столько вкусного" , уже собрал контроллеры HJFree, MJ16, сейчас мастрячу механику под рус/руд, а дальше видно будет...

  5. #5
    Офицер Форума Аватар для Zorge
    Регистрация
    06.03.2004
    Адрес
    Байконур
    Возраст
    43
    Сообщений
    2,893
    Images
    10

    Re: Скан-код POWER

    Цитата Сообщение от jamper Посмотреть сообщение
    Вот это очень спорное высказывание.
    Вызов прерываний из другого прерывания допускается в случае крайней необходимости, например в одном прерывании вы выводите значение на индикатор и в это же время приходит импульс формирующий измерительный интервал...
    За индикацию по прерыванию нас в институте цитирую:
    "Увижу - буду бить. Сильно, но аккуратно" (с) один хороший майор.

    Пользователь с временем реакции 0.2 секунды не помрет, если получит индикацию на 10-50 миллисекунд позже. А чтобы символ не потерялся - нужно программировать так, чтобы после возврата из прерывания все сохранилось. Например хранить индекс сканируемого символа и выводимое значение индикатора целиком в памяти.

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

    Задержка без использования стека (тоже, кстати, надо по-минимуму в прерывании применять, как и любое другое обращение в ОЗУ - считал данные в начале работы, записал данные по окончании и хватит) и дополнительных извращений - это 255 тактов максимум. От нее сильно никому не поплохеет. Обычно, я задержки вставляю в прерываниях, чтобы внешний регистр успел перещелкнуться, или чтобы выдать синхронизацию строго после того, как данные на шине устаканились.

    Конечно, если "по фен-шую", то в прерываниях должны только флаги выставляться, а по этим флагам основной цикл подпрограммы вызвать, разбираясь - кому времени побольше дать, а кому не очень. С флагами "меня после входа дольше чем на столько-то не прерывать" (чтобы протокол соблюсти например). Отправлять контроллер "спать", если ничего не делается. Чтобы истинная многозадачность была.
    "Когда надо дать всем поровну, часто и помногу" (с) тот же самый майор.
    Но это в больших проектах и/или на ЯВУ с поддержкой этой самой многозадачности компилятором.

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

    Цитата Сообщение от jamper Посмотреть сообщение
    А вот делать задержки внутри обработчика прерывания есть наипервейшее зло, само название - "прерывание" говорит о том что прерывается основной (читай самый важный) процесс, а вы в нем задержку...
    У меня совершенно противоположный подход. Все самое важное и требующее непрерывности, непременно полной обработки - по прерываниям, callback ам от прерываний, дополнительным процессам (когда надо - и с повышенным приоритетом).
    А основной процесс занимается обработкой ввода пользователя, индикацией. Поэтому, если получит управление чуть попозже - ничего страшного не случится.
    Да и сделать только основной процесс безопасно прерываемым гораздо проще, чем городить эту самую "реентрабельность" везде и всюду. Экономит и время написания и отладки, и код и оперативную память.

    Цитата Сообщение от jamper Посмотреть сообщение
    2. есть такая прога VMLab 3.15 заточена как раз под АВРки, проста как 7 коп. и позволяет моделировать вх.сигналы.
    ИМХО протеус слишком перегружен для любителей.
    Перегружен - это P-CAD PC logs 1988-го года выпуска и Multisim начала 2000-х.
    А Протеус прост как тапок. Главное накидать цифровых элементов, а не аналоговых - и вперед.
    VMLab, при всей его навороченности и сложности всего-лишь отладчик.
    Proteus отличается от Microcap или там EWB только тем, что контроллеры моделировать умеет. Поэтому после его освоения получится не потеряться и в них и хотя бы понимать "куда копать" в других программах подобного класса.

    Хотя, может у меня такое мнение, потому что мой любимый AvrCo сам себе VMLab - есть в нем и индикатор ЖК, и семисегментные индикаторы, и эмулятор терминала для UART, и на АЦП можно подавать всякие загогулины, да много чего еще.

    Цитата Сообщение от jamper Посмотреть сообщение
    3. если желаешь и дальше программировать - тогда меняй стиль, использование абсолютных значений и имен регистров по умолчанию прямой путь к запутыванию себя и тех кто потом будет пытаться помогать запустить софтину.
    Согласен. Однако просто так самому дисциплинировать себя сложно.
    Лучше написать что-нибудь зубодробительное без комментариев.
    А потом при попытке разобраться в написанном в целях дополнения или модификации - плюнуть и переписать "как надо" уже заново, с правильными именами и структурой данных.
    Когда наступишь на грабли сам, да еще несколько раз - набитая шишка не даст лениться.

    Цитата Сообщение от ZMIY
    Я так решил, что пока эту прогу не допишу, никаких Визуал Бейсиков , т.е. программ автоматизирующих работу и т.д. Цель - именно мозг раскачать. А уже потом с просветлённым разумом можно подбирать более удобную программу.
    Пожелаю удачи. Наверное так и надо.
    А я так и не добил свой крупный проект на астме.
    Может я и ленивый. Но когда написал его же за полторы недели на Паскале, и еще за месяц отладил до состояния "комар носа не подточит", после того как полгода мурыжил его на ассемблере - был счастлив.

    Я наверное нестандартные велосипеды изобретаю.
    Нормальные люди "ресетят" контроллер переходом по нулевому адресу. А я, если есть watchdog - вешаю контроллер, точно зная, что watchdog все сделает сам.
    // 地辟于丑 - Земля рождена в час Быка

  6. #6
    Ломаю джойстики Аватар для Alex Oz
    Регистрация
    03.03.2007
    Адрес
    Minsk
    Возраст
    60
    Сообщений
    1,092
    Images
    4

    Re: Скан-код POWER

    Эх, счастливые вы люди, есть время копаться в регистрах
    Тут с прикладной физикой успеть бы разбираться...

    Цитата Сообщение от Zorge Посмотреть сообщение
    ...
    Нормальные люди "ресетят" контроллер переходом по нулевому адресу. А я, если есть watchdog - вешаю контроллер[/url], точно зная, что watchdog все сделает сам.
    While(1) ; - и я так грешным делом люблю

  7. #7
    Зашедший
    Регистрация
    29.10.2010
    Возраст
    63
    Сообщений
    8

    Re: Скан-код POWER

    Цитата Сообщение от Zorge Посмотреть сообщение
    У меня совершенно противоположный подход
    какие ваши годы
    "я тоже был молодым и горячим" (с) "Люди и манекены" А.Райкин
    Цитата Сообщение от Zorge Посмотреть сообщение
    "Увижу - буду бить. Сильно, но аккуратно" (с) один хороший майор.
    только подвергая сомнению, даже самые мудрые высказывания, можно добраться до истины.

    PS я тоже мойор, и вроде тоже не плохой

Ваши права

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