|
Непонятное поведение __delay_cycles |
|
|
|
Jan 27 2010, 09:04
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(sevstels @ Jan 27 2010, 06:10)  Все прерывания запрещены, ничего лишенего не работает. Но импульс с порта С имеет совершенно разные длительности, причём разница значительна: А теперь откройте листинг и с удивлением обнаружьте, что __delay_cycles() компилируется в самый обычный цикл. Ну и как одинаковый цикл может выполняться разное время, если все прерывания запрещены? Значит не все, или с тактированием мудрите, или программа в это время дергает ногой где-то в совсем другом месте программы. Чудес не бывает. Что за страх такой заглянуть в листинг?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 29 2010, 06:38
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата В заголовочных файлах дивайсов в IAR порты уже объявлены volatile. Может человек не с хидера взял эту переменную  , я к тому что обычно такое происходит когда переменная не volotile, компилятор оптимизирует промежуточные значения. Цитата программа уже огромная я так понимаю речь идет о AVR ? так там флеша нету даже для средних программ. Лог оптимизации ? как вы его себе его представляете ? Компилятор генерирует ассемблерные листинги, этого достаточно чтобы даже найти баги компилятора
|
|
|
|
|
Jan 29 2010, 08:07
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(sevstels @ Jan 29 2010, 07:15)  Плиз, не можете подсказать - пожалуйста не мусорите банальностями, ведите себя "правильно". Подсказку еще нужно понять. Для понимания нужно не требовать неведомые "логи оптимизации", а просто уметь читать листинги и, естественно, даже для начала немного представлять, что написали. Не ведаете, что творите и не понимаете что получили? Ну тогда фрагменты этих самых листингов с неработающими после оптимизации кусками представляйте на суд. И непременно оформленные соответствующими тэгами, иначе удалять буду.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 29 2010, 08:21
|

Знающий
   
Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910

|
Цитата Лог оптимизации ? как вы его себе его представляете ? Например так: в блоке: (файл, строка ....) //------------------------- 1: temp |= (1<<PIN); 2: __delay_cycles(_1ms); 3: temp &=~(1<<PIN); 4: __delay_cycles(_1ms); 5: temp |= (1<<PIN); 6: __delay_cycles(_1ms); 7: temp &=~(1<<PIN); //-------------------------- оптимизация: 1: temp |= (1<<PIN); 2: delay: циклы 3: temp &=~(1<<PIN); Разве плохо? Иногда ввиду работы над большим проектом (или много людей), сложно сразу написать оптимальный код. Например одна функция сбрасывает бит, а следующая его ставит. Сразу можно увидеть. Это была бы неплохая подсказка при поиске разных непоняток. - Цитата просто уметь читать листинги Лучшее - враг хорошего. С вашим талантом, да до сих пор все бы на асме писали.  и пользовались zx-spectrum
--------------------
|
|
|
|
|
Jan 29 2010, 09:06
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата Например так: Упасть и плакать  Цитата Цитата просто уметь читать листинги Лучшее - враг хорошего. Это не лучшее и не худшее, это необходимое. Цитата С вашим талантом, да до сих пор все бы на асме писали. Если вы не умете писать на ассемблере бросьте затею с микроконтроллерами качественный продукт вы не сделаете. Я не говорю о профессиональном знании ассемблера, но знание команд и как они работают обязан знать, обязан знать какие есть регистры у процессора, какие методы адресации поддерживает, как делает переходы, как обрабатывает прерывания, как работает стек и т.д., без этих знаний: 1) Программы написанные на "С" работают очень медленно. 2) Программы написанные на "С" занимают очень много места 3) Все компиляторы глючные, и не всегда дают рабочий вариант кода кода при включенной оптимизации.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|