Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
10.02.2009, 18:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Вот VIT выложил - http://ifolder.ru/10487481
Там где меньше 2 кб вышло.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.02.2009, 18:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от woroba
|
Сообщение от kison
|
Код:
|
unsigned char CPRG=0;
...
CPRG=25; //25*0.2=5S CPRG-- IN T0
while (CPRG›0)MTIME=varprg (99,MTIME); |
Зависон гарантирован на любом уровне оптимизации кроме O0. Пока программист не усвоит основные принципы результат радовать не будет.
|
Ничего подобного,CPRG декременируется в это время через каждые 60mS в таймере и никакого зависания.
Код рабочий.
|
Сейчас рабочий. Потому что регистр R24 используется для передачи параметров в функцию. Но Вы не контролируете использование регистров компилятором. Если в результате какого то изменения регистр освободится... Для понимания упростим пример:
Код:
|
CPRG=25; //25*0.2=5S CPRG-- IN T0
while (CPRG›0); // просто ждем события
SIND=2; // действие когда дождались. |
Посмотрите, что из этого выйдет.
Листинг:
Код:
|
251: SIND=1;
+00000075: E081 LDI R24,0x01 Load immediate
+00000076: 93800060 STS 0x0060,R24 Store direct to data space
252: CPRG=25; //25*0.2=5S CPRG-- IN T0
+00000078: E189 LDI R24,0x19 Load immediate
+00000079: 93800086 STS 0x0086,R24 Store direct to data space
+0000007B: CFFF RJMP PC-0x0000 Relative jump |
Обратите внимание на последнюю команду. Причем все что дальше в функции вообще выкинуто. Вот такие странности бывают от несоблюдения простых правил.
Еще непонятный момент:
Код:
|
MUSTM=eeprom_read_word(rr=&USTM);//USTM;
MTIME=eeprom_read_word(rr=&TIME);//TIME;
MPWM=eeprom_read_word(rr=&PWM);//PWM; |
Что за rr такой? И зачем он нужен?
Код:
|
MUSTM=eeprom_read_word(&USTM);//USTM;
MTIME=eeprom_read_word(&TIME);//TIME;
MPWM=eeprom_read_word(&PWM);//PWM; |
Может так лучше?
|
|
|
|
10.02.2009, 18:37
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
|
Такой вот вопрос, уже долго меня интересовавший:
А где можно почитать про оптимизацию в гцц?
Ну или про написания С-шного кода, грамотно совместимого с оптимизацией гцц?
Уж очень болезненым стал этот вопрос для меня в последнее время...
__________________
Sex, Druggs, Rock&Roll
|
|
|
|
10.02.2009, 18:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от alberio
|
Ну или про написания С-шного кода, грамотно совместимого с оптимизацией гцц?
|
А нету там чего то особенного в плане оптимизатора. Он ровно такой же как в иаровском компиляторе или в родном армовском. Пишите по стандарту и проблем не будет. У ГЦЦ много особенностей, но не в плане оптимизации.
|
|
|
|
10.02.2009, 18:45
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
|
Сообщение от kison
|
Обратите внимание на последнюю команду. Причем все что дальше в функции вообще выкинуто. Вот такие странности бывают от несоблюдения простых правил.
|
Вот про это я и говорю - какие простые правила?
Только чур сильно не ругатся
__________________
Sex, Druggs, Rock&Roll
|
|
|
|
10.02.2009, 18:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от alberio
|
Вот про это я и говорю - какие простые правила?
|
Писать, писать, писать ...
kison уж 12 лет пишет.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.02.2009, 19:05
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
|
А можно где-то прочитать написаное?
__________________
Sex, Druggs, Rock&Roll
|
|
|
|
10.02.2009, 19:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от alberio
|
А можно где-то прочитать написаное?
|
Он програмы пишет для МК и т.п. - т.е. ОПЫТ у него, "сын ошибок трудных" ...
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.02.2009, 19:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от woroba
|
И вообще я в самом начале говорил давайте обсуждать компиляторы, а не предложенный алгоритм(каким бы кривым он не был, это во первых.
|
Для этого существуют синтетические тесты. Их в сети полно, правда именно CV в них обычно не участвует из-за своей нестандартности. Ну что делать, если стандартный тест на нем не собирается? Или свои какие можно придумать.
Сообщение от woroba
|
А во вторых я вам предлагал напишите свои правильные программы в двух вариантах для GCC и CV и давайте их протестим!
|
Вы же данные не даете Пределы времен/температур засекречены. И общее описание функциональности тоже нет. Сделай то, не знаю что с непонятными параметрами выходит.
|
|
|
|
10.02.2009, 19:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Вот в итоге в WinAVR 1988 байт
http://telesys.ru/wwwboards/mcontrol...s/711916.shtml
Цитата:
|
Ну на ещё посмотри - раскомментил те понты и провёл мелкую рихтовку - получилось 1988 байт
Отправлено Vit 10 февраля 2009 г. 18:01
нахрена присваивать указателю (rr) адрес переменной, если потом этот указатель нигде не использовать - не понимаю.
разве что тестовая переменная, но зачем тогда мусор рассматривать? или это наследство от кодевижна?
|
http://ifolder.ru/10488694
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:19.
|
|