Перейти к содержанию

wellcom

Участник
  • Публикаций

    11
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Bootloader STM32 + CAN

    Цитата(AlexandrY @ Jan 5 2014, 22:52) О, немного опоздал. Но вот к концу года бывает делаю какую-нибудь праздничную иллюминацию. Здесь прект (использовался KEIL) модуля светодиодной иллюминации на шине CAN. Отдельно загрузчик, отдельно приложение. По JTAG прошивается загрузчик, а уж приложение потом программируется по CAN-у. [attachment=82036:LEDLighting.zip] А вот здесь собственно проект под центральную плату на STM32F103ZE которая сама прошивается через RS232, а остальные узлы прошивает по CAN. Используется протокол Y-modem и Y-modem поверх CAN с криптозащитой шифром AES 256 бит и проверкой по MD5 или CRC по выбору. (Осторожно! Использовалась RTOS ) [attachment=82037:Ymodem_t...N_loader.zip] Большое спасибо! ...буду разбираться!
  2. debugWIRE и SPI

    Цитата(_Артём_ @ Mar 17 2014, 14:30) Нет у 128-й debugwire. JTAG только. Посмотрите в даташите. да, посмотрел нету . Я почему то подумал что он есть во всех аврках.
  3. debugWIRE и SPI

    Цитата(_Артём_ @ Mar 17 2014, 14:22) А ваш МК поддерживает debugwire? Какой у вас МК?Atmega128
  4. debugWIRE и SPI

    доброго времени суток! Просьба Подсказать где найти и как включить отладку в железе по debugWire. Для выбора доступны только интерфейсы JTAG, ISP, картинка ниже. Програматор-отладчик JTAGICE3. Прошивка заливается в камень без проблем. [attachment=83781:AtmelStu...strator_.jpg] Пробовал и вручную включать фуз OCDEN - не помогло. Кто знает хде искать или как включить debugWire в Atmelstudio 6.2??? Спасибо.
  5. Bootloader STM32 + CAN

    Доброго времени суток всем! Возникла необходимость прошивать (обновлять) прошивку удаленно для камней STM32. В проекте планирую использовать CAN для связи подчиненного устройства с мастером. Подчиненные устройства (контроллеры) могут быть далеко, и много. Возможно ли прошить камень через CAN?? Есть ли у кого каке соображения/идеи по этому поводу? Мне приходит пока такая мысль: использовать драйвер CAN для передачи прошивки на UART MK, предварительно скомутировав ключами вход/выход драйвера CAN на соответствующие RX/TX UART
  6. External SRAM + ATmega***

    Цитата(prottoss @ Feb 21 2010, 03:12) Вот так делал я. См приложенные файлы. Правда там у меня 62256 но это не суть важно. Регистр-защелку младших адресов ставить нужно с записью по высокому уровню. Серия может быть любая типа AC/ACT/HC/HCT. В МК настроить работу внешней памяти с одним циклом ожидания. См. приложенные файлы. Имейте ввиду, что из 8КБАЙТ памяти Вашей МК будет использоваться только старшие 4. Это связанно с тем, что младшие 4 КБ находятся в адресном пространстве внутренней SRAM МК. Вообще есть пути решения этой проблемы. Рекомендую почитать перевод даташита на М128 на http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/2_1.htm Подскажите пожалуйста, почему у Вас адрес ADDR0-ADDR7 подключены к выводам А0-А7 чипа UT62256, а ADDR8-ADDR15 как то непонятно, куда попало. Вы используете весь обьем памяти? (не пинайте. только начал разбираться с внешней памятью, и вообще с памятью...)
  7. Обучение FreeRTOS

    ...перед этим нужно заполнить структуру данными что бы ее передать в очередь. Я думал, возможно есть вариант что бы записать значени в переменную структуры прямо в очереди. В любом случае спасибо.
  8. Обучение FreeRTOS

    Подскажите, как записать в такую очередь данные???? //определяю ст-ру, которая будет елементом очереди typedef struct { unsigned portBASE_TYPE uint8_Command; int32_t int32_Data_1; int32_t int32_Data_2; unsigned portBASE_TYPE uint8_Data_3; }CmdData; xQueueCMD = xQueueCreate ( 4, sizeof(CmdData)); //создаем очередь
  9. Обучение FreeRTOS

    Разобрался, дело было в ключевом слове "static", переменная семафора была static, что не позволяло ее модифицировать из другой ф-ции (задачи)
  10. Обучение FreeRTOS

    Цитата(MrYuran @ Dec 11 2012, 12:47) xx и как это перевести/применить? вот весь проект http://kazus.ru/forums/showpost.php?p=5790...mp;postcount=50
  11. Обучение FreeRTOS

    Привет знатокам! Начал разбираться с FreeRTOS V7.3.0 на Atmega128+AVRStudio 6. Несколько примеров заработали успешно (мигать светиком + кнопка с выводом события нажатия на LCD 1x16). После решил углубится в использование УАРТА, добавил 2 задачи + 1 прерывание по приему символа. При компиляции серьезных ошибок небыло, кроме 2-х одинаковых "вонингов" вида : Warning 1 cast from pointer to integer of different size [-Wpointer-to-int-cast] G:\......\tasks.c 523 44 AVRGCC1, что указывает на следующую строку кода pxTopOfStack = ( portSTACK_TYPE * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) & ( ( portPOINTER_SIZE_TYPE ) ~portBYTE_ALIGNMENT_MASK ) ); После запуска запуска в дебаге, программа виснет при получении семафора : xSemaphoreTake(xButtonSemaphore, (portTickType)0); детальное изучения висячки привело меня в строку кода portRESTORE_CONTEXT();, после выполнения которой, на вкладке Processor - Registers, все регистры от 0 по 31 имеют значения 00. Т. е я так понимаю что контекст предыдущей задачи не востановился, но почему не могу понять. Этот участок кода работал нормально, пока не добавил ф-ции по работе с уартом. Сейчас полностью убрал эти ф-ции но ошибка осталась и побороть ее ника не могу, и вообще не могу понять в чем дело. Может проблема в "вонингах"? Прошу помощи. Вот часть кода, которая глючит void vButtonCheckTask( void *pvParameters ) { portTickType xLastWakeTime; const portTickType xFrequency = 20; //время, через которое проверяется кнопка, мс xLastWakeTime=xTaskGetTickCount(); //Возвращает:Количество тиков начиная с вызова vTaskStartScheduler xSemaphoreTake(xButtonSemaphore, (portTickType)0); //Макрос для получения семафора. <<<< --------глючит здесь во время/при выполнении vButtonInit(); //initialization for (;;) { if (xButtonGetStatus()==pdTRUE) //смотрим кнопку, если нажата { xSemaphoreGive(xButtonSemaphore); // Освобождаем семафор. } vTaskDelayUntil(&xLastWakeTime,xFrequency); //проверяем кнопку каждые 20 мс } } portSHORT main(void) { vSemaphoreCreateBinary(xButtonSemaphore); // реализует семафор if(xButtonSemaphore!=NULL) // если семафор создан удачно { xTaskCreate( vButtonCheckTask, ( signed char * ) "Button", configMINIMAL_STACK_SIZE, NULL, mainButton_TASK_PRIORITY, NULL ); //реакция на кнопку } xTaskCreate( vLEDFlashTask1, ( signed char * ) "LED", configMINIMAL_STACK_SIZE, NULL, mainLED_TASK_PRIORITY, NULL ); //мигание всетиком while(1) { } return 0; }