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

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

Добавлено: Вс июн 01, 2014 09:58:01
Vrungel
А можно ли как-то "распаковать" бинарную библиотеку CV?
Чтобы подредактировать немного.

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

Добавлено: Вс июн 01, 2014 11:31:44
ИС-пытатель
можно свою написать. Будет быстрей и под вашу конкретную задачу.

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

Добавлено: Пн июн 02, 2014 18:23:34
Shershnyov
Решил собрать простенький проект в зависимости от времени поджигать светодиоды. (аля бинарные часы) Нашел мануал, симулирую в протеусе. И если светодиоды включать тушить у меня получается, то не могу подключить часы к меге, как только прописываю строку инициализации часов, все перестает работать. Подскажите что я не так делаю. Спасибо

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

Добавлено: Вт июн 03, 2014 11:02:10
ibiza11
Vrungel писал(а):А можно ли как-то "распаковать" бинарную библиотеку CV?
Чтобы подредактировать немного.
часть библиотек можно просто. часть не очень. http://we.easyelectronics.ru/Hoksmur/1- ... evers.html

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

Добавлено: Вт июн 03, 2014 20:47:17
Rosssss
Добрый день уважаемые форумчане. Прошу подмоги в таком деле: уже некоторое время норовлю понять как реализовать действие с помощью МК, а именно— при подаче напряжения с частотой в 1 Гц на порт 1, должен сработать порт 2 (подать напряжение). После чего проверить порт 1 на наличие напряжения. Если его нет—подождать 2 секунды и убрать напряжение с порта 2. В противном случае продолжать подавать напряжение на порт 2.
Благодарю всех.

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

Добавлено: Ср июн 04, 2014 10:32:14
pokk
Здравствуйте, можно ли заставить codevisionavr v2.05
Сворачивать

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

    #if 1
.....	
    #endif

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

Добавлено: Ср июн 04, 2014 10:33:31
ИС-пытатель
в фигурные скобки заключите конструкцию - и сворачивайте

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

Добавлено: Ср июн 04, 2014 11:55:17
pokk
Это я хотел сделать сворачивание для глобальных переменных что-то их до фига развилось.

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

Добавлено: Ср июн 04, 2014 12:14:56
Аlex
А в отдельный файл вынести, не ? :)

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

Добавлено: Ср июн 04, 2014 14:48:11
pokk
Так и есть и всё равно много я там разделил на группы АЦП таймер и тд вот их и хочу свернуть что бы потом легко было найти куда добавить.

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

Добавлено: Ср июн 04, 2014 15:22:06
ibiza11
заворачивайте в структуры

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

typedef struct {
...
} ADC_DATA_T;
ADC_DATA_T ADC1, ADC2;
все равно к глобальным переменным компиль по указателю обращается. По времени никакого выигрыша.

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

Добавлено: Сб июн 07, 2014 21:11:20
shadivl
При компиляции CVAVR выдаёт ошибку "Undefined symbol: __i2c_port". Тоже самое с __scl_bit и __sda_bit. Как её устранить?
P.S. Делаю браслет для измерения температуры тела и пульса. Все библиотеки - CVAVRовские, кроме ответственной за вывод инфы на экран (Flex LCD )

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

Добавлено: Сб июн 07, 2014 21:40:44
Pavel_1978
Дефайнами не заданы ноги I2C и соответственно порт

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

// I2C Bus functions
#asm
   .equ __i2c_port=0x18 ;PORTB
   .equ __sda_bit=0
   .equ __scl_bit=1
#endasm
#include <i2c.h>


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

Добавлено: Сб июн 07, 2014 21:57:31
shadivl
И действительно. Сказывается неопытность :)
Спасибо

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

Добавлено: Пн июн 09, 2014 05:19:13
pokk
Здравствуйте, меня интересует такой вопрос. После переполнения какой либо (глобальной локальной) переменной она сбросится в 0 или повлечёт за собой изменения по соседнему адресу ?

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

Добавлено: Пн июн 09, 2014 07:25:04
Panda_Y2K
В ноль.
Тип данных определяет их размер - int 2 байта, char 1 байт и за пределы этих размеров переменная не вылезет.

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

Добавлено: Пн июн 09, 2014 08:26:57
pyzhman

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

unsigned char a,b,c;
...
c= a + b;
компилируется в

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

;c= a + b;
      	MOV  R30,R2
      	ADD  R30,R3
      	MOV  R5,R30
Как видим, сброс в ноль не предусмотрен.

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

Добавлено: Пн июн 09, 2014 12:56:06
pokk
Что-то я не сообразил что через симулятор проверить. Подумал что он ерунду покажет.

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

volatile unsigned char test_inc;
...
test_inc++;
компилируется в

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

102:      test_inc++;
+00000FED:   91E00B94    LDS     R30,0x0B94       Load direct from data space
+00000FEF:   5FEF        SUBI    R30,0xFF         Subtract immediate
+00000FF0:   93E00B94    STS     0x0B94,R30       Store direct to data space
Так что в адрес пишется регистр значит другой адрес не как не заденет (не совсем понятно на кой он SUBI использует а не INC )
Для меня главное было убедится что при переполнении соседние переменные не пострадают а чему оно будет равно после переполнения это неважно всё равно я её сбрасываю при начале работы.

Так вот в процессе тестирования получил что код

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

  test_inc++;
  test_inc++;
  test_inc++;
компилируется в

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

102:      test_inc++;
+00000FA2:   91E00B94    LDS     R30,0x0B94       Load direct from data space
+00000FA4:   5FEF        SUBI    R30,0xFF         Subtract immediate
+00000FA5:   93E00B94    STS     0x0B94,R30       Store direct to data space
105:      
+00000FA7:   91E00000    LDS     R30,0x0000       Load direct from data space
+00000FA9:   64E0        ORI     R30,0x40         Logical OR with immediate
+00000FAA:   940E19B8    CALL    0x000019B8       Call subroutine
106:      
+00000FAC:   61E0        ORI     R30,0x10         Logical OR with immediate
+00000FAD:   940E19B8    CALL    0x000019B8       Call subroutine
где CALL 0x000019B8 это

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

+000019B8:   93E00500    STS     0x0500,R30       Store direct to data space
+000019BA:   9508        RET                      Subroutine return
Получается он всё что можно завернул в функцию. И этим увеличил выполнения кода в 3 раза хотя стоит максимальная оптимизация по скорости.
Можно ли его как-нибудь заставить не пихать всё в функции ? А то это не единственное место где он распихивает всё в функции.
У меня МК толстый флеша много меньше 30% использоваться будет.

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

Добавлено: Пн июн 09, 2014 14:33:33
ARV
а вы ерундой не майтесь.

в чем скрытый смысл тройного инкремента волатильной переменной? надо увеличить на 3, пишите сразу var += 3;
кроме того, вы на самом деле уверены, что переменная должна быть волатильной?

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

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

Добавлено: Пн июн 09, 2014 14:39:19
pokk
Я же написал что такая фигня происходила в других местах примеру вот тут было тоже самое.

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

    union BitByte {
        struct {
            unsigned F_I42:1;
            unsigned F_I28:1;
            unsigned F_I1:1;
            unsigned F_I2:1;
            unsigned F_T1:1;
            unsigned F_T2:1;
            unsigned F_AC:1;
            unsigned F_Pout:1; 
        } flag;
        unsigned char byte;
    };
    union BitByte FLAG;

используется так

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

    FLAG.flag.F_AC=1;
    FLAG.flag.F_T1=1;
    FLAG.flag.F_I1=0;
    FLAG.flag.F_I2=1;
    FLAG.byte=0;