Страница 215 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср авг 08, 2012 16:55:17
ut1wpr
Совесть писал(а):Потратить 2 месяца на микросхему с одним управляющим регистром при этом перебирать "тонны разных библиотек" и не добиться успехов?! Сдается мне, что вашему "ИМХО" можно смело не доверять.
+100500!
Не поверите! Ни одной библиотеки! Все написал согласно ДШ и на камень и на протокол. Заработало сразу и навсегда. Потому и беда, что "тонны библиотек" на столе, а что в голове? Библиотеки лучше применять, когда все основы и принципы поняты и нет вопросов. Когда надо срочно и быстро. А изучать по этому принципу не годится.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср авг 08, 2012 17:57:28
vitalik_1984
skyzi писал(а):
1.Можно ли использовать в операторе
в место выражения, например переменной которой перед этим будет присвоено значение?
определенно можно, ведь оператор Switсh имеет лишь одно ограничение - работает только с целыми числами, таким образом отбросив после всех вычислений дробную часть можно кормить переменную в Switсh.
в самом перечислении случаев сработки Switсh (они же case x: ) не должно быть никаких выражений, которые требуют интерактивного вычисления.Можно только такие,которые возможно вычислить на этапе компиляции.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср авг 08, 2012 18:25:13
skyzi
vitalik_1984 писал(а):skyzi писал(а):
1.Можно ли использовать в операторе
в место выражения, например переменной которой перед этим будет присвоено значение?
определенно можно, ведь оператор Switсh имеет лишь одно ограничение - работает только с целыми числами, таким образом отбросив после всех вычислений дробную часть можно кормить переменную в Switсh.
в самом перечислении случаев сработки Switсh (они же case x: ) не должно быть никаких выражений, которые требуют интерактивного вычисления.Можно только такие,которые возможно вычислить на этапе компиляции.
Понял, теперь бы со 2ым, вопросом бы разобраться...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср авг 08, 2012 19:01:18
vitalik_1984
skyzi, аккуратнее
Правила форума писал(а): 2.7 Запрещается полное цитирование предыдущего сообщения. Допускается цитирование только части сообщения, необходимой для смысловой связи с предыдущим сообщением.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 13, 2012 20:29:52
levaclaus
вопрос, считываю из ds1307 к примеру минуты "minuts=26",
как эти minuts разложить, чтоб в "ten_min" оказались десятки, в "min" единицы.?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 13, 2012 20:35:37
Apparatchik
levaclaus писал(а):вопрос, считываю из ds1307 к примеру минуты "minuts=26",
как эти minuts разложить, чтоб в "ten_min" оказались десятки, в "min" единицы.?
Если считано в двоичном формате (библиотека уже перевела) то делением на 10 и взятием целого либо остатка. Если считано как есть, тоесть в двоично десятичном формате, то наложением маски и сдвигом.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 13, 2012 21:19:06
levaclaus
пример был бы здоровски
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 13, 2012 21:28:09
hd44780
levaclaus писал(а):вопрос, считываю из ds1307 к примеру минуты "minuts=26",
как эти minuts разложить, чтоб в "ten_min" оказались десятки, в "min" единицы.?
Ну даёте ...
ten_min=minutes/10;
min=minutes%10;
Математика, 2-й класс средней школы ...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 13, 2012 21:28:47
Apparatchik
levaclaus писал(а):пример был бы здоровски
Код: Выделить всё
/*для двоичной системы*/
minuts = 26;
ten_min = minuts / 10;
min = minuts % 10;
/*для двоичнодесятичной системы*/
ten_min = minuts >> 4;
min = minuts & 0x0F;
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт авг 17, 2012 11:09:41
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! Кто встречался с таким? как бороться? Спасибо.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт авг 17, 2012 22:11:35
vitalik_1984
указали
Код: Выделить всё
devices = w1_search (0xf0, rom_codes); //Определить количество DS18B20 подключенных к шине и хранить коды ROM в массив
if (devices) //если датчики были найдены
{
for (i=0;i<devices;i++)
Где то тут кроется.Вы передали функции w1_search указатель, она забивает под завязку пока видит устройства,
потом берете переменную devices которая опять же равна шести и сравниваете в цикле не странно ли?
Где ограничение Макс_девайсес используется?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб авг 18, 2012 15:55:54
wellcom
vitalik_1984, при обьявлении масива использую MAX_DEVICES_18B20 , вот
Код: Выделить всё
unsigned char rom_codes[MAX_DEVICES_18B20][9]; //масив ROM кодов датчиков
но каким то образом ф-ция поиска гребет себе байты масива сколько хочет, мож какой то баг компилятора, иначе зачем такой пример в хелпе компилятора....Какие идеи еще будут?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб авг 18, 2012 17:34:40
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);
как вернуться к старому кто-нибудь знает ?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб авг 18, 2012 19:37:21
wellcom
FreshMan писал(а):
как вернуться к старому кто-нибудь знает ?
А какой смысл...зачем?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб авг 18, 2012 20:09:57
FreshMan
в принципе вы правы....., просто спортивный интерес
еще....., можна ли задавать стили редактирования кода ?
если перейти в меню help - AVR data sheets то оные он ищет с помощью интернет эксплоэра......., а как сделать чтобы он их искал с помощью оперы ?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб авг 18, 2012 21:41:01
vitalik_1984
Установить оперу браузером по умолчанию
но каким то образом ф-ция поиска гребет себе байты масива сколько хочет, мож какой то баг
это не баг компилятора, а нежелание думать над тем, что вам пишут.
вы просто объявили размер изначального массива.Функции неважно какого размера массив.Вы ей передали указатель(адрес нулевой ячейки )и к нему прибавляете.Функция считает смещение от начального адреса и туда пишет.
Можно было вообще не указывать размер массива.
А ограничение сделать на этапе поиска устройств.
Код: Выделить всё
Ищем.
устройств <=макс_устройств?
нет- идем к пункту ищем
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс авг 19, 2012 21:09:48
wellcom
vitalik_1984 писал(а): это не баг компилятора, а нежелание думать над тем, что вам пишут.
согласен....хотя я примерно так и подозревал......Спасибо за подсказку, но дело в том, я так думаю, что встроенная ф-ция ищет один раз, при этом только после окончания поиска возвращает количество устройств. По вашему алгоритму нужно свою ф-цию писать...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс авг 19, 2012 22:40:32
vitalik_1984
Получается нужно писать, или в той функции правку сделать

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт авг 21, 2012 10:52:09
Garin
Здравствуйте, прошу подсказать кусок кода RMS вольтметра 220 вольт, для CodeVision AVR.
Работающий по такой вот схеме.

или если кто знает, где есть такой пример на CodeVision AVR, дайте пожалуйста ссылку.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт авг 21, 2012 11:06:20
AlexFisher
Такого примера в коде-вижн нет

И нехорошо подавать 120 вольт на ногу процессора, пусть даже и на цифровую!