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

Asm_lock

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

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

  • Посещение

Репутация

0 Обычный

Информация о Asm_lock

  • Звание
    Частый гость
  • День рождения 28.12.1979

Информация

  • Город
    СПб
  1. Не получается работать с flash.

    Насколько я знаю, в пиках флешак стирается страницами... void FlashPageErase(uint16_t Adru, uint16_t Adr) { uint16_t saveTBLPAG = TBLPAG; TBLPAG = Adru; __builtin_tblwtl(Adr, 0); #if defined( __dsPIC33E__ ) NVMADRU = Adru; NVMADR = Adr; #endif NVMCON = FLASH_PAGE_ERASE_CODE; SET_CPU_IPL(7); __builtin_write_NVM(); while (NVMCONbits.WR) {} NVMCON = 0x0001; TBLPAG = saveTBLPAG; SET_CPU_IPL(0); }
  2. Исходники Modbus для dsPIC33

    Здравствуйте уважаемые коолеги. Возникла неаобходимость зацепить на UART dsPIC'a modbus. Единсвенное что нашел, так это freemodbus-v1.5.0 в сырцах которого, как оказалось нету демки для пиков. Буду очень признателен если кто поделится ссылкой на проект с хорошим описанием. Спасибо.
  3. Настройки проекта в MPLab X IDE

    Всем Большое СПАСИБО !!!! Разобрался. Каким то образом, но программа скомпилированная в XC16 через Эклипс работала быстрее чем та которая через MPLAb. Поэтому в эклипсовской версии проблем и не было. Выяснил что не работает функция стирания FLASH. Програ где то зависает, непонятно где. Дизассемблер тоже работать отказался. Воспользовался "PIC Memory Views". Определил, что прога тупо уходит в ресет. Во общем, из-за того что программа почему то работала медленнее , WDT сбрасывался и не очищался.
  4. Настройки проекта в MPLab X IDE

    Всем здравствуйте. Возникла проблема с переносом проекта из Eclipse в MPLab. В эклипсе проект собирался под XC v1.24, все отлично зашивалось. Решил вот создать проект в MPLab (компилятор тот же) и подцепить к нему все сырцы и ашники... Все замечательно собирается и прошивается без ошибок. Нооо !!! Не работает запись во флеш !!!! Что то намудрил с настройками памяти... есть правда файл *.gld. Но такое ощущение что он не цепляется...
  5. Увеличил размер FIFO в регистре UARTx_PFIFO до 64 слов.... И начал чистить его как только выползал флаг OR в регистре UARTx_S1. Уже два часа работает без глюков...
  6. ЦитатаА какая установка глубины FIFO стоит? Спасибо что спросили.... в инициализации только вот это прописано... UART_HAL_SetRxFifoWatermark(baseAddr, 1); /* Enable and flush the FIFO prior to enabling the TX/RX */ UART_HAL_SetTxFifoCmd(baseAddr, true); UART_HAL_SetRxFifoCmd(baseAddr, true); UART_HAL_FlushTxFifo(baseAddr); UART_HAL_FlushRxFifo(baseAddr);
  7. Цитата(AlexandrY @ Mar 31 2016, 14:23) КодUART3_C2 |= 0x20; после этой функции. Но будьте готовы к потере данных. попробую... ЗЫ: не помогло...
  8. Цитата(AlexandrY @ Mar 31 2016, 12:34) TIE зависит от наличия процесса передачи и может быть любой и в обработчике и в цикле. RIE должен быть всегда установлен. Однако при переполнении прием запрещается. RIE устанавливается в 0, так написано в драйвере fsl_uart_driver.c Поэтому проверьте переполнение. В самом начале обработчика прерывания стоит опрос функции UART_HAL_GetRxDataRegFullIntCmd(baseAddr). Когда перестаю приниматься данные , он всегда false . Как это переполнение очистить то ?
  9. Цитата(ataradov @ Mar 30 2016, 19:55) Ну так что говорит бит в регистре разрешения прерываний? Гадать на кофе тут не выйдет, нужно отлаживать. В осовном цикле UART3_C2 = 0x2C; В обработчике UART3_C2 = 0x8C;
  10. Цитата(AlexandrY @ Mar 31 2016, 00:23) С LwIP так понимаю работаете из под FreeRTOS и все взято из примеров которые идут с SDK? Судя по тому что в SDK нет примеров LwIP совместно с USB, то вы наверно совершили рискованное скрещивание. Никакого FreeRTOS'а нету... у Frescale примеры есть в KSDK_1.0.0
  11. Цитата(ataradov @ Mar 30 2016, 19:36) Если "выключается прерывание" - это действительно не "пропадает флаг разрешения в регистре", а "вообще ничего не работет", то нужно действительно настраивать MPU и ловить левые обращения. Не важно что для чего предназначено, для отладки любое MPU подойдет. Ну как это ничего ?? LWIP работает, таймеры все работают....UART который весит на USB работает... Не работает только прерывание UART который весит на 485-м интерфейсе....
  12. Поставил пере инициализацию уарта если UART_HAL_GetRxDataRegFullIntCmd(baseAddr) == false. Не помогло....
  13. Цитата(jcxz @ Mar 30 2016, 12:41) Вот и подтверждение моих слов. Эта фраза отладчика расшифровывается как "не могу прочитать некие регистры периферии так как их тактирование (или питание) отключено через соответствующие биты конфигурации тактирования/питания". Возможно у Вас происходит перезапуск ПО устройства с переинициализацией всей периферии, а Вы этого даже не замечаете. Поставьте бряк на начало main(). PS: Совет - первым делом проверьте все стеки на предмет переполнения. И ищите баги в ПО методом исключения. Бряк стоит...в том то и дело...перезапуска не происходит. Крутимся в wile'.....
  14. Цитата(ataradov @ Mar 30 2016, 12:32) Ну так если отладчик есть, то поставить точку останова на запись в этот регистр. Там и видно будет, кто его выключает. Запись в какой регистр ???? Я сейчас пере инициализацию уарта поставил если прерывание будет запрещено...посмотрим как оно зафурычит.. Кстати, отлаживаю под eclipse (KDS_3.0.0)....там хрен что посмотришь.... ЗЫ: в NXP Community прочитал что при отладке, встроенный в плату J-Link подглючивает....память там не читает и т.д....
  15. Цитата(ataradov @ Mar 30 2016, 12:15) Могу предположить случайный проезд по памяти. Точка останова на доступ к памяти может помочь, если есть возможность под отладчиком воспроизвести. Я тоже так думаю. т.к. иногда отладчик ругается что не может прочитать память.... Просто часть прогарммы то работает, плата по сети пингуется...обмен по lwip происходит (снифером посмотрел)...отправка данных по злосчастному уарту идет но ни чего не принимает.... Как с этим бороться ?