Страница 309 из 421

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн июн 09, 2014 15:15:03
pyzhman
Пишите уже на ассемблере. Там вы сделаете так, как пожелаете.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн июн 09, 2014 15:27:13
ARV
pokk писал(а):Я же написал что такая фигня происходила в других местах примеру вот тут было тоже самое.
не увидел, где вы такое писали, и не вижу общего в последнем и предпоследнем примерах вашего кода - что там за "та же фигня" происходит, мне непонятно.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн июн 09, 2014 15:39:32
pokk
Ну вот он опять запись в ОЗУ обернул функцией и вынес из за этого запись флага вместо положенных 3 такта выполняется за 11

Код: Выделить всё

83:         FLAG.flag.F_AC=1;       //765765
+00000DB4:   91E00500    LDS       R30,0x0500     Load direct from data space
+00000DB6:   64E0        ORI       R30,0x40       Logical OR with immediate
+00000DB7:   940E134E    CALL      0x0000134E     Call subroutine
84:           FLAG.flag.F_T1=1;
+00000DB9:   61E0        ORI       R30,0x10       Logical OR with immediate
+00000DBA:   940E134E    CALL      0x0000134E     Call subroutine
85:           FLAG.flag.F_I1=0;
+00000DBC:   7FEB        ANDI      R30,0xFB       Logical AND with immediate
+00000DBD:   940E134E    CALL      0x0000134E     Call subroutine
86:           FLAG.flag.F_I2=1;
+00000DBF:   60E8        ORI       R30,0x08       Logical OR with immediate
+00000DC0:   93E00500    STS       0x0500,R30     Store direct to data space
87:           FLAG.byte=0;
+00000DC2:   E0E0        LDI       R30,0x00       Load immediate
+00000DC3:   93E00500    STS       0x0500,R30     Store direct to data space
CALL 0x0000134E

Код: Выделить всё

0000134E:   93E00500    STS       0x0500,R30     Store direct to data space
+00001350:   9508        RET                      Subroutine return

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн июн 09, 2014 16:35:23
pyzhman
Я вот не могу въехать - что значит "обернул функцией"? И чем вам это не угодило?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн июн 09, 2014 16:45:43
pokk
Я вот не могу въехать - что значит "обернул функцией"?

Код: Выделить всё

сделал  +00000DBD:   940E134E    CALL      0x0000134E     Call subroutine
..
0000134E:   93E00500    STS       0x0500,R30     Store direct to data space
+00001350:   9508        RET                      Subroutine return
вместо просто STS 0x0500,R30
И чем вам это не угодило?
в 3 раза дольше выполняется.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн июн 09, 2014 16:49:02
ARV
pokk писал(а):Ну вот он опять запись в ОЗУ обернул функцией и вынес
у вас оптимизация вообще включена или нет? судя по листингу компилятор достаточно умный, чтобы делать ORI и ANDI над содержимым регистра, но при этом достаточно туп, так как постоянно осуществляет сохранение этого регистра в ячейке памяти... бред какой-то.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн июн 09, 2014 18:10:43
Panda_Y2K
Ого сколько написали.
Как видим, сброс в ноль не предусмотрен.
Понятно же, что имелось в виду при инкременте, а не при сложении.

по поводу инкремента, сделал переменную не волотильной и
;unsigned char test_inc;


; 0000 0027
; 0000 0028 test_inc++;
INC R4
; 0000 0029 test_inc++;
INC R4
; 0000 002A test_inc++;
INC R4

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн июн 09, 2014 20:55:43
pyzhman
Panda_Y2K писал(а):Ого сколько написали.
Как видим, сброс в ноль не предусмотрен.
Понятно же...
Не понятно. Можно попонятнее?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт июн 10, 2014 05:11:25
pokk
Благодарю всех за помощь. Разобрался я из за чего всё это было как и писал ARV
ARV писал(а):пытаться оптимизировать бессмысленный код - пустая трата времени. оптимизировать надо конкретные задачи, а не сферических коней.
Всё дело было в сферических конях =) для того что бы было проще было в ассемблерном листинге найти кусок кода я его вставлял в самое начало хотя использоваться он должен был в прерываниях. Ну а компилятор видимо по смотрел что код выполняется 1 раз по этому скорость не важна и запихал всё в функции. После того как запихал всё в прерывания не каких вызовов CALL не стало.

Panda_Y2K, Это если объявить как локальную переменную у меня примерно так же непонятно правда почему он SUBI вместо INC запихивает но да ладно по времени они одинаково выполняются.

Код: Выделить всё

106:      test_inc++;
+00000FED:   5F2F        SUBI    R18,0xFF         Subtract immediate
107:      test_inc++;
+00000FEE:   5F2F        SUBI    R18,0xFF         Subtract immediate
108:      test_inc++;
+00000FEF:   5F2F        SUBI    R18,0xFF         Subtract immediate

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт июн 10, 2014 05:50:39
pyzhman
Если время исполнения кода важно, то нужно писать на ассемблере.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт июн 10, 2014 07:05:49
Panda_Y2K
У меня к стати переменная глобальная и код выполняется в функции майн один раз.
версия cv 2.05.3 оптимизация по размеру.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 11, 2014 14:46:01
TEMA3DDDDDD
Может кто подскажет можно ли создать bit массив в codevisionavr ?
Почему ему не нравится такая запись bit A[10]; ?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 11, 2014 16:01:36
ARV
создать массив битов нельзя. потому и ругается. вообще в языке Си нет такого типа "бит".

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 11, 2014 16:03:12
Pink-Pank
Оформите все в структуру. Там можно сделать битовые поля.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 11, 2014 16:14:46
TEMA3DDDDDD
bit A; - так работает не работает именно массив bit

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 11, 2014 16:40:03
ARV
второй раз повторяю: битовые массивы невозможны.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 11, 2014 17:00:02
oleg110592
можно попробовать приспособить библиотеку: https://github.com/noporpoise/BitArray/

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 18, 2014 16:10:05
Shershnyov
Подскажите пжлст! CVAVR не генерирует файлы прошивки! Открываю готовый проект вношу изменнения, некоторые файлы дату изменения меняют , а файлы *.hex *.cof не меняют. Пробовал их удалять, новые не генерируются, пути менял, папку с проектом переносил в корень, нажимаю и "rebuild all" и "build the project" эффекта ноль. Версия программы 2.05.3. Кто то уже сталкивался с таким?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 18, 2014 16:21:44
pyzhman
Создайте свой проект.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 18, 2014 17:53:12
Shershnyov
Спасибо за советы, но помогла переустановка.