AndreyVN 0 13 января, 2009 Опубликовано 13 января, 2009 · Жалоба Всем привет! Народ, у меня какая-то фигня при присвоении значений регистрам таймера: 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 ... в заголовочных файлах находятся. Куда рыть??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 1 13 января, 2009 Опубликовано 13 января, 2009 · Жалоба 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. Читали это на официальном сайте сайте? У вас купленная лицензия? может, ответ здесь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyVN 0 13 января, 2009 Опубликовано 13 января, 2009 · Жалоба Читали это на официальном сайте сайте? У вас купленная лицензия? может, ответ здесь? Конечно может! По существу вопроса - попробовал маленький фрагмент кода где только и есть присвоение регистров таймера - все нормально. Компилятор сходит с ума где-то в тексте программы (естественно, без ошибок и предупреждений) буду искать, комментируя различные фрагменты. Если кто-то сталкивался с чем-то похожим, просьба поделиться впечатлениями, приемами отладки, добрым словом... Читали это на официальном сайте сайте? У вас купленная лицензия? может, ответ здесь? Как я догадываюсь, у Вас CVAVR с купленной лицензией, может попробуету компильнуть мой проект? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 13 января, 2009 Опубликовано 13 января, 2009 · Жалоба Всем привет! Народ, у меня какая-то фигня при присвоении значений регистрам таймера: Посмотрите, что творит компилятор!!! Вместо LDI XX OUT XX Появляются RCALL в никуда ! С этим компилятором CVAVR 1.23.8d работую не первый год, ничего подобного раньше не было. Процессор выбран правильно, имена TCNT0, TCCR0 ... в заголовочных файлах находятся. Куда рыть??? поменять хотя бы на 1.24.0, и то ему уже сто лет в обед. 2.38D у меня с самого начало глюкавила, я ей не верю. по отзывам 2.53. вроде ничего, у меня на ней пара свежих проектов сделана, но, например она на 32 меге у меня некорректно с ацп работает в "тихом" режиме- значения отличаются на 1 процент примерно. почему- пока не разобрался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 1 13 января, 2009 Опубликовано 13 января, 2009 · Жалоба Как я догадываюсь, у Вас CVAVR с купленной лицензией, может попробуету компильнуть мой проект?упаси вас Бог!!! я пользуюсь WinAVR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VDG 0 13 января, 2009 Опубликовано 13 января, 2009 · Жалоба было что-то аналогичное. оптимизацию уберите и проверьте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Goodefine 0 14 января, 2009 Опубликовано 14 января, 2009 · Жалоба Это творчество оптимизатора компилятора. С оптимизацией по размеру: 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+ //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyVN 0 14 января, 2009 Опубликовано 14 января, 2009 · Жалоба Это творчество оптимизатора компилятора. С оптимизацией по размеру: Goodefine - Спасибо приогромное! Respect! Только у меня RCALL прыгал не на процедуру в которой иницилизируется регистр а черт знает куда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyVN 0 15 января, 2009 Опубликовано 15 января, 2009 · Жалоба Хочу сообщить, что CodeVision for AVR полностью реабилитирован. RCALL прыгал 'не туда' поскольку перед ним разрешались прерывания, а условие постоянно висело на ноге контроллера. Оптимизация по size работает несколько бестолково, но в целом, тоже корректно. Бестолковость в том, что часть присвоений типа LDI xx OUT xx спрятана в отдельную процедуру, а часть - нет. Уж коли есть такая процедура, так целесообразно засунуть туда все присвоения, имеющие одинаковый вид LDI, OUT . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться