Jump to content

    

Vitaliy_ARM

Свой
  • Content Count

    508
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Vitaliy_ARM

  • Rank
    Знающий
  • Birthday 01/04/1985

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

2890 profile views
  1. Китайцы разные бывают. Посмотрите www.pcbway.com. Там многие заказывают и делают, по их словам, за дорма даже несколько штук. В России подготовка производства стоить только от 3000р. Сам не заказывал, поэтому на 100% не уверен.
  2. Я видел эту статью, я использую HAL и проект был сгенерирован при помощи CubeMX. Перечитал интернет и вроде бы все сделано правильно, но таймер не хочет считать ... До сих пор не работает. Временно сделал через poling, так все работает. В таком случае обычно спасает сравнение дамба регистров таймера с рабочим проектом. Если у кого-то работает таймер в режиме энкодера, можете ли вы дать дамп на регистры таймера и GPIO? void opticEnc::exe() { nextState = readPins(); switch(state) { case 0: if(nextState == 0x1) { val++; state = nextState; } else if(nextState == 0x2) { val--; state = nextState; } break; case 1: if(nextState == 0x3) { val++; state = nextState; } else if(nextState == 0x0) { val--; state = nextState; } break; case 2: if(nextState == 0x0) { val++; state = nextState; } else if(nextState == 0x3) { val--; state = nextState; } break; case 3: if(nextState == 0x2) { val++; state = nextState; } else if(nextState == 0x1) { val--; state = nextState; } break; default: break; } }
  3. Encoder на TIM3

    Теряю уже третий день над подключением энкодера к STM32F072RBT6. Проект был сгенерирован CubeMX и немного исправлена инициализация таймера 3 для режима энкодера. Энкодер припаян к PC6 и PC7. Импульсы на вход поступают (изменения отображаются в регистре IDR в режиме откладки), но в регистре CNT всегда 0. Я отладчиком записал туда значение 2, но это ни на что не влияет. Только показывает, что все записывается и таймер работает, но не считает импульсы. Подскажите, куда еще копать? Ниже привел код инициализации и дампы регистров таймера и GPIOC. Вот код инициализации Таймера. /* TIM3 init function */ void MX_TIM3_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOC_CLK_ENABLE(); __TIM3_CLK_ENABLE(); /*Configure GPIO pins : ENC0_I_Pin ENC0_Q_Pin */ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF1_TIM3; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); htim3.Instance = TIM3; htim3.Init.Prescaler = 0; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 0xFFFF; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; encoder.EncoderMode = TIM_ENCODERMODE_TI12; encoder.IC1Filter = 0x0f; encoder.IC1Polarity = TIM_INPUTCHANNELPOLARITY_RISING; encoder.IC1Prescaler = TIM_ICPSC_DIV4; encoder.IC1Selection = TIM_ICSELECTION_DIRECTTI; encoder.IC2Filter = 0x0f; encoder.IC2Polarity = TIM_INPUTCHANNELPOLARITY_FALLING; encoder.IC2Prescaler = TIM_ICPSC_DIV4; encoder.IC2Selection = TIM_ICSELECTION_DIRECTTI; HAL_TIM_Encoder_Init(&htim3, &encoder); HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_1); TIM3->CR1 = 1; // Enable the counter }
  4. Код чтения статуса я исправил на двухбайтовый и исправил проверку EPE бита. Но результат записи с флешкой тот-же. Сегодня утром я пришел и начал тестировать эту флешку, первые 10 раз зашилась без проблем. Потом начала глючить один раз из 5 записей, потом чаще. И в итоге после записи 40 раз она сходит с ума и уже не пишется без ошибок. Если прибор полежит без питания несколько часов, она опять начинает шиться без ошибок. Какая-то ерунда ... Первый раз такое встречаю за 10 лет работы. Одна партия была куплена на DigiKey, вторая в Компеле. Ведут себя примерно одинаково. В общем вопрос работы флешки AT45DB081E в корпусе SO-8 пока открыт. P.S.: Мы нашли уже другой способ избавиться от проблемы. Применили алгоритм сжатия данных и запихнули коэффициенты в сжатом виде в микроконтроллер. Это решение даже лучше, чем применять внешнюю микросхему. Но вопрос глючности флешки это не решает.
  5. Спасибо, заменил. Но это никак на ситуацию не повлияло. Глючит также. У них первый регистр статуса совместимый, наверное, теоретически, должен быть совместим и по коду. Это хорошее замечание, если у кого-то используется с AVR, могут наступить на грабли. Это немного другая флешка, фирмы SST. Похоже на чтение регистра статуса. У меня также функция ожидает завершения операции записи при помощи чтения регистра статуса и проверки соответствующего бита.
  6. Да, конечно. CS опускаю перед записью и поднимаю после окончания. Я привел пример кода записи в первом посте. Привожу код функции status() ниже. Если впаять 081D, то глюки пропадают принципиально. Что только не делал, не могу добиться 100% нормальной записи. Если запись была совершена некорректно, бит EPE взводится и бывает, что я эту же страницу не могу перезаписать, при попытки использовать 82-ю команду, данные не записываются корректно и взводится этот бит. Что делать, если он взводится, в мануале не написано ... Документ этот видел. Эти команды (0x82 и 0xD2) у них не отличаются. Должно все работать одинаково, но не работает. P.S.: У меня напряжение питания флешки 3,3В, но не думаю, что это причина. /************************************************************** * чтение регистра статуса *************************************************************/ BYTE at45db081d::status() { // Status Register Read SET_AT45D_CS(); // set CS to LOW reg[0] = 0xD7; reg[1] = 0x00; pSpi->transfer(reg, 2); CLR_AT45D_CS(); // set CS to HIGH return reg[1]; } P.S.2: Сейчас есть более дешевая альтернатива этой флешки: http://www.spansion.com/Support/Applicatio..._S25FL-K_AN.pdf , но тут другая распиновка. Устройства уже выпущены и радикально переделывать что-то не особо хочется.
  7. Доброе время! Было в свое время разработано устройство на микроконтроллере LPC1778 и флешке AT45DB081D-SSU. Последняя использовалась для хранения таблиц с коэффициентами. Эту флешку постранично могло обновлять программное обеспечение. Запись во флешку делается при помощи команды 0x82 (Main Memory Page Program through Buffer 1 with Built-In Erase), для чтения использую 0xD2 (Main Memory Page Read). Все работало замечательно, пока AT45DB081D-SSU не сняли с производства. На замену ей пришла AT45DB081E от Adesto, которую мы установили в новую партию. И тут начались чудеса. После создания тестовых программ, выяснилось, что данные записываются некорректно, причем может во всей памяти записаться некорректно один байт, а может и вся страница, а может и все нормально записаться. Причем это не от чего не зависит, глючит спонтанно. Даже ввели верификацию страниц и повторную запись. Однако выяснилось, что контрольная сумма данных не совпадала, даже когда постраничная верификация и перезаписть проходила на ОК. Т.е. запись одной страницы может убить данных в другой. Думали, что флешки бракованные. Купили в проверенном месте - тоже самое. Подскажите, в чем может быть причина? Функция записи страницы приведена ниже. (используется 264 байтная страница) BOOL at45db081d::write264(WORD page, BYTE *pBuf) { unsigned int i; if(page > MAX_PAGES) return FALSE;// FALSE; SET_AT45D_CS(); reg[0] = 0x82; reg[1] = page >> 7; reg[2] = page << 1; reg[3] = 0x00; pSpi->transfer(reg, 4); pSpi->transfer(buf, 264); CLR_AT45D_CS(); for(i = 0xFFFFFFFF; i > 0; i--) { if(status() & 0x80) break; } if(i == 0) return FALSE; if(status() & 0x20) // EPE bit return FALSE; return TRUE; }
  8. LPC4357-EVB

    Пардон, mihailovsky©pochta.ru (букву К лишнюю написал)
  9. LPC4357-EVB

    Большое спасибо! Мой адрес mikhailovsky(собака)pochta.ru
  10. LPC4357-EVB

    В том то и дело, что все ссылки, что там указаны, битые! Даже схемы на эту плату получить не могу. Единственно что удалось получить - пару примеров с LPCWire.com c EmWin. Люди отзовитесь, у кого-то наверняка есть хотя бы схема!? Буду рад хоть этому.
  11. LPC4357-EVB

    Купил плату в компеле: http://www.element14.com/community/docs/DO...development-kit Плата пришла без диска. На сайте производителя все ссылки со схемами и примерами битые. Если кто имеет это все или скачал ранее, поделитесь плиз!! Моя почта: mikhailovsky(собака)pochta.ru. Больше всего интересует схема этого кита.
  12. Подскажите, у меня имеется линукс без Framebufffer'а и без X-ов (opensource linux ZedBoard), будут ли работать консольные приложения Qt4 под этот линукс???
  13. Разобрался с настройкой среды под Ubuntu. Для работы ставить надо версию 12.04 x64. Тогда многие проблемы сразу исчезают. Причем перед установкой среды надо переключить dash на bash, это описано здесь: http://www.zedboard.org/content/arm-xilinx...eems-be-missing Ядро пока не компилировал, но разобрался как это сделать. Поставил пока готовый линукс, который скачал http://www.wiki.xilinx.com/Zynq+14.5+-+2013.1+Release . В архиве есть скомпилированная версия специально для ZedBoard. С XSDK разобрался и писать приложения под ней для линукса даволно просто, поразила возможность отладки приложений через Ethetnet (для встраиваемых систем это очень удобно), написал несколько, включая и hello_world. Qt4 удалось скомпилировать, удалось настроить QtCreator, однако на плате консольные приложения запускаться не хотят из-за того, что не установил библиотеки Qt4 туда, как и куда это сделать, пока еще не понял. В XPS есть возможность создавать простые периферийные устройства для PL (FPGA-части). Одно из которых - это банк 32-бит регистров до 32 штук. Работа с ними из процессорной части весьма проста. Далее пользовательский HDL файл можно модифицировать под себя. Собственно вопрос, как и где после этого назначить ножки в PL? Кто уже разобрался, разъясните пожалуйста ход действий?
  14. Установил среду Vivado 2013.1 для этой платы под Ubuntu 12.10 x64. Все стало почти без проблем. Только драйвер для отладчика не стал. После запуска и нажатия на кнопку Сreate New Project, программа выдает ошибку. Все остальные кнопки работают исправно. Может кто подскажет, что делать в этом случае?
  15. Понятно, спасибо за инфо. В общем все замечательно. Есть почти все. Для полного счастья не хватает OpenGL ES, нет на борту видяхи. Нашел, что есть вот такое решение: http://www.logicbricks.com/logicBRICKS/Ref...uick-Start.aspx GPU для Zynq. Но это уже за деньги судя по всему. По запросу могут предоставить OpenGL ES 1.1 библиотеки. Посмотрел, что я использовал сборку от Linaro: http://www.xilinx.com/university/zynq/demos/index.htm. Скачал Xilinux от Xilibus. Буду пробовать. Саму среду разработки пока не ставил, но для запуска придется. Пора переходить к разработке. :rolleyes: