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

 
 
> CodeVision глюит?, компилит билеберду
AndreyVN
сообщение Jan 13 2009, 18:26
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Всем привет!

Народ, у меня какая-то фигня при присвоении значений регистрам таймера:
Цитата
GICR = 0x40;
TCNT0=0x00;
TCCR0=0x02;
TIMSK = 0x01;


Посмотрите, что творит компилятор!!! Вместо LDI XX OUT XX Появляются RCALL в никуда !

190: GICR = 0x40;
+000001FB: E4E0 LDI R30,0x40 Load immediate
+000001FC: BFEB OUT 0x3B,R30 Out to I/O location
194: TCNT0=0x00;
+000001FD: D3A8 RCALL PC+0x03A9 Relative call subroutine
203: TIMSK = 0x01;
+000001FE: D3AC RCALL PC+0x03AD Relative call subroutine

С этим компилятором CVAVR 1.23.8d работую не первый год, ничего подобного раньше не было.
Процессор выбран правильно, имена TCNT0, TCCR0 ... в заголовочных файлах находятся.

Куда рыть???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
ARV
сообщение Jan 13 2009, 18:33
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата
WARNING. Using the commercial versions of CodeVisionAVR with pirated license files, created with Keygens, will result in incorrectly generated code, even if CodeVisionAVR seems to accept the pirated license file. The entire responsibility for any problems or losses arising from the usage of a pirated license file lies entirely on the person who tried to illegally use our program. We do not provide technical support for users of pirated license files.

Читали это на официальном сайте сайте? У вас купленная лицензия? может, ответ здесь?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 13 2009, 19:06
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(ARV @ Jan 13 2009, 21:33) *
Читали это на официальном сайте сайте? У вас купленная лицензия? может, ответ здесь?

Конечно может!

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

Если кто-то сталкивался с чем-то похожим, просьба поделиться впечатлениями, приемами отладки, добрым словом...

Цитата(ARV @ Jan 13 2009, 21:33) *
Читали это на официальном сайте сайте? У вас купленная лицензия? может, ответ здесь?



Как я догадываюсь, у Вас CVAVR с купленной лицензией, может попробуету компильнуть мой проект?
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jan 13 2009, 19:42
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Цитата(AndreyVN @ Jan 13 2009, 21:26) *
Всем привет!

Народ, у меня какая-то фигня при присвоении значений регистрам таймера:


Посмотрите, что творит компилятор!!! Вместо LDI XX OUT XX Появляются RCALL в никуда !

С этим компилятором CVAVR 1.23.8d работую не первый год, ничего подобного раньше не было.
Процессор выбран правильно, имена TCNT0, TCCR0 ... в заголовочных файлах находятся.

Куда рыть???


поменять хотя бы на 1.24.0, и то ему уже сто лет в обед. 2.38D у меня с самого начало глюкавила, я ей не верю.
по отзывам 2.53. вроде ничего, у меня на ней пара свежих проектов сделана, но, например она на 32 меге у меня некорректно с ацп работает в "тихом" режиме- значения отличаются на 1 процент примерно. почему- пока не разобрался.
Go to the top of the page
 
+Quote Post
ARV
сообщение Jan 13 2009, 20:51
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(AndreyVN @ Jan 13 2009, 22:06) *
Как я догадываюсь, у Вас CVAVR с купленной лицензией, может попробуету компильнуть мой проект?
упаси вас Бог!!! biggrin.gif я пользуюсь WinAVR


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
VDG
сообщение Jan 13 2009, 22:28
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 845
Регистрация: 10-02-06
Пользователь №: 14 193



было что-то аналогичное. оптимизацию уберите и проверьте.


--------------------
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Jan 14 2009, 07:33
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Это творчество оптимизатора компилятора. С оптимизацией по размеру:
Код
204 ;///                Здесь компилируется с ошибкой
205 ;// Счетный регистр (инкрементируется таймером)
206 ;TCNT0=0x00;
        RCALL SUBOPT_0x0
...
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:1 WORDS (!!!!!)
SUBOPT_0x0:
         LDI  R30,LOW(0)
         OUT  0x32,R30
        LDI  R30,LOW(2)
         OUT  0x33,R30
        RET
...

С оптимизацией по скорости:
Код
; ///                Здесь компилируется с ошибкой
; // Счетный регистр (инкрементируется таймером)
;  TCNT0=0x00;
    LDI  R30,LOW(0)
    OUT  0x32,R30
...

Если нужно по размеру, но без выкрутасов компилятора, лечится просто:
Код
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#pragma optsize-
///                Здесь компилируется с ошибкой
// Счетный регистр (инкрементируется таймером)
TCNT0=0x00;
// Источник тактового сигнала - старт таймера
// x  x  x  x  x  CS02  CS01  CS00
//                0     1      0      Clk/1024= 3.9 kHz  0-stop
TCCR0=0x02;
//Программируем таймер
//Настрйка прерываний от таймера Enable Timer/Counter0 Interrupt
// OCIE   TOIE2   TICIE1   OCIE1A   OCIE1B  TOIE1  -  TOIE0
//  0      0       0        0        0       0     0   1
TIMSK = 0x01;    
#pragma optsize+
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 14 2009, 16:38
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата
Это творчество оптимизатора компилятора. С оптимизацией по размеру:



Goodefine - Спасибо приогромное! Respect!


Только у меня RCALL прыгал не на процедуру в которой иницилизируется регистр а черт знает куда.
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 15 2009, 12:17
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Хочу сообщить, что CodeVision for AVR полностью реабилитирован. RCALL прыгал 'не туда' поскольку перед ним разрешались прерывания,
а условие постоянно висело на ноге контроллера.

Оптимизация по size работает несколько бестолково, но в целом, тоже корректно.
Бестолковость в том, что часть присвоений типа LDI xx OUT xx спрятана в отдельную процедуру, а часть - нет. Уж коли есть такая процедура,
так целесообразно засунуть туда все присвоения, имеющие одинаковый вид LDI, OUT .
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:20
Рейтинг@Mail.ru


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