deus97
Участник-
Постов
20 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о deus97
-
Звание
Участник
- День рождения 21.04.1986
Контакты
-
Сайт
Array
-
ICQ
Array
Информация
-
Город
Array
-
Контроллер Etnernet+ RS232 + AIN
deus97 ответил adventurer тема в Интерфейсы
Чтоб не создавать новую тему, спрошу здесь. Необходимо преобразовать синхронный RS232C в ethernet, а на приёмной стороне ethernet в асинхронный RS232, так вот если с приёмной стороной всё понятно (есть куча готовых конвертеров), то с передатчиком проблема. Может ткнёте в готовый конвертер синхронный RS232 -> ethernet? -
Как определить где зависает?
deus97 ответил deus97 тема в MCS51, AVR, PIC, STM8, 8bit
Всем спасибо отловил место зависания весьма нехитрым способом: наставил в коде несколько меток, которые устанавливались при выполнении конкретной части кода, при зависании WDT давал прерывание, в обработчике которого значения меток сливались в eeprom, далее происходит ресет по WDT и слив полученных меток в сеть при старте программы. Соответственно, последняя активированная метка перед не активированной и показала место зависания. -
Как определить где зависает?
deus97 ответил deus97 тема в MCS51, AVR, PIC, STM8, 8bit
UART не предусмотрен, поэтому хотелось бы использовать имеющийся ethernet интерфейс, возможно ли, например по прерыванию от вотчдога, сохранить в еепром какую-то информацию о месте где была программа в момент этого прерывания, чтоб после перезагрузки передать её по сети? Например значение программного счётчика? Как в CVAVR обратиться к этому счётчику? Просто давно это уже было и сейчас приходится заново вникать:( -
Как определить где зависает?
deus97 опубликовал тема в MCS51, AVR, PIC, STM8, 8bit
В общем, где-то год назад было сделано устройство на ATmega168, которое нормально работает, но вот обнаружилось, что оно периодически (до 5 раз в день) программно зависает и перезагружается по сторожевому таймеру. Как определить где именно зависает? Устройство имеет светодиод, но им отлаживать, учитывая частоту зависания, не хочется. Есть выход в локальную сеть для передачи UDP-пакетов, в режиме прерывания по watchdog всё вполне работоспособно, как узнать в каком месте зависает? Программа написана на CVAVR. Заранее спасибо. -
Недавно закончил работу над подобным устройством, но элементная база другая - ATmega168 и ENC28j60. Вкратце - в силовом шкафу устанавливается плата, устройство измеряет напряжение по 3-м фазам и контролирует до 11-ти точек в электрической схеме, затем информация передаётся через интернет, либо локальную сеть на сервер, где графически отображается сменному инженеру предприятия. Сейчас работает уже 6 таких плат 5 в локальной сети и одна через интернет. На такой же элементной базе могу сделать устройство под ваши нужды.
-
З/У мобильного телефона как блок питания
deus97 ответил deus97 тема в Схемотехника
Нашёл вот такой вот БП http://step-el.com.ua/e-store/power/elemen...ELEMENT_ID=5221, вроде то же, что и зарядник, но гарантия 2 года. Насчёт рассеиваемой на стабилизаторе мощности знаю, с тем учётом и выбрал питание 5В, т.к. с учётом типового падения на стабилизаторе 1,5В, как раз и получается 4,8В, минимальный нагрев будет. -
З/У мобильного телефона как блок питания
deus97 опубликовал тема в Схемотехника
Необходимо питать устройство стабильным напряжением 3.3В, ток макс 300мА , 150-200мА продолжительно. Пилотный образец уже готов и в процессе отладки работал ежедневно по 8 часов с питанием от мобильного зарядника (5.5В, 500мА), через стабилизатор 3.3В (LD33V). Теперь необходимо определится с постоянной схемой питания, думаю оставить как есть, но зарядник разобрать и его плату прикрепить к плате устройства. Работа предполагается круглосуточная, непрерывная в течении многих и многих лет:) Есть какие-либо противопоказания такому решению? Может посоветуете что-либо более дешевое/надёжное/простое? Предполагается создание 5-ти аналогичных устройств. И ещё, напишите кто какие знает стабилизаторы напряжения 3.3В на ток более 300мА (их точную маркировку), а то LD33V не могу больше найти, а других в ассортименте инет магазинов не попадается. Заранее спасибо! -
CodeVision+указатели+прерывание
deus97 ответил deus97 тема в MCS51, AVR, PIC, STM8, 8bit
Работает уже сутки без сбоев, всем большое спасибо за помощь! -
CodeVision+указатели+прерывание
deus97 ответил deus97 тема в MCS51, AVR, PIC, STM8, 8bit
Объявил массив в месте его использования, функции передаю указатель. Сегодня утром прошился, уже 1,5 часа полёт нормальный, надо ещё погонять, потом отпишусь. -
CodeVision+указатели+прерывание
deus97 ответил deus97 тема в MCS51, AVR, PIC, STM8, 8bit
Goodefine, попробую, но определено, что проблема не возникает, если перед самым return'ом из get_adc_data(), сбросить TCNT2, т.е. чтобы прерывание точно не попало на кусок с указателями. Из while(1), если TOV1 не установлен... никак не выходит... признаю свою вину. "А стек увеличивать пробовали?.." - нет, а как?:) _Pasha, можно и так, а что это даст, если я правильно понимаю, то просто добавится ещё один прыжок, а время обработки прерывания останется тем же? Sergey Reva, очень логично, сделаю, спасибо. -
CodeVision+указатели+прерывание
deus97 ответил deus97 тема в MCS51, AVR, PIC, STM8, 8bit
1) pointer точно не используется в прерывании. i объявлена в начале main(), да и не на i подозрения т.к. сегодня отловил, что та же проблема, но реже, возникает если вырубать прерывания только на кусок с циклом for. Т.е. портится указатель даже на строке pointer=get_adc_data(); 2) нет, размер service_msg не превышаю. Привожу код get_adc_data(): unsigned int* get_adc_data(void) { unsigned char i; unsigned int adc_data=0; unsigned int analog_vals_arr[6]={0,0,0,0,0,0}; // ADC Clock frequency: 130,156 kHz ADCSRA=0x86;// ADC enable; ADC int.disable; prescaler=64 TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; TCCR1B=0x03;// clk/64 do{ for (i=0; i<6; i++) { ADMUX&=0b11110000; ADMUX|=i; ADCSRA|=0x40; while(!(ADCSRA & (1<<ADIF))); ADCSRA|=(1<<ADIF); adc_data=ADCW; check(adc_data, i); }; // check timer1 overflow flag if (TIFR &= (1<<TOV1)) { TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; TIFR |= (1<<TOV1); timer1(analog_vals_arr); break; }; } while(1); ADCSRA clrb(ADEN);//stop ADC return (analog_vals_arr); } функция timer1 получает указатель analog_vals_arr и заполняет массив необходимыми значениями -
CodeVision+указатели+прерывание
deus97 опубликовал тема в MCS51, AVR, PIC, STM8, 8bit
Написал вот такой код: interrupt [TIM2_OVF] void timer2_ovf_isr(void) { // Stop timer TCCR2=0x00; if(get_incoming_pkt()==3){ switch (check_command(myip)) { case 0: strcpyf(service_msg, "Micro_device#0:not_a_command"); service_msg[13]=device_id; send_to_server(service_msg, service_msg_len); break; case 1: init_ip_arp_udp(mymac,myip); strcpyf(service_msg, "Micro_device#0:IP_changed"); service_msg[13]=device_id; send_to_server(service_msg, service_msg_len); break; case 2: strcpyf(service_msg, "Micro_device#0:comm_2_done"); service_msg[13]=device_id; send_to_server(service_msg, service_msg_len); break; default: strcpyf(service_msg, "Micro_device#0:command_Error"); service_msg[13]=device_id; send_to_server(service_msg, service_msg_len); }; }; // Start timer TCCR2=0x07; TCNT2=0x00; } // end of interrupt void main(void) .... unsigned int* pointer; ...... pointer=get_adc_data(); for(i=0;i<6;i++){ data_msg[16+2*i]=(*(pointer+i))>>8; //MSB data_msg[16+2*i+1]=(*(pointer+i)) & 0xff; //LSB }; ...... Проблема следующая: при возникновении прерывания во время работы с указателем, значения записываемые в data_msg[], искажаются. При запрете прерываний на этот кусок кода, всё работает нормально. -
Вот мой кусок кода на С, работает как надо: for (i=0; i<6; i++) { ADMUX&=0b11110000; ADMUX|=i; ADCSRA|=0x40; while(!(ADCSRA & (1<<ADIF))); ADCSRA|=(1<<ADIF); adc_data=ADCW; ..... };
-
Требуются программисты, Киев
deus97 ответил Constantin тема в Предлагаю работу
Извините, но вы говорите о том, в чём абсолютно не разбираетесь. Гражданские радиолокаторы используют как вторичную (пассивную), так и первичную (активную) радиолокацию, и если вы готовы об этом спорить, значит вы просто "не в теме". По поводу финансирования проектов Аэротехники и их коммерческой ценности вы снова не правы, с госбюджетом у них связь весьма далёкая, поэтому не пишите того, о чём не знаете.