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

romas2010

Участник
  • Постов

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

  • Посещение

Репутация

1 Обычный

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

  • Звание
    Участник
    Участник

Посетители профиля

1 196 просмотров профиля
  1. Stm32F407 SPI+DMA

    Коллеги, приветствую. Столкнулся с таким явлением. Читаю АЦП при помощи DMA. Всё функции от HAL. Так вот, если выключаю прерывания и использую опрос, то по адресам 0х20000000..0х20000010 иногда появляются копии считанных байтов, причём хаотически в разных местах, но в пределах этих 16 байт. При включеном прерывании (имеется ввиду прерывание по данному каналу DMA) этот эффект уходит. Собственно говоря, вопрос-ответ что надо сделать, чтоб этого эффекта не было? P. S. В проекте получается более 10 источников прерываний, поэтому хочу некоторые источники опрашивать P. S. 2. Приём UART через DMA путём опроса работает корректно. Непонятно, в общем, что за петрушка
  2. Такая же петрушка. F407 проц. По неизвестным причинам стирается сектор с самим загрузчиком. Непонятно, что происходит, но факт на лице.
  3. Ну прекрасно, берете и добавляете свой код в этот колбэк
  4. Да, по ходу вы правы. Напортачено с разводкой. Взамен куплен шилд на ардуино, ибо надо отлаживаться. Но, собственно говоря 1) команда AT+CIICR. Отклик на неё приходит от 10сек( мегафон) до 1мин(билайн). Это реально у всех так? Делаю всё как в апноуте. 2) не хочется связываться с РРР, хотя, чую, придётся....
  5. Коллеги, приветствую всех. Описываю ситуацию. Модем включается, выдает стандартный отзыв "......Call Ready" далее +CREG:1 и через секунду +СREG: 3 На запросы AT+CREG выдает +СREG: 3 или +СREG: 4 Посылаю команду AT+GREG=1 . Ощущение, что он ничего не делает, ток потребления на источнике стоит без изменений (это к вопросу о 2-х амперном потреблении при поиске сети) Сила сигнала +CSQ 5,0 Вынимаю симкарту, вставляю в старенькую нокиа - все четко и мгновенно регистрирует. Что не так с модемом?
  6. Embedded assembler syntax in C

    struct _dev { u32 a; volatile u32 b; volatile u32 c[MAX_C_QNT]; u32 *d[MAX_D_QNT]; }Dev; __asm void func() { ...... ldr r3,[r1,#(__cpp(offsetof(Dev, d)))] } keil 5.23
  7. Добрый день! запустил сетевые службы, используя библиотеку Keil Middleware. Работает, UDP-коллбеки вызываются, TCP+FTP отлично. Но это на первый взгляд. Столкнулся с такой петрушкой- как только к сети подключались IP-камеры, FTP глючит. Ну наверное теряется пакеты. Поступил так- TCP в проекте отключил,написал на билдере "спамер" по UDP, в проекте подключил UDP, в коллбеке тупо считаю, сколько пакетов принялось, в вайршарке мне показывает сколько отправилось. В CMSISовском EMAC_STM32F4xx.c в функции ReadFrame тоже поставил счетчик принятых пакетов. В итоге на уровне драйвера потерь потери пакетов нет,вайршарковский счетчик и счетчик в ReadFrame совпадали, а в коллбеке счетчик стабильно был меньше, причем так сумасшедше меньше, на 20-25%. Причем не помогло ни увеличение количества приемных дескрипторов, ни увеличения Memory pool для библиотеки. Сталкивался ли кто с таким и какие меры приняли?
  8. вставил в проект файл С++. Определил класс в hpp файле, реализация методов в срр файле. Все отлично компилируется, но есть нюанс- компилятор не генерирует код на блоках try/catch . опция --exception добавлена. Как быть?
  9. stm32f4+adc+dma+tim

    У меня получалось так 1) перед каждым новым преобразованием я включаю бит ADC.CR2.DMA=1, конфигурация DMA для АЦП,запуск таймера 2) преобразовалось по флагу DMA_streamx.TCIF-> стоп таймер, ADC.CR2.DMA=0 то есть бит ADC.CR2.DMA переключать необходимо
  10. Keil 5.23

    Спасибо.Согласен...действительно, единицу к адресу вызова надо прибавлять... Тему считаю закрытой
  11. Keil 5.23

    Коллеги, приветствую!! Вопрос такой - как в кейле сделать чтобы константный массив представлялся не данными, а кодом то есть например const user_code[]={0x01,0xb5} дизассемблировалось в кейле на как DCW 0xb501 , а как push{r0,lr} Дело в том, что у меня имеется бинарный файл с неким набором процедур, которые вызываются из моего проекта. Я знаю как адреса размещения этих функций, так и их семантику..При отладке в кейле вызовы этих процедур естественно приводят к HardFault, так как встречается директива DCW, а не ассемблерная инструкция.
  12. Keil 5.23 ошибка L6971E

    Компилятор Keil не разрешает размещать данные в ОЗУ таким образом через __attribute,типа char lcdconf[20] __attribute(at(0x20000000)))..... видимо прихоть его разработчиков...Обхожу данный нюанс при помощи ассемблера AREA |.ARM.__AT_0x2000000|,DATA,READWRITE EXPORT lcdconf lcdconf space 20 в h-файле прописываете extern char lcdconf[20];
  13. Keil 4.50

    Ребят, ваши советы не подействовали,поэтому пришел к следующему:объявляю в программе следующие 3 строки const char button_not_pressed[]= #include "1.txt" ; содержимое файла 1.txt "Кнопка не нажата" Ну вот как-то так вот
  14. По хорошему надо бы ввести в архитектуру банки регистров, как в MIPS...тогда бы переключение контекста в многозадачности свелось бы к простому переключению нужного банка...все остальное-игрулечки-бирюлечки
  15. Тоже склоняюсь к этому мнению....Хоть и некоторым образом некошерно,но надежно...спасибо
×
×
  • Создать...