События в AVRGCC C++, как реализовать ?

Обсуждаем контроллеры компании Atmel.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ptr128 писал(а):Никто не запрещает, выходить из прерывания по JMP, не забыв проинициализировать SP
:facepalm:
Последний раз редактировалось ARV Пт дек 16, 2016 15:21:04, всего редактировалось 1 раз.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

Сообщение Z_h_e »

На счет данных флагов камень принимаю. Но это скорее исключение. А обработчик прерывания называется My vector и обсуждение шло тоже обобщенное.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Z_h_e писал(а):На счет данных флагов камень принимаю.
а тот факт, что эти флаги могли быть установлены по итогам приема байта, не попавшего в обработчик, ибо busy==1 было - это вас не смущает?

вся эта тема таким бредом пахнет... обсуждение классического сферического коня...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

ARV писал(а):предположим, байты в УАРТ сыплятся каждые 10 мс
Предположим, что байты нам достаются даже реже, чем каждые 10мс, но так как мы разрешаем прерывания, между этими байтами может быть обработка еще нескольких других прерываний, не имеющих никакого отношения к UART. И если таких прерываний произойдет больше одного, то мы будем выгребать уже два байта из UART, а если больше 2-3, то вообще увидим установленный DORn
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

ptr128 писал(а):У Вас навязчивая идея?
ptr128 писал(а):
sei перед выходом из прерывания действительно не требуется.
Оно не не требуется, его нельзя использовать.

Нет у меня навязчивой идеи.
Сначала Вы говорите что так в ДШ, потом говорите, что его надо ставить если выход по ret. Я Вам сообщанию свое непринятие таких утверждений. Особенно на фоне, когда Вы попрекаете коллег тем, что они могу запутать новичков.

Куда Вы собрались выходить по команде JMP ?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ptr128 писал(а):а если больше 2-3, то вообще
так разве в этом случае хоть запрещай, хоть не запрещай, все равно получится бяка? мы же на время 11 мс блокируем обработку УАРТа, разрешая одновременно все прочие прерывания - не так ли? если такое произойдет, то один или больше принятых байтов просто пропадут. о чем я ранее и писал
ARV писал(а):это тот же каюк, но с другой стороны...
если мы не успеваем обработать принятый байт, то причина этой "медлительности" уже неинтересна - из-за долгой обработки или из-за вмешательства других прерываний.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Z_h_e писал(а):обсуждение шло тоже обобщенное.
Вы же сами попросили меня привести кокретный пример :)))
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

ARV писал(а):
Z_h_e писал(а):На счет данных флагов камень принимаю.
а тот факт, что эти флаги могли быть установлены по итогам приема байта, не попавшего в обработчик, ибо busy==1 было - это вас не смущает?

вся эта тема таким бредом пахнет... обсуждение классического сферического коня...
Меня очень сильно смущает алгоритм вложенных прерываний, который Вы первый предложили, а товарищ его доразвил. А камень я принял только по факту метода сброса именно этих флагов и не более, о чем собственно и написал.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

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

Мой уютный бложик... заходите!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Z_h_e писал(а):
ptr128 писал(а):У Вас навязчивая идея?
ptr128 писал(а):
sei перед выходом из прерывания действительно не требуется.
Оно не не требуется, его нельзя использовать.
Нет у меня навязчивой идеи.
Вы можете внятно сказать, чего Вы от меня хотите?
Z_h_e писал(а): Сначала Вы говорите что так в ДШ, потом говорите, что его надо ставить если выход по ret. Я Вам сообщанию свое непринятие таких утверждений. Особенно на фоне, когда Вы попрекаете коллег тем, что они могу запутать новичков.
Тролль?
Z_h_e писал(а): Куда Вы собрались выходить по команде JMP ?
Куда угодно. Хоть по вектору RESET
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

ptr128 писал(а):Тролль?
Допускаю непринятие Вами утверждения других, в том числе моих, но не допускаю оскорблений . Так что идите пожалуйста на любой вектор.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Z_h_e писал(а):Меня очень сильно смущает алгоритм вложенных прерываний, который Вы первый предложили, а товарищ его доразвил.
Меня тоже, о чем я уже Вам писал:
ptr128 писал(а): Хотя тут я с Вами согласен и сам предпочитаю организацию очереди событий, разгребаемой основной программой.
Например, кольцевой буфер из N структур, состоящих из указателя на обработчик события и параметр для этого обработчика.
Добавлено after 1 minute 33 seconds:
Z_h_e писал(а):
ptr128 писал(а):Тролль?
Допускаю непринятие Вами утверждения других, в том числе моих, но не допускаю оскорблений . Так что идите пожалуйста на любой вектор.
Не вопрос, Вы в игноре.

Добавлено after 5 hours 38 minutes 43 seconds:
ARV писал(а):так разве в этом случае хоть запрещай, хоть не запрещай, все равно получится бяка?
Почему? Например, МК в реальном времени управляет каким-то механизмом. Кроме того, воспринимает команды пользователя по последовательному порту через UART. А значит, если мы приняли команду и обработали - ответим по тому же последовательному порту "OK". Если пользователь слишком быстро послал несколько команд и мы не успели какую-то принять (возникло переполнение UART) - ответим "ERR OVERFLOW". А пользователь тогда поймет, что команду следует послать повторно, если она еще актуальна. Как раз вполне адекватное и прогнозируемое поведение программы получится.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Ответить

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