Перейти к содержанию
    

CodeVision глюит?

Всем привет!

 

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

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 ... в заголовочных файлах находятся.

 

Куда рыть???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

По существу вопроса - попробовал маленький фрагмент кода где только и есть присвоение регистров таймера - все нормально.

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

 

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

 

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

 

 

Как я догадываюсь, у Вас CVAVR с купленной лицензией, может попробуету компильнуть мой проект?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет!

 

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

 

 

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

 

С этим компилятором CVAVR 1.23.8d работую не первый год, ничего подобного раньше не было.

Процессор выбран правильно, имена TCNT0, TCCR0 ... в заголовочных файлах находятся.

 

Куда рыть???

 

поменять хотя бы на 1.24.0, и то ему уже сто лет в обед. 2.38D у меня с самого начало глюкавила, я ей не верю.

по отзывам 2.53. вроде ничего, у меня на ней пара свежих проектов сделана, но, например она на 32 меге у меня некорректно с ацп работает в "тихом" режиме- значения отличаются на 1 процент примерно. почему- пока не разобрался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я догадываюсь, у Вас CVAVR с купленной лицензией, может попробуету компильнуть мой проект?
упаси вас Бог!!! :biggrin: я пользуюсь WinAVR

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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+ 
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

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

 

 

Только у меня RCALL прыгал не на процедуру в которой иницилизируется регистр а черт знает куда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

а условие постоянно висело на ноге контроллера.

 

Оптимизация по size работает несколько бестолково, но в целом, тоже корректно.

Бестолковость в том, что часть присвоений типа LDI xx OUT xx спрятана в отдельную процедуру, а часть - нет. Уж коли есть такая процедура,

так целесообразно засунуть туда все присвоения, имеющие одинаковый вид LDI, OUT .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...