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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Пишите уже на ассемблере. Там вы сделаете так, как пожелаете.
Docendo discimus
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

pokk писал(а):Я же написал что такая фигня происходила в других местах примеру вот тут было тоже самое.

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

Мой уютный бложик... заходите!
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение 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
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Я вот не могу въехать - что значит "обернул функцией"? И чем вам это не угодило?
Docendo discimus
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение 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 раза дольше выполняется.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

pokk писал(а):Ну вот он опять запись в ОЗУ обернул функцией и вынес

у вас оптимизация вообще включена или нет? судя по листингу компилятор достаточно умный, чтобы делать ORI и ANDI над содержимым регистра, но при этом достаточно туп, так как постоянно осуществляет сохранение этого регистра в ячейке памяти... бред какой-то.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Panda_Y2K
Грызет канифоль
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО
Контактная информация:

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

Сообщение 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
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Panda_Y2K писал(а):Ого сколько написали.
Как видим, сброс в ноль не предусмотрен.

Понятно же...

Не понятно. Можно попонятнее?
Docendo discimus
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение 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
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Если время исполнения кода важно, то нужно писать на ассемблере.
Docendo discimus
Аватара пользователя
Panda_Y2K
Грызет канифоль
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО
Контактная информация:

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

Сообщение Panda_Y2K »

У меня к стати переменная глобальная и код выполняется в функции майн один раз.
версия cv 2.05.3 оптимизация по размеру.
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
TEMA3DDDDDD
Родился
Сообщения: 2
Зарегистрирован: Ср июн 11, 2014 14:17:15

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

Сообщение TEMA3DDDDDD »

Может кто подскажет можно ли создать bit массив в codevisionavr ?
Почему ему не нравится такая запись bit A[10]; ?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

создать массив битов нельзя. потому и ругается. вообще в языке Си нет такого типа "бит".
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

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

Сообщение Pink-Pank »

Оформите все в структуру. Там можно сделать битовые поля.
Fucking static initialization order fiasco
TEMA3DDDDDD
Родился
Сообщения: 2
Зарегистрирован: Ср июн 11, 2014 14:17:15

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

Сообщение TEMA3DDDDDD »

bit A; - так работает не работает именно массив bit
Вложения
Untitled-2.jpg
(19 КБ) 362 скачивания
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

можно попробовать приспособить библиотеку: https://github.com/noporpoise/BitArray/
Shershnyov
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Чт фев 07, 2013 10:46:46
Контактная информация:

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

Сообщение Shershnyov »

Подскажите пжлст! CVAVR не генерирует файлы прошивки! Открываю готовый проект вношу изменнения, некоторые файлы дату изменения меняют , а файлы *.hex *.cof не меняют. Пробовал их удалять, новые не генерируются, пути менял, папку с проектом переносил в корень, нажимаю и "rebuild all" и "build the project" эффекта ноль. Версия программы 2.05.3. Кто то уже сталкивался с таким?
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Создайте свой проект.
Docendo discimus
Shershnyov
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Чт фев 07, 2013 10:46:46
Контактная информация:

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

Сообщение Shershnyov »

Спасибо за советы, но помогла переустановка.
Ответить

Вернуться в «AVR»