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

Обсуждаем контроллеры компании Atmel.
Vrungel
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт сен 07, 2007 22:13:42
Откуда: Мариуполь

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

Сообщение Vrungel »

А можно ли как-то "распаковать" бинарную библиотеку CV?
Чтобы подредактировать немного.
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

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

Сообщение ИС-пытатель »

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

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

Сообщение Shershnyov »

Решил собрать простенький проект в зависимости от времени поджигать светодиоды. (аля бинарные часы) Нашел мануал, симулирую в протеусе. И если светодиоды включать тушить у меня получается, то не могу подключить часы к меге, как только прописываю строку инициализации часов, все перестает работать. Подскажите что я не так делаю. Спасибо
Вложения
Watch.rar
(38.92 КБ) 153 скачивания
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

Vrungel писал(а):А можно ли как-то "распаковать" бинарную библиотеку CV?
Чтобы подредактировать немного.
часть библиотек можно просто. часть не очень. http://we.easyelectronics.ru/Hoksmur/1- ... evers.html
Ставим плюсы: )
Rosssss
Родился
Сообщения: 1
Зарегистрирован: Вт июн 03, 2014 20:24:07

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

Сообщение Rosssss »

Добрый день уважаемые форумчане. Прошу подмоги в таком деле: уже некоторое время норовлю понять как реализовать действие с помощью МК, а именно— при подаче напряжения с частотой в 1 Гц на порт 1, должен сработать порт 2 (подать напряжение). После чего проверить порт 1 на наличие напряжения. Если его нет—подождать 2 секунды и убрать напряжение с порта 2. В противном случае продолжать подавать напряжение на порт 2.
Благодарю всех.
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Здравствуйте, можно ли заставить codevisionavr v2.05
Сворачивать

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

    #if 1
.....   
    #endif
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

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

Сообщение ИС-пытатель »

в фигурные скобки заключите конструкцию - и сворачивайте
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Это я хотел сделать сворачивание для глобальных переменных что-то их до фига развилось.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

А в отдельный файл вынести, не ? :)
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Так и есть и всё равно много я там разделил на группы АЦП таймер и тд вот их и хочу свернуть что бы потом легко было найти куда добавить.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

заворачивайте в структуры

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

typedef struct {
...
} ADC_DATA_T;
ADC_DATA_T ADC1, ADC2;
все равно к глобальным переменным компиль по указателю обращается. По времени никакого выигрыша.
Ставим плюсы: )
Аватара пользователя
shadivl
Открыл глаза
Сообщения: 76
Зарегистрирован: Пт май 28, 2010 13:41:16
Откуда: Мариинск, Томск

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

Сообщение shadivl »

При компиляции CVAVR выдаёт ошибку "Undefined symbol: __i2c_port". Тоже самое с __scl_bit и __sda_bit. Как её устранить?
P.S. Делаю браслет для измерения температуры тела и пульса. Все библиотеки - CVAVRовские, кроме ответственной за вывод инфы на экран (Flex LCD )
Вложения
flex_lcd.c
(5.26 КБ) 215 скачиваний
ElectroBraslet.c
(4 КБ) 185 скачиваний
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

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

Сообщение Pavel_1978 »

Дефайнами не заданы ноги I2C и соответственно порт

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

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

Аватара пользователя
shadivl
Открыл глаза
Сообщения: 76
Зарегистрирован: Пт май 28, 2010 13:41:16
Откуда: Мариинск, Томск

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

Сообщение shadivl »

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

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

Сообщение pokk »

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

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

Сообщение Panda_Y2K »

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

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

Сообщение pyzhman »

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

unsigned char a,b,c;
...
c= a + b;

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

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

;c= a + b;
         MOV  R30,R2
         ADD  R30,R3
         MOV  R5,R30

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

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

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

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

Сообщение ARV »

а вы ерундой не майтесь.

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

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

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

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

Сообщение 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;
Ответить

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