roboforum.ru

Технический форум по робототехнике.

От WinAVR текут мозги!

Re: От автора текут мозги!

=DeaD= » 28 янв 2009, 09:37

Vooon писал(а):Уж сколько раз писалось в интернете что такие переменные нужно обьявлять как volatile...
Да и в документации все есть.

ИМХО разработчики компиляторов совсем уже с ума посходили с оптимизацией. Могли бы тогда просто сделать переменными недоступными в прерываниях и всё, если они не volatile. Или в конце-концов варнинг выводить, что меняем неволатильную переменную в прерывании.

Re: От WinAVR текут мозги!

redcat » 28 янв 2009, 10:13

Ув. Vooon , такие советы я тоже могу давать. Но дело в том, что со временем в интернете появляется море мусора, нужную информацию всё труднее и труднее искать. Почему бы не задать такой вопрос на конференции, ведь она для этого и создана.
Даже если бы я искал информацию в интернете, как-бы выглядел поисковый запрос? - "не меняется значение переменной впри вызове прерывания в микроконтроллере Attiny2312 с компилятором WinAVR"
И что вам выдаст поисковик? Илы вы начнёте читать поучительные книги с начала и до конца, когда не имеете понятия о том, какая функция вам нужна........

А avr123.nm.ru огромное спасибо, респект и уважуха, как говорится, именно "функция", которую вы подсказали мне и была нужна. Спасиба за материалы. Теперь этот кусок кода работает правильно!

ЗЫ: кстати прочитал две! книги по программирования на СИ для АВР, но инфы VOLATILE там небыло... Про переменные и константы стандартно пишется, что при инициализации им присваивается тип данных (int) и расположение в памяти (flash). Все примеры, с подобными программами не используют VOLATILE!....

Re: От WinAVR текут мозги!

Digit » 28 янв 2009, 10:32

Ув. Redcat, запросы в поисковик тоже надо уметь составлять - полезное умение. Вот - не сильно напрягаясь и просто удалив "мусор" из Вашего запроса я получил: в яндексе. Почему-то уже вторая ссылка дала верный ответ. Причем по ссылкам даже ходить не надо - ответ виден в куске текста, приводимого поисковиком.
Случайность?
:no:

Re: От WinAVR текут мозги!

=DeaD= » 28 янв 2009, 10:35

2Digit: Вот не соглашусь с тобой, потому что ты сейчас составляешь запрос зная те особенности, которые приводят к проблеме, а именно - прерывание и глобальная переменная. А он то откуда знает что именно эта комбинация даёт проблему? :)

Re: От WinAVR текут мозги!

Digit » 28 янв 2009, 10:38

Dead, дык вот - в первом посте:
redcat писал(а):Уже неделю борюсь с WinAVR, много проблем разрешил, но эта -
Не изменяется ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ в обработчике прерывания!!!!!!
Компилятор WinAVR. МС - Attiny2313

Я ж не выдумывал ничего. :)

Да, он бы правильный ответ за 3 секунды на странице результатов поиска не увидел бы, т.к. не знал, что volatile всему виной. Но просмотрев первые ссылки - возможно даже очень бегло - он бы нашел ответ.
ИМХО, говорить о появляющейся горе мусора в инете некорректно. Любой поисковик - это инструмент. И им надо грамотно пользоваться.
А мусора в инете всегда было много. И те, кто тебе отвечают, тоже ж не из вселенского эфира знания черпают. Зато вот появление таких тем - это размножение того самого "мусора". :)

ЗЫ
Все это ИМХО. :)

Re: От WinAVR текут мозги!

=DeaD= » 28 янв 2009, 10:45

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

Добавлено спустя 1 минуту 10 секунд:
А вообще я обычно при таких косяках снимаю копию с программы и начинаю её урезать, пока не остаётся 5-6 строк в которых неведомый мне глюк :)

Re: От WinAVR текут мозги!

Digit » 28 янв 2009, 10:59

Та я и не против вопросов в конференции и тоже считаю, что на то она и есть.
Просто мне не нравится, когда человек ссылается на наличие мусора в инете и поэтому типа найти не может... Гниловаты отмазки, ИМХО :)

К вопросу об оставлении главных слов: поисковый запрос. Оставил только: "глобальная переменная в прерывании WinAVR". Вполне четко и по делу и ничего неизвестного топикстартеру. При этом случайно ткнутая ссылка (оказалась №6) дала следующее:
Победил!
Отвечаю на свой вопрос:
При оптимизации WinAvr выбрасывает из подпрограммы все присвоения (в том числе и глобальным переменным), если эта переменная не читается в данной подпрограмме.
Проблема решается описанием глобальной переменной словом VOLATILE


Повторюсь. Я за обсуждение вопросов в конференции. Но без гнилых отмазок и опломба.

Видимо, пора опять подпись сделать "Я умею искать в Google, а ты?" :D

Re: От WinAVR текут мозги!

=DeaD= » 28 янв 2009, 11:11

Digit писал(а):Видимо, пора опять подпись сделать "Я умею искать в Google, а ты?" :D

Тогда уж лучше найти курс по поиску в гугл и ссылку на него ставить, а то можно еще писать "я умею программировать на МК, а ты?" :-D

Re: От WinAVR текут мозги!

redcat » 28 янв 2009, 11:24

Люди! Знаете что такое отчаяние? Когда бьёшься с прогой 16 часов, глаза болят, жрать и спать охота! Хочется и забить на прогу и доделать. Поисковик тут не друг совсем...........

Re: От WinAVR текут мозги!

avr123.nm.ru » 28 янв 2009, 12:06

Dead, вы че-то про "ФЛУДИТЬ НЕ НАДОЕЛО" писали в соседнем топике ?!

redcat писал(а): avr123.nm.ru огромное спасибо, респект и уважуха, как говорится, именно "функция", которую вы подсказали мне и была нужна. Спасиба за материалы. Теперь этот кусок кода работает правильно!

Я рад что у вас все ОК !

redcat писал(а): прочитал две! книги по программирования на СИ для АВР, но инфы VOLATILE там небыло...

Я в курсе старался собрать все самое важное для новичка. И в начале курса сильно призываю читать документацию на применяемые инструменты разработки.

redcat писал(а): прочитал две! книги по программирования на СИ для АВР, но инфы VOLATILE там небыло... Про переменные и константы стандартно пишется, что при инициализации им присваивается тип данных (int) и расположение в памяти (flash).

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

redcat писал(а):Все примеры, с подобными программами не используют VOLATILE!...

Надо смотреть листинг Си+АСМ - в нем будет видно что стало с вашим кодом после оптимизации компилятором.

Добавлено спустя 4 минуты 35 секунд:
Вот такой запрос в Яндексе - "переменная в прерывании WinAVR" сразу дает ответ в первом результате

Изображение

Re: От WinAVR текут мозги!

redcat » 28 янв 2009, 12:20

Всем спасибо за помощь, вопрос закрыт. :roll:

Re: От WinAVR текут мозги!

Vooon » 29 янв 2009, 01:07

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


cron
Rambler\'s Top100 Mail.ru counter