CodeVision AVR в вопросах и ответах
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Пишите уже на ассемблере. Там вы сделаете так, как пожелаете.
Docendo discimus
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
pokk писал(а):Я же написал что такая фигня происходила в других местах примеру вот тут было тоже самое.
не увидел, где вы такое писали, и не вижу общего в последнем и предпоследнем примерах вашего кода - что там за "та же фигня" происходит, мне непонятно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
Ну вот он опять запись в ОЗУ обернул функцией и вынес из за этого запись флага вместо положенных 3 такта выполняется за 11
CALL 0x0000134E
Код: Выделить всё
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 spaceCALL 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 в вопросах и ответах
Я вот не могу въехать - что значит "обернул функцией"? И чем вам это не угодило?
Docendo discimus
Re: CodeVision AVR в вопросах и ответах
Я вот не могу въехать - что значит "обернул функцией"?
Код: Выделить всё
сделал +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 в вопросах и ответах
pokk писал(а):Ну вот он опять запись в ОЗУ обернул функцией и вынес
у вас оптимизация вообще включена или нет? судя по листингу компилятор достаточно умный, чтобы делать ORI и ANDI над содержимым регистра, но при этом достаточно туп, так как постоянно осуществляет сохранение этого регистра в ячейке памяти... бред какой-то.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Panda_Y2K
- Грызет канифоль
- Сообщения: 258
- Зарегистрирован: Пт сен 23, 2011 06:44:41
- Откуда: ЮФО
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Ого сколько написали.
Понятно же, что имелось в виду при инкременте, а не при сложении.
по поводу инкремента, сделал переменную не волотильной и
;unsigned char test_inc;
; 0000 0027
; 0000 0028 test_inc++;
INC R4
; 0000 0029 test_inc++;
INC R4
; 0000 002A test_inc++;
INC R4
Как видим, сброс в ноль не предусмотрен.
Понятно же, что имелось в виду при инкременте, а не при сложении.
по поводу инкремента, сделал переменную не волотильной и
;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 Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Panda_Y2K писал(а):Ого сколько написали.Как видим, сброс в ноль не предусмотрен.
Понятно же...
Не понятно. Можно попонятнее?
Docendo discimus
Re: CodeVision AVR в вопросах и ответах
Благодарю всех за помощь. Разобрался я из за чего всё это было как и писал ARV
Всё дело было в сферических конях =) для того что бы было проще было в ассемблерном листинге найти кусок кода я его вставлял в самое начало хотя использоваться он должен был в прерываниях. Ну а компилятор видимо по смотрел что код выполняется 1 раз по этому скорость не важна и запихал всё в функции. После того как запихал всё в прерывания не каких вызовов CALL не стало.
Panda_Y2K, Это если объявить как локальную переменную у меня примерно так же непонятно правда почему он SUBI вместо INC запихивает но да ладно по времени они одинаково выполняются.
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 в вопросах и ответах
Если время исполнения кода важно, то нужно писать на ассемблере.
Docendo discimus
- Panda_Y2K
- Грызет канифоль
- Сообщения: 258
- Зарегистрирован: Пт сен 23, 2011 06:44:41
- Откуда: ЮФО
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
У меня к стати переменная глобальная и код выполняется в функции майн один раз.
версия cv 2.05.3 оптимизация по размеру.
версия cv 2.05.3 оптимизация по размеру.
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
-
TEMA3DDDDDD
- Родился
- Сообщения: 2
- Зарегистрирован: Ср июн 11, 2014 14:17:15
Re: CodeVision AVR в вопросах и ответах
Может кто подскажет можно ли создать bit массив в codevisionavr ?
Почему ему не нравится такая запись bit A[10]; ?
Почему ему не нравится такая запись bit A[10]; ?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
создать массив битов нельзя. потому и ругается. вообще в языке Си нет такого типа "бит".
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Оформите все в структуру. Там можно сделать битовые поля.
Fucking static initialization order fiasco
-
TEMA3DDDDDD
- Родился
- Сообщения: 2
- Зарегистрирован: Ср июн 11, 2014 14:17:15
Re: CodeVision AVR в вопросах и ответах
bit A; - так работает не работает именно массив bit
- Вложения
-
- Untitled-2.jpg
- (19 КБ) 362 скачивания
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
второй раз повторяю: битовые массивы невозможны.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: CodeVision AVR в вопросах и ответах
можно попробовать приспособить библиотеку: https://github.com/noporpoise/BitArray/
-
Shershnyov
- Первый раз сказал Мяу!
- Сообщения: 33
- Зарегистрирован: Чт фев 07, 2013 10:46:46
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Подскажите пжлст! CVAVR не генерирует файлы прошивки! Открываю готовый проект вношу изменнения, некоторые файлы дату изменения меняют , а файлы *.hex *.cof не меняют. Пробовал их удалять, новые не генерируются, пути менял, папку с проектом переносил в корень, нажимаю и "rebuild all" и "build the project" эффекта ноль. Версия программы 2.05.3. Кто то уже сталкивался с таким?
-
Shershnyov
- Первый раз сказал Мяу!
- Сообщения: 33
- Зарегистрирован: Чт фев 07, 2013 10:46:46
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Спасибо за советы, но помогла переустановка.