Страница 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
Сворачивать
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
компилируется в
Код: Выделить всё
;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 )
Для меня главное было убедится что при переполнении соседние переменные не пострадают а чему оно будет равно после переполнения это неважно всё равно я её сбрасываю при начале работы.
Так вот в процессе тестирования получил что код
компилируется в
Код: Выделить всё
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;