WinAvr в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: WinAvr в вопросах и ответах

Сообщение OKF »

ARV писал(а): учтите, я ответил на ваши вопросы, но что вы там при помощи этих советов накодите, будет целиком на вашей совести

P.S. кстати, static-функции достаточно неплохо инлайнятся автоматически при включении оптимизиции, особенно, если вызываются из одного места :)))
ОК. Спасибо.
Пожалуй я смогу выйти из своего затруднительного положения с малой кровью. Для этого нужно оформить все функции в "фиктивном" прерывании. И которое буду вызывать программно перед выходом из основного. Единственный недостаток - потеря 1 вывода чипа.
Реклама
L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

Re: WinAvr в вопросах и ответах

Сообщение L.O.D »

OKF писал(а):Для этого нужно оформить все функции в "фиктивном" прерывании. И которое буду вызывать программно перед выходом из основного.
Неясно, каким образом это избавит код от пролога и эпилога?
OKF писал(а):Единственный недостаток - потеря 1 вывода чипа.
Снова непонятки - как перенос кода из одной процедуры в другую приводит к потере "ноги" в карте занятости I/O?
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: WinAvr в вопросах и ответах

Сообщение OKF »

L.O.D писал(а):Снова непонятки - как перенос кода из одной процедуры в другую приводит к потере "ноги" в карте занятости I/O?
А если подумать... Программное прерывание к.о. будем вызывать?
"Сейчас буду обьяснить. Возможно с ногой..." Молдавский юмор.
Последний раз редактировалось OKF Ср мар 09, 2016 18:27:33, всего редактировалось 1 раз.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение ARV »

OKF писал(а):Программное прерывание к.о. будем вызывать?
зачем?! :shock:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: WinAvr в вопросах и ответах

Сообщение OKF »

Что бы "большой" пролог был не в начале.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение ARV »

у вас какое-то странное понимание поведения компилятора.
искусственно генерируемое прерывание в конечном итоге ничем не лучше простого обращения к функции.
пролог в обработчике прерывания делается только на основе двух фактов:
1. используемые переменные в обработчике
2. обращения к функциям из обработчика
первый пункт означает, что если переменных в обработчике задействовано минимум, минимальным будет и пролог. всегда в прологе сохраняется SREG и один из регистров (точно не помню, какой именно). если одним этим регистром удастся обеспечить логику обработчика, ничего больше в прологе не будет. соответственно и в эпилоге
второй пункт означает, что если в обработчике есть обращение к функциям из библиотек или других модулей, то в прологе всегда будут сохранены ВСЕ РАБОЧИЕ РЕГИСТРЫ в стек, если я не ошибаюсь, это начиная с r16 и далее по порядку. ну и SREG с дополнительным регистром, само собой
если же в обработчике используются функции из этого же модуля, пролог с эпилогом будут какими-то средними по отношению к описанным вариантам.
если используемые в обработчике функции будут static, то с большой долей вероятности они могут быть проинлайнены в обаботчик, но это не гарантия - надо контролировать по листингу

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

Мой уютный бложик... заходите!
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: WinAvr в вопросах и ответах

Сообщение OKF »

Я уже писал, что мне нужна быстрая реакция на прерывание.
А функций из других модулей не позволяют иметь короткий пролог.
Оформив функции в искусственном прерывании. и программно вызывая его (уже после быстрой реакции на прерывание), я получу требуемый эффект. И в этом как раз и будет отличие программного прерывания от функции/функций внутри прерывания.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение ARV »

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

из ваших слов я понял такое:
1. возникло прерывание
2. вы попадаете в "быстрый" обработчик
3. перед завершением быстрого обработчика дрыгаете ножкой, которая вызывает запрос на очередное прерывание, "медленное"
4. выходите из "быстрого" прерывания, программа отрабатывает 1 команду и попадает в "медленный" обработчик
5. в медленном обработчике с большим прологом что-то страшное делаете с помощью всяких функций
6. завершаете "медленный" обработчик

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

Мой уютный бложик... заходите!
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: WinAvr в вопросах и ответах

Сообщение OKF »

Да, Вы всё правильно поняли. И поэтому мне непонятен Ваш вопрос...
Очевидно же, во 2-м пункте. Именно в нём я отвечаю на прерывание по изменению сигнала в линии.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: WinAvr в вопросах и ответах

Сообщение hybroid »

Очевидно лишь то, что во втором пункте никакой реакции не происходит. Реакция на внешнее событие явно где-то дальше. Толку от того, что быстро вошли в обработчик, если никакой поставленной задачи не выполнено, ничего не обработано.
Не понятно, что мешает показать код. Или огласить полностью задачу.
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: WinAvr в вопросах и ответах

Сообщение OKF »

"Я фигею, дорогая редакция!"
Вы лучше меня знаете что происходит во 2-м пункте и даже ещё раньше.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Alexeyslav »

Получается что вам необходима быстрая реакция на прерывание, что-то быстро зафиксировать а уже потом можно делать отложенные вычисления и скорость этих вычислений уже не так важна. Так почему бы тогда в прерывании не зафиксировать это что-то, выставить признак фиксации а обсчёт и вызовы подпрограмм переложить на основной цикл.
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: WinAvr в вопросах и ответах

Сообщение OKF »

Сейчас так и делается.
Но, занимаясь другой задачей, не всегда успеваю обслужить результат обработки прерывания.
Поэтому и хочу ВСЮ обработку возложить на прерывание.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: WinAvr в вопросах и ответах

Сообщение hybroid »

OKF писал(а):"Я фигею, дорогая редакция!"
Вы лучше меня знаете что происходит во 2-м пункте и даже ещё раньше.
"Мы" ничего не знаем. Сплошные тайны. Хочется возложить на прерывание - надо возлагать :dont_know:
L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

Re: WinAvr в вопросах и ответах

Сообщение L.O.D »

OKF писал(а):А если подумать... Программное прерывание к.о. будем вызывать?
Пардон, полагал, что под "фиктивным прерыванием" имеется ввиду функция.
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Re: WinAvr в вопросах и ответах

Сообщение Apparatchik »

Подскажите пожалуйста как определить структуру в сегменте кода и по указателю на эту структуру, передаваемому как параметр, обращатся к её полям? В мануалах везде только про строки и их массив.
«И всё-таки она вертится!»
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение WiseLord »

Сама структура объявляется как обычно. Переменные - экземпляры структуры создаются как обычно, с указанием const PROGMEM. Ну а доступ к полям - через pgm_read_xxx, где xxx зависит от разрядности поля.
SerF
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Вс май 22, 2016 21:19:03

Re: WinAvr в вопросах и ответах

Сообщение SerF »

Здравствуйте!
Давно уже пользуюсь WinAVR, ни когда не было ни каких проблем.
Устанавливал на Windows 8.1, 10 x64 все прекрасно работало.
И вот сегодня возникла проблема: при компиляции появилась ошибка.

Couldn't reserve space for cygwin's heap, win32 error 0

Пожалуйста помогите!

P.S. Проверил на AVR Studio 4.19, та же ошибка.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение WiseLord »

Подобная манипуляция с msys-1.0.dll не помогает?

Аватара пользователя
_dark
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

Re:

Сообщение _dark »

factorial писал(а): Она гадина в цикле ни с нуля считает (просматривал в AVR4). Да и в прерывании, ей почемуто ничего неприсваиваеться. И при компиляции выскакивают такие сообщения:
5.c:25: warning: type defaults to 'int' in declaration of 'N'
Тоесть компилятор незнает что N имеет тип integer, хотя обявлено вроде нормально.
он ее должен был вообще выбросить, т.к. переменная нигде больше не используется
volatile наше все

используйте uint16_t (int16_t) при объявлении, перестанет ругаться
Ответить

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