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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

R_ura писал(а):зачем перед &ee_wrk_1 определять тип данных (eeprom unsigned char*)&ee_wrk_1 и почему в скобках?

Это стандарт явного приведения типов предназначен для того чтобы работать с различными типами данных как с обычными.
Хотя это и не обязательно.У меня и

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

copy(&Y,&X);

Правда как при этом работать будет неясно ведь это указатель размером с type_wrk должен получиться.
В поисках истины человек развивается.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

R_ura писал(а):зачем перед &ee_wrk_1 определять тип данных (eeprom unsigned char*)&ee_wrk_1 и почему в скобках? Это такая особенность КВ или стандартная сишная вещь?


явное преобразование типа. ШОБ не ругалося... :)) Оно и так преобразует...но скажет suspicious pointer conversion

Правда как при этом работать будет неясно ведь это указатель размером с type_wrk должен получиться.


Вы же его подставляете в параметр функции с типом (unsigned char*) - поэтому он просто преобразуется в него. По крайней мере, у мну так.
ЗЫ Кстати проверил. Фишка с разделением типов для eeprom и ram только на 1.25.5. На 2.05 одну и туже структуру можно в разные области "пихнуть" без проблем.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

еще на юнионах
Вложения
main.zip
(2.04 КБ) 200 скачиваний
SH_Pasha
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс янв 15, 2012 16:31:49

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

Сообщение SH_Pasha »

Посоны, codevision работает в семерке? просто постоянно ошибка выскакивает после установки
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

ЗЫ Кстати проверил. Фишка с разделением типов для eeprom и ram только на 1.25.5. На 2.05 одну и туже структуру можно в разные области "пихнуть" без проблем.

а разве я уже этого не показал кодом выше?внимательнее нужно читать;-).
SH_Pasha писал(а):Посоны

??? что совсем клавиши не работают?
В поисках истины человек развивается.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

есть ли в данной проге стандартная ф-ция антидребезга ? :tea:
Tell Me The Truth
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

А что в антидребезге сложного?Возьмите да ручками напишите.
В поисках истины человек развивается.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

а вы можете написать ? покажите, плиз.......
Tell Me The Truth
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

FreshMan писал(а):а вы можете написать ? покажите, плиз.......


А задержку сделать не резон? Или у вас коммутируются киловатные нагрузки?
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Заметьте эта функция применима не только к указателям на ЕЕПРОМ.

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

//Ф-ция копирует данные в структуру *p1 /RAM/ из струтуры *p2 /RAM/  
void copy_struct_to_struct (unsigned char *p1,  unsigned char *p2,  unsigned char size)
{
while (
size--){*p1++=*p2++;};
}; 
FreshMan писал(а):а вы можете написать ? покажите, плиз.......

Легко

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


A
=PINB;
_delay_us(200);
If (
A==PINBbuttons(A);
 
В поисках истины человек развивается.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

а как это сделать без делей ?
Tell Me The Truth
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

FreshMan писал(а):а как это сделать без делей ?


Запускаете таймер на, допустим, 50мкс. Каждые 50 мкс в прерывании опрашиваете все кнопки - если 1 - инкрементировать счётчик кнопки. А через 100 таких опросов - проверяете результат и обнуляйте счётчик. Если у вас например 80 из 100 - то считайте что нажаТО - выставляйте флаг, который будет отработан в основном цикле и тоже обнулён.
Последний раз редактировалось demiurg301 Чт мар 08, 2012 00:49:40, всего редактировалось 1 раз.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Если через каждые 5 мс то туда немного войдет...
Можно так

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

//Прерывание таймера
static char Buttons,Buttons_old;
Buttons_old=Buttons;
Buttons PINB&BUTTON_mask;
if (
Buttons==Buttons_old){
      if(!(--
a)) set_flag();

Хотя тратить на антидребезг целый таймер...Лучше уж использовать тот, на котором динамическая индикация построена.
В поисках истины человек развивается.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

vitalik_1984 писал(а):
Хотя тратить на антидребезг целый таймер...Лучше уж использовать тот, на котором динамическая индикация построена.


Если программа в цикле постоянно, то можно вообще цикл заюзать.
Создать счётчики по кол-ву кнопок и счётчик циклов. 1000-10000-100000 циклов прошло - проверяем счётчики кнопок.
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

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

Сообщение R_ura »

Что в этой строчке не нравится компилятору? Корректно ли в КВ так с портами обращаться?

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

if ((PORTA==0x00000001) || (PORTA==0x10000001)){

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

Warning: C:\MARBLE\CodeVision_2012\CodeVision_2012.c(1289): pointless integer comparison with an out of range constant
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Юр я тоже заметил :)
Это значит бессмысленное сравнение целого с константой вне допустимого диапазона.
Как ты до этого компилировал?
Ты тут использовал лог сравнение

А надо было маску применить

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

if ((PORTA&0x00000001) || (PORTA&0x10000001)){ 
В поисках истины человек развивается.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

vitalik_1984 писал(а):А надо было маску применить
if ((PORTA&0x00000001) || (PORTA&0x10000001)){ 


НЕ в маске дело! Не великовато?
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

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

Сообщение R_ura »

Черт возьми, действительно бред какой-то написал..
Это же шестнадцатеричное число вместо двоичного.. Изображение
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Точно :shock: и я не заметил... :oops:
В поисках истины человек развивается.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

мне нужно настроит таймер 1 чтобы он срабатывал каждые 5мс................, опорная частота 1МГц..........., вот как я это сделал
http://4put.ru/pictures/max/279/857640.jpg
но в программе он не работает.............., что я выставил не так ?
Tell Me The Truth
Ответить

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