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

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Сообщение ut1wpr »

Совесть писал(а):Потратить 2 месяца на микросхему с одним управляющим регистром при этом перебирать "тонны разных библиотек" и не добиться успехов?! Сдается мне, что вашему "ИМХО" можно смело не доверять.
+100500!
Не поверите! Ни одной библиотеки! Все написал согласно ДШ и на камень и на протокол. Заработало сразу и навсегда. Потому и беда, что "тонны библиотек" на столе, а что в голове? Библиотеки лучше применять, когда все основы и принципы поняты и нет вопросов. Когда надо срочно и быстро. А изучать по этому принципу не годится.
С уважением,
Виктор.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

skyzi писал(а): 1.Можно ли использовать в операторе

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

 Switсh (выражение) {};
в место выражения, например переменной которой перед этим будет присвоено значение?
определенно можно, ведь оператор Switсh имеет лишь одно ограничение - работает только с целыми числами, таким образом отбросив после всех вычислений дробную часть можно кормить переменную в Switсh.
в самом перечислении случаев сработки Switсh (они же case x: ) не должно быть никаких выражений, которые требуют интерактивного вычисления.Можно только такие,которые возможно вычислить на этапе компиляции.
В поисках истины человек развивается.
Контактная информация:
Реклама
Родился
Аватара пользователя
Сообщения: 17
Зарегистрирован: Пн июл 23, 2012 20:55:26
Откуда: Ростов-на-Дону

Сообщение skyzi »

vitalik_1984 писал(а):
skyzi писал(а): 1.Можно ли использовать в операторе

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

 Switсh (выражение) {};
в место выражения, например переменной которой перед этим будет присвоено значение?
определенно можно, ведь оператор Switсh имеет лишь одно ограничение - работает только с целыми числами, таким образом отбросив после всех вычислений дробную часть можно кормить переменную в Switсh.
в самом перечислении случаев сработки Switсh (они же case x: ) не должно быть никаких выражений, которые требуют интерактивного вычисления.Можно только такие,которые возможно вычислить на этапе компиляции.
Понял, теперь бы со 2ым, вопросом бы разобраться...
"Урок, который я извлек и которому следую всю жизнь, состоял в том, что надо пытаться, и пытаться, и опять пытаться - но никогда не сдаваться!" © Ричард Бренсон
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

skyzi, аккуратнее :wink:
Правила форума писал(а): 2.7 Запрещается полное цитирование предыдущего сообщения. Допускается цитирование только части сообщения, необходимой для смысловой связи с предыдущим сообщением.
В поисках истины человек развивается.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Сообщение levaclaus »

вопрос, считываю из ds1307 к примеру минуты "minuts=26",
как эти minuts разложить, чтоб в "ten_min" оказались десятки, в "min" единицы.?
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Сообщение Apparatchik »

levaclaus писал(а):вопрос, считываю из ds1307 к примеру минуты "minuts=26",
как эти minuts разложить, чтоб в "ten_min" оказались десятки, в "min" единицы.?
Если считано в двоичном формате (библиотека уже перевела) то делением на 10 и взятием целого либо остатка. Если считано как есть, тоесть в двоично десятичном формате, то наложением маски и сдвигом.
«И всё-таки она вертится!»
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Сообщение levaclaus »

пример был бы здоровски
Встал на лапы
Аватара пользователя
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

Сообщение hd44780 »

levaclaus писал(а):вопрос, считываю из ds1307 к примеру минуты "minuts=26",
как эти minuts разложить, чтоб в "ten_min" оказались десятки, в "min" единицы.?
Ну даёте ...

ten_min=minutes/10;
min=minutes%10;

Математика, 2-й класс средней школы ...
Держит паяльник хвостом
Аватара пользователя
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Сообщение Apparatchik »

levaclaus писал(а):пример был бы здоровски

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

/*для двоичной системы*/
minuts = 26;
ten_min = minuts / 10;
min = minuts % 10;

/*для двоичнодесятичной системы*/
ten_min = minuts >> 4;
min = minuts & 0x0F;
«И всё-таки она вертится!»
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 190
Зарегистрирован: Чт фев 24, 2011 13:00:49

Сообщение wellcom »

Всем привет! Видит датчиков больше чем просил! Почему? Подключаю несколько датчиков 18В20 к меге 32, мне нужно что бы максимальное количество датчиков было не больше 5, соответственно пишу:

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

#define MAX_DEVICES_18B20 4     //максимальное количество датчиков 
unsigned char rom_codes[MAX_DEVICES_18B20][9];  //масив ROM кодов датчиков
void Search_18B20 (void)  //поиск и инициализация датчиков
{
  uchar devices,i,j;
  devices = w1_search (0xf0, rom_codes);  //Определить количество DS18B20 подключенных к шине и хранить коды ROM в массив
  if (devices) //если датчики были найдены
  {  
    for (i=0;i<devices;i++)
    {
        sprintf(Resp,"\r\nINITIALIZING DEVICE #%-u",i+1);UART_SendStr(Resp);
     if (ds18b20_init(&rom_codes[i][0],0,0,DS18B20_9BIT_RES))//инициализация. Анализ присутствия (адр.датч, нижн.порог Т, верхн.порог Т, разрешение) 
      {                 
        sprintf(Resp,"ROM CODE IS:"); UART_SendStr(Resp);
        for (j=0;j<8;j++) //выводим поочередно каждый байт ROM кода
        {
         sprintf(Resp,"%-X ",rom_codes[i][j]); UART_SendStr(Resp); 
        }
        sprintf(Resp,">OK"); UART_SendStrR(Resp); 
      }
     ............
  }
А вот ето результат работы проги:

INITIALIZING DEVICE #1ROM CODE IS:28 30 C5 B8 0 0 0 8E >OK
INITIALIZING DEVICE #2ROM CODE IS:28 34 C5 B8 0 0 0 52 >OK
INITIALIZING DEVICE #3ROM CODE IS:28 32 C5 B8 0 0 0 E0 >OK
INITIALIZING DEVICE #4ROM CODE IS:28 31 C5 B8 0 0 0 B9 >OK
INITIALIZING DEVICE #5ROM CODE IS:28 45 C5 B8 0 0 0 FD >OK
INITIALIZING DEVICE #6ROM CODE IS:28 33 C5 B8 0 0 0 D7 >OK

Почему их 6?..я же указал 5!, и пробовал MAX_DEVICES_18B20 = даже 1, всеравно находит 6! Кто встречался с таким? как бороться? Спасибо.
:solder: 32-х ядерный процессор из П213В
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

указали

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

 devices = w1_search (0xf0, rom_codes);  //Определить количество DS18B20 подключенных к шине и хранить коды ROM в массив
  if (devices) //если датчики были найдены
  {  
    for (i=0;i<devices;i++) 
Где то тут кроется.Вы передали функции w1_search указатель, она забивает под завязку пока видит устройства,
потом берете переменную devices которая опять же равна шести и сравниваете в цикле не странно ли?
Где ограничение Макс_девайсес используется?
В поисках истины человек развивается.
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 190
Зарегистрирован: Чт фев 24, 2011 13:00:49

Сообщение wellcom »

vitalik_1984, при обьявлении масива использую MAX_DEVICES_18B20 , вот

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

unsigned char rom_codes[MAX_DEVICES_18B20][9];  //масив ROM кодов датчиков
но каким то образом ф-ция поиска гребет себе байты масива сколько хочет, мож какой то баг компилятора, иначе зачем такой пример в хелпе компилятора....Какие идеи еще будут?
:solder: 32-х ядерный процессор из П213В
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

скачал новую версию проги......, генератор кода выдает вот такой код

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

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<TOIE0);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);

// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);

// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

// SPI initialization
// SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

// TWI initialization
// Mode: TWI Master
// Bit Rate: 100 kHz
twi_master_init(100);
как вернуться к старому кто-нибудь знает ?
Tell Me The Truth
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 190
Зарегистрирован: Чт фев 24, 2011 13:00:49

Сообщение wellcom »

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

Сообщение FreshMan »

в принципе вы правы....., просто спортивный интерес :)
еще....., можна ли задавать стили редактирования кода ?
если перейти в меню help - AVR data sheets то оные он ищет с помощью интернет эксплоэра......., а как сделать чтобы он их искал с помощью оперы ?
Tell Me The Truth
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Установить оперу браузером по умолчанию
но каким то образом ф-ция поиска гребет себе байты масива сколько хочет, мож какой то баг
это не баг компилятора, а нежелание думать над тем, что вам пишут.
вы просто объявили размер изначального массива.Функции неважно какого размера массив.Вы ей передали указатель(адрес нулевой ячейки )и к нему прибавляете.Функция считает смещение от начального адреса и туда пишет.
Можно было вообще не указывать размер массива.
А ограничение сделать на этапе поиска устройств.

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

Ищем.
устройств <=макс_устройств?
нет- идем к пункту ищем
В поисках истины человек развивается.
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 190
Зарегистрирован: Чт фев 24, 2011 13:00:49

Сообщение wellcom »

vitalik_1984 писал(а): это не баг компилятора, а нежелание думать над тем, что вам пишут.
согласен....хотя я примерно так и подозревал......Спасибо за подсказку, но дело в том, я так думаю, что встроенная ф-ция ищет один раз, при этом только после окончания поиска возвращает количество устройств. По вашему алгоритму нужно свою ф-цию писать...
:solder: 32-х ядерный процессор из П213В
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Получается нужно писать, или в той функции правку сделать :idea:
В поисках истины человек развивается.
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 351
Зарегистрирован: Пн сен 12, 2011 12:13:46

Сообщение Garin »

Здравствуйте, прошу подсказать кусок кода RMS вольтметра 220 вольт, для CodeVision AVR.
Работающий по такой вот схеме.
Изображение
или если кто знает, где есть такой пример на CodeVision AVR, дайте пожалуйста ссылку.
Вложения
Urms.jpg
(41.72 КБ) 1321 скачивание
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Вт апр 21, 2009 13:31:27
Откуда: Санкт-Петербург

Сообщение AlexFisher »

Такого примера в коде-вижн нет :) И нехорошо подавать 120 вольт на ногу процессора, пусть даже и на цифровую!
[i]Да здравствует всё то, благодаря чему мы не смотря ни на что![/i]
Контактная информация:
Ответить

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