пользовательское прерывание

AVR версия программы

Re: пользовательское прерывание

Сообщение krian (krian) » 05 май 2019, 19:20

mim писал(а):
krian писал(а):

Ты бы хоть как то дернулся...

mega168.rar


Дергаюсь...
О! А щас zip проглотил.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: пользовательское прерывание

Сообщение krian (krian) » 05 май 2019, 19:24

livrena писал(а):
krian писал(а):вообще там нет многого, что есть в 6-й версии.

Пробуй скачать на форуме 8 версию, там есть много, чего нет в 6.
⏩В ветке flowcode 7. стр 6 ⏬

Спасибо. Я посмотрю.
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: пользовательское прерывание

Сообщение Вячеслав (Вячеслав) » 06 май 2019, 06:11

livrena писал(а):Пробуй скачать на форуме 8 версию, там есть много, чего нет в 6.

Подскажте, на РС с Windows 10 с лицензией "Домашняя" она установится (ноутбук ASUS X751LDV-...)? Если установится, то смогу ли работать: не затопчат её средства защиты Windows? Flowcode 5 там установлена и работает нормально.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Разработчик
Разработчик
Информация о пользователе
Вернуться наверх

Re: пользовательское прерывание

Сообщение livrena (livrena) » 06 май 2019, 06:35

На windows 10 работает, устанавливается в другую папку. Можно работать и с 5 и 8 версией,читай всю ветку flowcode 7 после стр. 6
Ник: livrena
Имя: livrena
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: пользовательское прерывание

Сообщение mim (mim) » 06 май 2019, 06:35

krian писал(а):Дергаюсь...
Хорошо... Настройка прерывания
soft_CTC_mode_T0.rar

Не понял я там всю твою хрень... Особенно как ты сбрасываешь биты в ноль... :headbang:
Код: выделить все
TIMSK0=(0<<OCIE0A);

Поэтому советую внимательно прочесть вот это - работа с битами...
У вас нет доступа для просмотра вложений в этом сообщении.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: пользовательское прерывание

Сообщение krian (krian) » 07 май 2019, 08:00

mim писал(а):Не понял я там всю твою хрень... Особенно как ты сбрасываешь биты в ноль...


Та то артефакты от многочисленных переписываний. Так, конечно, не правильно. Но цель достигается. Бит сбросился, хотя и весь регистр тоже.
Спасибо за разъяснения и примеры. Это для меня очень полезно.
Только я не понял принцип записей во втором окне "Разрешить код". Там варианты состояний регистров. Какие правила их записи (т.е. что за чем писать и что надо, а что нет) и в каком порядке они будут использоваться? Это на тот случай, чтобы и для других прерываний.
В окне "запретить код" сбрасывается только бит разрешения прерывания по компаратору А. Могут ли туда вставляться еще какие-нибудь команды? Например, при разрешении прерывания использовалась команда sei. А при запрете, не нужно ли вставить cli, чтобы вернуться к начальному состоянию, если глобальное разрешение не было включено до этого?
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: пользовательское прерывание

Сообщение mim (mim) » 07 май 2019, 08:41

Все настройки сводятся к знанию ДШ. Сидим и переводм его. Тупо в лоб гуглем...
Изучаем структурную схему таймера - обязательно, по ней и по описанию определяем все регистры участвующие в настройках и в управлении. Не маловажным фактором является изучение предделителя (он часто общий), а также зависимость работы одного регистра от другого. Например, если в режиме СТС установить одновременно прерывание по каналу А и по каналу B, а значение регистра OCR0B будет больше OCR0А - прерывание по каналу В никогда не произойдет...
Затем все это ищем в инете, читаем сопоставляем, выбираем, проверяем, находим для себя оптимальность и правильность...

Из обычной логики следует...
Сначала настройки, затем включение и при необходимости модификация в процессе выполнения программы.
Изменять можно все (ну или почти все) - опираясь на ДШ.

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

Запрещать можно тоже по разному, нужно понимать что глобальное запрещение cli() запретит все прерывания, а периферийное только конкретное устройство... Так что cli() используется реже чем запрет частного...

Можно выполнить всю настройку прерывания в начале программы, а включить его в том месте (или по событию) где это нужно, также и отключить...


В окна настройки можно писать все (даже свои куски выполняемого кода) главное уяснить где это вставляется в программу и когда это будет выполняться...
таймер 0 и таймер 2
1. TCCR0A ... TCCR2A Timer/Counter Control Register A регистр настрое
2. TCCR0B ... TCCR2B Timer/Counter Control Register B регистр настроек
3. TCNT0 ... TCNT2 Timer/Counter Register счетный регистр
4. OCR0A ... OCR2A Output Compare Register A регистр сравнения
5. OCR0B ... OCR2B Output Compare Register B регистр сравнения
6. ТIMSK0 ... TIMSK2 Timer/Counter Interrupt Mask Register регистр масок (управление прерываниями)
7. TIFR0 ... TIFR2 Timer/Counter Interrupt Flag Register регистр флагов

Изучил 7 регистров и уже знаешь два таймера... делов-то...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: пользовательское прерывание

Сообщение Enigm (Enigm) » 07 май 2019, 23:19

Я тут за изучение СТМ32 засел, вот где куча настроек и регистров тамеров, АВР и ПИК отдыхает.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: пользовательское прерывание

Сообщение krian (krian) » 09 май 2019, 12:05

mim писал(а):Все настройки сводятся к знанию ДШ.

Изучил 7 регистров и уже знаешь два таймера... делов-то...


С ДНЕМ ПОБЕДЫ!

Mim, спасибо за разъяснения, но я это знаю, т.к. на ассемблере все делается именно так, как ты написал - от даташита. А на Си при прямом управлении регистрами и битами практически, как на ассемблере, только синтаксис другой.Там мне понятно, а тут не все понятно. И я не о том спрашивал.
Что-то не так в этом прерывании, хотя все компилируется без ошибок.
Оно работает не так, как это должно происходить по описанию в даташите. Кстати, комнда sei в окне разрешенных кодов - лишняя, т.к. если посмотреть Си-код, то там она прописана перед блоком прерывания. Видимо это делается автоматически, как только оно видит блок прерывания. Ну это к слову.
Какую я предполагал логику, согласно даташиту? По совпадению TCNT с OCR0A происходит сброс TCNT и включается прерывание, по которому выполняется заданная подпрограмма, в данном случае макрос "step". Причем время выполнения этого макроса должно быть короче, чем время до наступления следующего прерывания по такому же событию. В макросе, вначале и в конце я устанавливаю и сбрасываю порт D0, чтобы можно было наблюдать время исполнения самого макроса. Кроме того, я подаю сигналы на вход порта В0, чтобы переключать выходы . В зависимости от этого сигнала импульсы формируются на выходе ОС0А или ОС0В.
На картинках показано три сигнала. На первой весь сеанс записи, на второй растяжка в месте переключения выходов. Из них видно что импульсы формируются равномерно на одном и на другом выходах, для наглядности с разными частотами. Т.е в таймере все срабатывает, как надо. Третий сигнал - это исполнение макроса, который вызывается по прерыванию. Видно, что время исполнения макроса (около 10 мкс), значительно меньше, чем время между прерываниями. Однако, в одном случае прерывание происходит по каждому событию, но пачками, во втором вообще не по каждому событию. Случаи отличаются тем, что подключаются разные выходы и в регистр сравнения OCR0A загружаются разные числа для изменения частоты. А это никак не должно повлиять на срабатывание прерывания, тем более, чтобы оно происходило по таким странным закономерностям. Сейчас не смогу, но когда появится время, я попробую то же самое сделать на ассемблере. Однако я почему-то заранее уверен, что там будет все правильно.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: пользовательское прерывание

Сообщение krian (krian) » 09 май 2019, 12:31

Enigm писал(а):Я тут за изучение СТМ32 засел, вот где куча настроек и регистров тамеров, АВР и ПИК отдыхает.


В этой теме вообще не об СТМ32, если ты не заметил.
В нормальных системах для работы с этими контроллерами ( так же как в системах для AVR) есть мастер настройки, который значительно облегчает процесс. При их использовании в большинстве случаев даже даташит детально можно не изучать, потому что результаты настроек сразу наглядно видны на том же экране.
Ник: krian
Имя: krian
(Харьков)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в Flowcode AVR

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

Пользователь просматривает форум: miasischev