Jump to content

    

LEXIS

Участник
  • Content Count

    61
  • Joined

  • Last visited

Community Reputation

0 Обычный

About LEXIS

  • Rank
    Участник
  1. Спасибо запомощь, проблему решил следующим образом: Остановил прерывания, изменил скорость, разрешил заново прерывания. Может из-за этого не работало, но теперь скорость можно менять налету.
  2. Это делается в CAN_Init(CANx, &CAN_InitStructure); вапиант хороший, а как програмно сделать рестарт?
  3. Смысл изменения скорости не в том, чтобы соединить разноскоростные устройства, а для тонкой настройки по месту, например, при шумном канале уменьшать скорость. При этом изменение скорости будет происходить для всех устройств одновременно. Либо настраивать запрограммированное устройство на другую скорость. В моем мануале это 23.4.1. или у Вас какой-то другой? Добавил как написано в мануале CAN_DeInit(CANx); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); CAN1->MCR |= CAN_MCR_INRQ; // wait while CAN entered to initialization mode while (!(CAN1->MSR & CAN_MSR_INAK)); // CAN to initialization mode CAN_StructInit(&CAN_InitStructure); Как обычно инициализируется, но скорость не переключает.
  4. Есть контроллер STM32F103C6, инициализирую CAN модуль на скорость 500 кб/с. На этой скорости работает. Потом по CAN шине приходит команда на смену скорости - меняю, например, на 600 кб/с. - не работает, хотя если принудительно задать эту скорость изначально - то работает. Как правильно надо менять скорость во время работы. Функция настройки скорости ниже (опущена инициализация портов, фильтров и прерываний): void CAN_Config(unsigned int bitrate)//Kbit/sec { char BitTimeCAN=0; CAN_DeInit(CANx); CAN_StructInit(&CAN_InitStructure); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); /* CAN cell init */ CAN_InitStructure.CAN_TTCM = DISABLE; CAN_InitStructure.CAN_ABOM = DISABLE; CAN_InitStructure.CAN_AWUM = DISABLE; CAN_InitStructure.CAN_NART = DISABLE; CAN_InitStructure.CAN_RFLM = DISABLE; CAN_InitStructure.CAN_TXFP = DISABLE; CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; /* CAN Baudrate */ // SetSpeed (bitrate/1000); switch (bitrate) { case 1000: BitTimeCAN = 0;break; case 950: BitTimeCAN = 1;break; case 900: BitTimeCAN = 2;break; case 850: BitTimeCAN = 3;break; case 800: BitTimeCAN = 4;break; case 750: BitTimeCAN = 5;break; case 700: BitTimeCAN = 6;break; case 650: BitTimeCAN = 7;break; case 600: BitTimeCAN = 8;break; case 550: BitTimeCAN = 9;break; case 500: BitTimeCAN = 10;break; case 450: BitTimeCAN = 11;break; case 400: BitTimeCAN = 12;break; case 350: BitTimeCAN = 13;break; case 300: BitTimeCAN = 14;break; case 250: BitTimeCAN = 15;break; case 200: BitTimeCAN = 16;break; case 150: BitTimeCAN = 17;break; case 125: BitTimeCAN = 18;break; case 100: BitTimeCAN = 19;break; case 50: BitTimeCAN = 20;break; case 10: BitTimeCAN = 21;break; } CAN_InitStructure.CAN_SJW = CAN_BTR[bitTimeCAN][0]; CAN_InitStructure.CAN_BS1 = CAN_BTR[bitTimeCAN][1]; CAN_InitStructure.CAN_BS2 = CAN_BTR[bitTimeCAN][2]; CAN_InitStructure.CAN_Prescaler = CAN_BTR[bitTimeCAN][3]; CAN_Init(CANx, &CAN_InitStructure); } Именно эта функция вызывает смену скорости.
  5. Суть проблемы: имеем LPC2368, стек TCP/IP от RLARM. Все работает при передаче небольших UDP пакетов. При передаче 5 пакетов UDP по 721 байту через 8 запросов контроллер не реагирует больше ни на какие запросы по UDP, хотя сам контроллер работает нормально (в главном цикле все функции отрабатывают нормально). Пробовал через разные промежутки времени итог одинаковый. Размер буфера под стек 8 Кб. В файлах конфигурация стека Net_Config.c и Net_Debug.c Ethernet.zip
  6. Да нет самый настоящий, прочитал то, что было на корпусе элементов аккумуляторов.
  7. На днях разобрал родной аккумулятор шуруповерта - емкость батарей 300 мА*ч. Следующий вопрос - какую микросхему можно использовать для защиты от переразряда и ограничения тока при работе.
  8. Кстати, а http://hobbyking.com/ с Россией сейчас торгует или нет?
  9. Следующий вопрос: Как правильно заряжать - целиком набор аккумуляторов или как-то сделать отдельную зарядку. Вроде как нужно использовать последний способ.
  10. Аккумуляторы хотел взять типоразмера 18650 с емкостью 5.3А*ч (если честно даже не знаю их реальных характеристик - производитель Китай) в количестве 5 шт. А идея была в переделке родного аккумулятора под Li-Ion, плюс система зарядки и защиты.
  11. У меня есть несколько вопросов по поводу Li-ION: Возможно ли использовать набор Li-ION аккумуляторов в качестве аккумулятора на 18В для шуруповерта?
  12. RTC and LPC2148

    Да я как раз пример взял из Keil среды. При чтении регистров времени - проблем нет, как только срабатывает прерывание - один сплошной косяк.
  13. RTC and LPC2148

    Решил в своем проекте использовать прерывания от RTC через каждый час: Инициализация RTC: main () { RTCInit(); //определить время local_time.RTC_Sec = 0; local_time.RTC_Min = 46; local_time.RTC_Hour = 13; local_time.RTC_Mday = 2; local_time.RTC_Wday = 4; local_time.RTC_Yday = 275; local_time.RTC_Mon = 11; local_time.RTC_Year = 2012; RTCSetTime( local_time ); if ( install_irq( RTC_INT, (void *)RTCHandler ) == FALSE ) { while ( 1 ); } RTCStart (); WHILE (1) { if (alarm_on !=0) { //что-то делаем } } } Сами функции RTC: void RTCHandler (void) __irq { ILR |= ILR_RTCCIF; /* |clear interrupt flag */ //IENABLE; /* handles nested interrupt */ alarm_on = 1; // IDISABLE; VICVectAddr = 0; /* Acknowledge Interrupt */ } void RTCInit( void ) { alarm_on = 0; /*--- Initialize registers ---*/ AMR = 0; CIIR = IMHOUR; CCR = 2; CCR = 0; PREINT = PREINT_RTC; PREFRAC = PREFRAC_RTC; } void RTCStart( void ) { /*--- Start RTC counters ---*/ CCR = (CCR_CLKEN | CCR_CLKSRC); //Enable RTC and use the external 32.768kHz crystal ILR = ILR_RTCCIF; //Clears the RTC interrupt flag } void RTCSetTime( RTCTime Time ) { SEC = Time.RTC_Sec; MIN = Time.RTC_Min; HOUR = Time.RTC_Hour; DOM = Time.RTC_Mday; DOW = Time.RTC_Wday; DOY = Time.RTC_Yday; MONTH = Time.RTC_Mon; YEAR = Time.RTC_Year; } Так вот, все работает хорошо до тех пор пока не срабатывает перывание от RTC. После этого начинаются непонятные глюки. При отключении прерываний все работает хорошо. Чтение\запись в RTC проходит без проблем. Был ли у кого-нибудь такой косяк или я где-то косяк спорол?
  14. Спасибо за пояснения, не ожидал такого быстрого ответа. Скажите пожалуйста как указывать, что контактные площадки должны быть облужены. Или это идет по умолчанию?