Jump to content

    

aba

Участник
  • Content Count

    22
  • Joined

  • Last visited

Community Reputation

0 Обычный

About aba

  • Rank
    Участник
  1. Во фриртосе под Cortex прерывания, насколько я помню, используют мейн стек. Возможно у Вас мейн стек расположен какраз за стеком задачи и прерывание налезает на стек задачи. Также, насколько помню, sprintf использует кучу, может он налезает???
  2. В регистре GPIOА_MODER выбрать функцию для пинов general input или general output. После сброса эти пины переключены в альтернативную функцию JTAG
  3. Сдох AVRDragon

    Схемы нет, но сгорают 2 микросхемы, описание чего по ссылке http://bsvi.ru/umer-avr-dragon/ Сам так ремонтировал, уже 3 года работает
  4. Точно уже не помню, но помоему начиная с версии 1.6.х GDB сервера Атолик сделал привязку к своей среде. Как альтернативу я использовал texane GDB, или он же пребилдженый под Windows по ссылке. http://www.emb4fun.de/archive/stlink/index.html Там же и инструкция по пользованию.
  5. Насколько я вижу, то у Вас сборка не проходит успешно, о чём компилятор Вам и говорит "cannot find entry symbol _start". У вас в проэкте нет стартап файла.
  6. это моя инициализация CANа, правда для STM32F2xx // enable clock to CANs RCC->APB1ENR |= RCC_APB1ENR_CAN1EN; RCC->APB1ENR |= RCC_APB1ENR_CAN2EN; CAN1->MCR |= CAN_MCR_RESET; CAN2->MCR |= CAN_MCR_RESET; // configure CANs CANEnterConfig(); CAN1->MCR |= CAN_MCR_NART;//CAN_MCR_TXFP; CAN2->MCR |= CAN_MCR_NART;//CAN_MCR_TXFP; switch (baud_rate) { case CAN_BR_50KBPS: BrpVal = (FPBA1 / (TS1VAL + 1 + TS2VAL + 1 + 1)) / 50000UL; break; case CAN_BR_125KBPS: BrpVal = (FPBA1 / (TS1VAL + 1 + TS2VAL + 1 + 1)) / 125000UL; break; case CAN_BR_250KBPS: BrpVal = (FPBA1 / (TS1VAL + 1 + TS2VAL + 1 + 1)) / 250000UL; break; case CAN_BR_500KBPS: BrpVal = (FPBA1 / (TS1VAL + 1 + TS2VAL + 1 + 1)) / 500000UL; break; case CAN_BR_1000KBPS: BrpVal = (FPBA1 / (TS1VAL + 1 + TS2VAL + 1 + 1)) / 1000000UL; break; default: break; } CAN1->BTR = (SJWVAL << 24) | (TS2VAL << 20) | (TS1VAL << 16) | (BrpVal - 1); CAN2->BTR = (SJWVAL << 24) | (TS2VAL << 20) | (TS1VAL << 16) | (BrpVal - 1); CAN1->IER = CAN_IER_FMPIE0; CAN2->IER = CAN_IER_FMPIE0; CAN1->MCR &= ~CAN_MCR_SLEEP; CAN2->MCR &= ~CAN_MCR_SLEEP; CANExitConfig(); static void CANExitConfig(void) { CAN1->MCR &= ~CAN_MCR_INRQ; // wait while CAN entered to initialization mode while (CAN1->MSR & CAN_MSR_INAK) ; CAN2->MCR &= ~CAN_MCR_INRQ; // wait while CAN entered to initialization mode while (CAN2->MSR & CAN_MSR_INAK) ; } static void CANEnterConfig(void) { // CAN to initialization mode CAN1->MCR |= CAN_MCR_INRQ; // wait while CAN entered to initialization mode while (!(CAN1->MSR & CAN_MSR_INAK)) ; // CAN to initialization mode CAN2->MCR |= CAN_MCR_INRQ; // wait while CAN entered to initialization mode while (!(CAN2->MSR & CAN_MSR_INAK)) ; } вот так инициализирую фильтры // begin of configuring filters CANEnterConfig(); CAN1->FMR |= CAN_FMR_FINIT; // set Initialization mode for filter banks CAN1->FMR &= ~(0x3F << 8); CAN1->FMR |= (0x0E << 8); CAN1->FA1R &= ~(uint32_t) (1 << filterIndex); // deactivate filter // initialize filter CAN1->FS1R |= (uint32_t) (1 << filterIndex);// set 32-bit scale configuration CAN1->FM1R &= ~(uint32_t) (1 << filterIndex);// set 2 32-bit identifier list mode CAN1->sFilterRegister[filterIndex].FR1 = CAN_msgId; // 32-bit identifier CAN1->sFilterRegister[filterIndex].FR2 = CAN_msgMask; // 32-bit identifier CAN1->FFA1R &= ~(uint32_t) (1 << filterIndex); // assign filter to FIFO 0 CAN1->FA1R |= (uint32_t) (1 << filterIndex); // activate filter CAN1->FMR &= ~CAN_FMR_FINIT; // reset Initialization mode for filter banks CANExitConfig(); прерывания, впринципе, написаны как и у Вас
  7. Стандартной библиотекой не пользовался, сказать про неё немогу. 1 - проверте акновледжит ли сообщения принимающая плата, осцилом посмотрите на ногу CAN TX, должен быть акновледж на любое сообщение. 2 - проверте настройки фильтров приёмника и ID отправляемого сообщения, может просто не пропускать фильтр
  8. To Dir. У вас случаем машина не на AMD-шном чипсете и винда 7? Такая проблема с самбой наблюдается на вышеуказанной конфигурации
  9. Помоему у SAM7S128 и SAM7S64 разные размеры страниц флеша, из-за этого бутлодырь не может прошить SAM7S128.
  10. проблема с ST-Link

    STLinkUSBDriver.dll v4.2.2.0 - новая. 1 - если ST-Link подключался к компу до установки драйверов, то зайти в диспечер устройств и удалить драйвер для ST-Link. 2 - отключить ST-Link от компа и проинсталировать драйвер. 3 - если установлен Alcohol 120% или Daemon Tools, то удалить виртуальный привод из системы. 4 - подключить ST-Link, после этого должно всё работать. http://www.atollic.com/index.php/kb/kbdebu...onnection_error Вот эта ссылочка
  11. проблема с ST-Link

    Такая ситуация наблюдается если в системе есть виртуальный диск. Достаточно удалить виртуальный привод и сразу легчает. Об этом хорошо описано на сайте Атолика.
  12. Какой компилятор вы используете? Если ИАР = то поставте формат выходного файла "intel-extended"
  13. pvPortMalloc

    А нельзя ли реализовать алгоритм работы например так? 1 - из прерывания отсылается сообщение задаче. 2 - задача, ожидающая это сообщение уже выделяет память. В функциях pvPortMalloc/vPortFree используются функции vTaskSuspendAll() и xTaskResumeAll(), последняя разрешает прерывания, я думаю из-за этого могут возникнуть непредвиденные глюки.
  14. Ремонт AVR Dragon

    http://bsvi.ru/umer-avr-dragon/ Вот тут посмотрите. Тут написано как называются эти 6-ти ногие микросхемы. А горят они от того, что у них на входе нет защитных диодов. У самого так горел, поставил ADG721, работает
  15. AVR32+FreeRTOS+lwip(UDP)

    Да, именно это я и имел ввиду. В Вашем коде вы создаёте соединение, а в UDP соединения как такового нет. Посмотрите пример TFTP. В этом примере используется UDP и никаких "netconn..." функций нету, есть только биндинг сокета на порт и приём.