реклама на сайте
подробности

 
 
> Непонятные действия оптимизации.
Oleg_IT
сообщение Dec 22 2008, 11:01
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Начал проект с простого (WinAVR-20070525), таймер и исключающее ИЛИ пина порта (PORTA) в обработчике прерывания этого самого таймера. На выходе ожидался генератор меандра. Загрузил, не работает. После некоторых мук определил, что виновата оптимизация, собираю проект без оптимизации всё работает. Немного расширил проект, стал работать и с оптимизацией, но всё равно некоторые важные части оптимизирует на свой лад. Я понимаю соптимизировать переменную, которая ничего кроме инвертирования не делает, но выкидывание работы с портом, этого я не понимаю. Может я и правда чего не понимаю.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Oleg_IT
сообщение Dec 22 2008, 12:54
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Я переменными для начала не пользовался и volatile мне не к чему. А на порт volatile ставить… В АСМе порты программировать можно, но если проект на Си, то и с портами желательно в Си работать.

Простенький код

Код
ISR (TIMER0_COMP_vect)
{
    TCNT0 = 0x00;
    PORTA ^= 1;
}

int main(void)
{
    TCCR0   = (1 << CS00);
    TCNT0   = 0x00;
    OCR0    = Dl;
    TIMSK   |= (1 << OCIE0);

    DDRA   = 0xFF;
    PORTA  = 0xFF;

    sei();

    while (1)
    {
    }
    return 0;
}
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 22 2008, 13:13
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Oleg_IT @ Dec 22 2008, 16:54) *
Простенький код
************************
TCCR0 = (1 << CS00);

Уважаемый, никакой Си не избавит Вас от необходимости курить мануал и думать головой. sad.gif
Каким макаком у Вас будет прерывание, если Вы не потрудились даже настроить таймер на работу с OCR0???
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Dec 22 2008, 16:35
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(_Pasha @ Dec 22 2008, 16:13) *
Уважаемый, никакой Си не избавит Вас от необходимости курить мануал и думать головой. sad.gif
Каким макаком у Вас будет прерывание, если Вы не потрудились даже настроить таймер на работу с OCR0???

Уважаемый, я Вас не понял. Где тут ошибка??? В регистр TCCR0 устанавливаю бит CS00, который clkI/O/(No prescaling). Не отметил, МК ATMetga32. Я же говорю, без оптимизации все работает!!!

Вочдог не использую и фьюз не стоит.

Цитата(demiurg_spb @ Dec 22 2008, 16:28) *
Пожалуйста форматируйте код в постах (есть волшебная кнопка # над окном ввода текста сообщения).

Спасибо, учту.

Цитата(defunct @ Dec 22 2008, 16:42) *
Ваша программа работает одинаково, как с оптимизацией, так и без нее.
Уточняйте, где смотреть проблему?

Увы не одинаково и не стабильно. Без оптимизации всё нормально, с –Os и до –O1 чудеса.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Oleg_IT   Непонятные действия оптимизации.   Dec 22 2008, 11:01
- - mandrew   Как на счет объявить переменные с квалификатором v...   Dec 22 2008, 11:22
- - Сергей Борщ   Цитата(Oleg_IT @ Dec 22 2008, 13:01) Може...   Dec 22 2008, 11:23
|- - demiurg_spb   Цитата(Сергей Борщ @ Dec 22 2008, 14:23) ...   Dec 22 2008, 13:28
|- - defunct   Цитата(demiurg_spb @ Dec 22 2008, 15:28) ...   Dec 22 2008, 13:42
||- - demiurg_spb   Цитата(defunct @ Dec 22 2008, 16:42) А за...   Dec 22 2008, 13:51
||- - defunct   Цитата(demiurg_spb @ Dec 22 2008, 15:51) ...   Dec 22 2008, 13:55
|- - Сергей Борщ   Цитата(demiurg_spb @ Dec 22 2008, 15:28) ...   Dec 22 2008, 14:11
|- - defunct   Цитата(Oleg_IT @ Dec 22 2008, 18:35) Увы ...   Dec 22 2008, 17:44
|- - Oleg_IT   Цитата(defunct @ Dec 22 2008, 20:44) Опиш...   Dec 22 2008, 18:50
|- - smac   Цитата(Oleg_IT @ Dec 22 2008, 21:50) С то...   Dec 22 2008, 19:14
|- - defunct   Цитата(Oleg_IT @ Dec 22 2008, 20:50) С то...   Dec 23 2008, 00:48
|- - Oleg_IT   Цитата(defunct @ Dec 23 2008, 03:48) А чт...   Dec 23 2008, 04:11
- - Ivan A-R   % avr-gcc --version avr-gcc (GCC) 4.3.1 Полёт нор...   Dec 22 2008, 13:15
- - Goodefine   Цитата(Oleg_IT @ Dec 22 2008, 19:35) В ре...   Dec 22 2008, 16:56
|- - Oleg_IT   Цитата(Goodefine @ Dec 22 2008, 19:56) Та...   Dec 22 2008, 17:03
- - Ivan A-R   Oleg_IT, попробуй сгенерить ассемблерный листинг с...   Dec 22 2008, 17:09
- - Александр Куличок   Викидывает, потому что при запуске программы Start...   Dec 22 2008, 19:09
- - sonycman   А вы нам приведите ассемблерный листинг того вариа...   Dec 23 2008, 19:57


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 02:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01413 секунд с 7
ELECTRONIX ©2004-2016