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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение =DeaD= » 28 янв 2009, 09:37

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

ИМХО разработчики компиляторов совсем уже с ума посходили с оптимизацией. Могли бы тогда просто сделать переменными недоступными в прерываниях и всё, если они не volatile. Или в конце-концов варнинг выводить, что меняем неволатильную переменную в прерывании.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение redcat » 28 янв 2009, 10:13

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

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

ЗЫ: кстати прочитал две! книги по программирования на СИ для АВР, но инфы VOLATILE там небыло... Про переменные и константы стандартно пишется, что при инициализации им присваивается тип данных (int) и расположение в памяти (flash). Все примеры, с подобными программами не используют VOLATILE!....
Аватара пользователя
redcat
 
Сообщения: 26
Зарегистрирован: 27 янв 2009, 23:39
Откуда: K-Jarve, Estonia
прог. языки: PHP, C.
ФИО: Alex Po

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

Сообщение Digit » 28 янв 2009, 10:32

Ув. Redcat, запросы в поисковик тоже надо уметь составлять - полезное умение. Вот - не сильно напрягаясь и просто удалив "мусор" из Вашего запроса я получил: в яндексе. Почему-то уже вторая ссылка дала верный ответ. Причем по ссылкам даже ходить не надо - ответ виден в куске текста, приводимого поисковиком.
Случайность?
:no:
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

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

Сообщение =DeaD= » 28 янв 2009, 10:35

2Digit: Вот не соглашусь с тобой, потому что ты сейчас составляешь запрос зная те особенности, которые приводят к проблеме, а именно - прерывание и глобальная переменная. А он то откуда знает что именно эта комбинация даёт проблему? :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение Digit » 28 янв 2009, 10:38

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

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

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

ЗЫ
Все это ИМХО. :)
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

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

Сообщение =DeaD= » 28 янв 2009, 10:45

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

Добавлено спустя 1 минуту 10 секунд:
А вообще я обычно при таких косяках снимаю копию с программы и начинаю её урезать, пока не остаётся 5-6 строк в которых неведомый мне глюк :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение Digit » 28 янв 2009, 10:59

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

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


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

Видимо, пора опять подпись сделать "Я умею искать в Google, а ты?" :D
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

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

Сообщение =DeaD= » 28 янв 2009, 11:11

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

Тогда уж лучше найти курс по поиску в гугл и ссылку на него ставить, а то можно еще писать "я умею программировать на МК, а ты?" :-D
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение redcat » 28 янв 2009, 11:24

Люди! Знаете что такое отчаяние? Когда бьёшься с прогой 16 часов, глаза болят, жрать и спать охота! Хочется и забить на прогу и доделать. Поисковик тут не друг совсем...........
Аватара пользователя
redcat
 
Сообщения: 26
Зарегистрирован: 27 янв 2009, 23:39
Откуда: K-Jarve, Estonia
прог. языки: PHP, C.
ФИО: Alex Po

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" сразу дает ответ в первом результате

Изображение
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

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

Сообщение redcat » 28 янв 2009, 12:20

Всем спасибо за помощь, вопрос закрыт. :roll:
Аватара пользователя
redcat
 
Сообщения: 26
Зарегистрирован: 27 янв 2009, 23:39
Откуда: K-Jarve, Estonia
прог. языки: PHP, C.
ФИО: Alex Po

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

Сообщение Vooon » 29 янв 2009, 01:07

Вот вы мне скажите, когда стало правильным не изучать документацию к инструменту, которым вы пользуетесь?
У популярных проектов документация описывает такие моменты, т.к. разработчиков либо уже завалили вопросами, либо на упреждение уже описано.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3