Jump to content

    

Vinterman

Участник
  • Content Count

    26
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Vinterman

  • Rank
    Участник
  • Birthday 01/12/1985

Контакты

  • Сайт
    Array

Информация

  • Город
    Array
  1. Попробую возродить тему. Есть желание использовать VSC8221, но нет MDIO интерфейса полноценного. Можно ли ее будет настроить по I2C интерфейсу. Документации на микросхему нет, поэтому прошу помощи у тех, кто ею обладает :) Буду признателен, если поделитесь )
  2. Сегодня скачал готовую модель разъема в степе. Она работает прекрастно. Попровобал ее пересохранить. т.е. в компасе перевожу в формат "парасолид бинари", а далее в cad exchanger сохраняю уже в степе. Такая модель тоже работает прекрастно во всех смыслах. пришел к выводу, что первая модель, которую я пытался перевести в степ, была мною где-то криво нарисована. буду разбираться дальше. Всем огромное спасибо ! )
  3. У меня тоже возникла проблемма. Создал модель компонента в Компасе. Конвертировал его в step через конвертор CAD exchanger. Модель стала цветной. В самом альтиуме все замечательно, модель прекрастно отображается. Но когда экспортируешь в step формат всю плату, но при открывании в том же компасе - моя модель не отображается вообще! От нее осталось лишь пустое место . Альтиум не крякнутый, лицензионный. В чем может быть баг ???? Уже вторая неделя мучений пошла (((
  4. AVR и блютуз

    Мне вот тоже блутуз надо! Профиль SPP чтоб был :) Нужно с телефоном сотовым связываться! Пал выбор на LMX9838 - кульная микруха, но плин дорогущая ИМХО. Есть что подешевше ? И чтоб профиль работы был как с LMX9838? Может не в тему, но оченно надо....
  5. Эньдя.... чтот "глухо" в этой ветке форума :(
  6. Спасибо всем за советы ! Уже разобрался со своими "тараканами" :disco: Теперь можно и програмки приступать писать!
  7. Гм. А чтоб от остальной периферии не получать "таких сюрпризов" - так же необходимо читать их регистры состояний, чтобы сбросить флаги прерываний? По поводу срабатывания прерывания по фронту - а разве это важно для внутренней периферии?
  8. Эньдя.... Ну и система отладки .... ППЦ! :) ЗАПУСТИЛ !!!! УРАААА!!!! Я таки запустил прерывания ! И IAR-овские и свои! :) Трабла была в том, что действительно нельзя смотреть регистр AIC_IVR... ЖЕСТЬ! Естественно в предыдущие свои попытки я никуда без него деться не мог.... Ну и запись в регистр конца прерывания AIC_EOICR оказалось так же необходимой, без нее прерывания тоже не работали. Запись в AIC_EOICR поставил сразу после всех инициализаций, перед началом основного тела программы. Обнаружились следующие глюки, по которым надо разобраться. нужон ХЕЛП! :) В моей программе отладчик входит в прерывания только в том случае, если я смотрю регистры того устройства, от которого жду прерывание. Т.е. если у меня запущен таймер, то когда кликаеш кнопку запуска программы "в постоянку"(запамятовал как она обзывается) в прерывание программа заходит всего один раз, а далее выполняется основное тело программы, даже если я ставлю курсор в обработчик прерывания и нажимаю кнопку запуска "выполнить до текущей позиции курсора", то контроллер в прерывания даже не заходит. А вот если я при этом просматриваю регистры таймера и делаю все те же операции, то в прерывания МК заходит. Пошагово все отрабатывается вроде нормально. В самом обработчике прерываний у меня прога меняет состояние светодиода- горит/негорит. И вот даже если я запускаю, просматривая при этом регистры таймера, то светодиод не моргает. Но когда останавливаю/запускаю программу, то состояние светодиода меняется в момент очередного запуска только. Тобиш программа получается заходит в прерывание всего один раз после того как я нажал на кнопку "запуска программы". В Главном примере от яра такой баг отстутствует. Там я тоже дописал прогу, чтобы при заходе в прерывание менялось состояние светодиода. В основном теле программы так же стоит код - меняющий состояние другого светодиода. И вот тут то все в точности до наоборот. Запускаеш программу (но тут уже не важно смотрю я регистр таймера или не смотрю) - мигает светодиод "прерываний", а основной программы моргнет раза 3-4 и остановится. Пошагово когда смотриш работу, то видно, что только программа вышла из прерывания и сразу же заходит в него обратно. (Хотя до этого же основное тело программы выполнялось параллельно с прерываниями). Правда один раз случилось чудо и программа заработала нормально после энного программного резета из окна дебугера, т.е. мигали и светодиод основной программы и светодиод прерывания. В чем может быть баг? В случае моей программы я использую чутка модифицированный асмовский файл cstartup того же примера яра, только lowinit процедуру я "убил" и вынес ее в другой-отдельный файл инициализации, где так же проходит инициализация нужной мне периферии. В обработчике прерываний между моим и яровским примером имеется следующее отличие в начале : AT91PS_TC TC_pt = AT91C_BASE_TC0; unsigned int dummy; //* Acknowledge interrupt status dummy = TC_pt->TC_SR; //* Suppress warning variable "dummy" was set but never used dummy = dummy; count_timer0_interrupt++; - что они этим хотели сделать ? Но в защиту програмки яра надо сказать, что я припоминаю, что у меня там 2 таймера работают. МОжет это они друг другу толком работать не дают.? Хотя с другой стороны время обработки прерываний много меньше, чем время вызова этих прерываний.... А вообще всем огромное спасибо за то что помогаете новичку !!!! :a14: :beer: Пробовал отладку и в РАМ и во ФЛЭШ и там и там отлаживается везде все одинаково :( Как теперь мне загрузить програмку в контроллер, чтобы она выполнялась на отладочной плате сразу после включения питания, автономно, не зависимо от дебугера ? А то у меня этот фокус так и не вышел. Подскажите правильные настройки для кристалла AT91SAM7S64 в IAR для Wiggler, чтобы во флэш залить для выполнения автономно.... Пробовал как советовал Сергей: 1) Запускаем IAR, создаем новый workspace или используем текущий. 2) Project->Create new project, выбираем C -> main или C++ -> main по вкусу, жмем ОК, указываем имя проекта. 3) Идем Project -> Options -> General Options 3.1)вкладка Target --- Ставим крыжик на Device, выбираем в списке тип процессора. Это заставит IAR правильно указывать компилятору/ассемблеру архитектуру (ARM7TDMI, ARM9E и т.д.), правильно выбрать библиотеку, указать симулятору подходящий файл описания sfr (.ddf). --- Выбираем Processor Mode Arm Или Thumb 4) Project -> Options -> С/С++ Compiler 4.1)вкладка Language --- В разделе Language галочка уже стоит где надо в зависимости от того, что мы выбрали в п.2. Можно переставиь ее на Automatic(extension based). 4.2)вкладка Optimization --- Для начала оставляем Size Low или Size none, позволит легко отлаживаться. По мере возрастания опыта можно будет увеличить до максимума. 4.3)вкладка List --- ставим галочку Output list file --- Ставим галочку Assembler mnemonics 5) Project -> Options -> Assembler 5.1) Вкладка List --- ставим галочку Output list file 6) Project -> Options -> Linker 6.1) Вкладка Output --- Если делаем проект для RAM оставляем все как есть, если для Flash - ставим галочку Allow C-SPY-specific output file и на вкладке Extra output ставим галочки Generate Extra output file и выбираем Output Format -> simple-code 6.2) Вкладка List --- ставим галочку Generate linker listing 6.3) Вкладка Config Копируем из папки примеров компилятора в папку проекта подходящий .xcl --- Link command file ставим галочку Override default, указываем $PROJ_DIR$\файл.xcl 7) Project -> Options -> Debugger 7.1) Вкладка Setup --- Выбираем Driver (Simulator/J-Link/Macraigor и т.д.) Копируем из папки примеров .mac в папку проекта --- Ставим галочку Use Macro File, указываем $PROJ_DIR$\файл.mac 7.2) Если отлаживаемся в Flash: Вкладка Download --- Если отлаживаемся в Flash, ставим галочки Verify download, Use flash loader(s) --- Жмем Edit, в появившейся форме New..., в появившемся окне настроек ничего не трогая жмем OK., Жмем ОК в форме выбора загрузчиков. 8) Если используем Wiggler, Project -> Options -> Macraigor --- Выбираем Wiggler в списке OCD interface device. Остальное можно не трогать. 9) File->Save all. В качестве .xcl файла был выбран at91SAM7S64_NoRemap.xcl - стандартный яра а макросовый - SAM7.mac, так же стандартный от яра. Может там чего поменять так же необходимо? Или те настройки что я сделал - это только для дебуга во флэше? Но не автономная работа контроллера ? еще раз повторюсь - отладочная плата SAM7-P64
  9. Необходимо использовать модуль LMX9838 для создания безпроводного протокола RS-232 между этим модулем и КПК. На КПК программная часть уже реализована (Не мной) и вроде даже как опробована, а вот с моей стороны еще нет, а надо бы:) Нужна литература и советы по использованию этой микрухи, где какие подводные камни, как проще реализовать и вообще протокола "голубозуба". даташит на мукруху есть (Ну почти на нее - на LMX9830, это ведь одно и тоже почти?). Полистал книгу Архипкина "Bluetooth технические требования Практическая реализация Приложения". но там все как-то обобщенно, а надо по существу...
  10. Еще вопрос, где есть ветка про то как загрузить через USB с помощью самбы флэш память контроллера. Только чтоб новичку было все понятно :) ??
  11. Ок. - попробую Блин, не отладчик, а конструктор какой-то. Вкрадывались такие подозрения, теперь все подтвердилось. А тактирование PIT тогда идет совместно с ядром. Тогда внимание вопрос! :) Нафига спрашивается тогда нужен ТАКОЙ внутрисхемный отладчик? Который ни прерывания нормально обработать не может из-за того что меняет регистры, ни млин таймер отладить немогёт :( А с остальной периферией такая же песня? Или там отладка нормальная? Я имею в виду USB и работу по прерываниям других протоколов?
  12. 1)Не отлаживать в эмуляторе - плохо :( Не всегда видно ошибку, а когда эмулятор в железе делает все пошагово, то она всегда вылазиет. Да и тотальный контроль на первых парах не помешает. Отказаться сложно. 2) Прочитал, все по букварю, все как надо. Буду пробовать в флэш залить програмулинку. Похоже выбора узнать правду нет :) Вечером попробую. Завтра отпишусь ответом :) В том то и дело что ни в пошаговом режиме ни в режиме запуска программы на постоянку, в режиме отладки через Jtag, ни в одно прерывание я более так и не попал, причем у "яровского" примера такая же канитель:( Ладно, пойду пробовать решать траблу. Попробую так же чере H-Jtag поработать, может он лучшее Wiggler-а?
  13. Всем добрый день! Решил поднять тему ибо прерывания достали уже :( Используется следующее оборудование: отладочная плата SAM7-P64, IAR 4.30A, Wiggler. Трабла в следующем: Сначала пытался написать свою програмку с прерыванием от таймера, но в режиме эмулятора (в RAM) они не срабатывают :(. Сначала долго парился по нужным векторам 0х18 и 0х1с записать ldr pc, [pc, #-0xf20] ; IRQ но потом таки получилось. Все равно не заходит в прерывание. Хотя все везде разрешено и в таймере самом и в AIC. В процессе работы сам таймер считает как-то хаотично. Выполняеш команды пошагово (STEP ITNO) , по идее таймер должен икриментировать свое значение на 1, а на самом деле там лабуда всякая после каждого такта вылетает. Причем после одного такого нажатия выставляется флаг в регистре AIC_IPR (регистр задержанных, отложенных прерываний). ППЦ просто. отрубил этот таймер и запустил с разрешением прерываний PIT (периодический интервальный таймер). Такая же хрень, но зато счет идет нормально, после каждого нажатия - инкремент. Прерывания разрешены, вектора прописаны, А когда счет доходит до того момента, когда должно сработать прерывание, то: Выставляется бит прерывания PITS Вместо того чтобы пойти на обработку прерывания, выставляется опять таки соответствующий флаг в AIC_IPR. Доходит до смешного, что я разрешаю прерывания ВСЕМ и всему в AIC, все вектора в регистрах AIC_SVR устанавливаю на одну программу обработчика прерываний, и плин, НИФИГА ! Запустил прогу - пример по прерываниям от атмеля, что лежит в "корне" IAR. Так там один раз всего увидел, как кристалл вышел на обработку прерывания от таймеров, да и то млин не как положено начал обработку (с самого начала подпрограммы), а с самого конца - фактически с последней строчки в этой подпрограмме. Более я ни разу не добился ни в пошаговом, ни в каком режиме выхода в прерывания. И комп перезагружал, и плату отладочную. Нифига. :( Зашить в ФЛЭШ пока не получается посредством Яра :( Незнаю какие настройки правильно выставить. Может во флэше будет все работать нормально ? Или это таки глюки вигглера и он не работает в прерываниях? Люди какой-то J-tag 4.0 совместно с вигглером юзают, может его надо, но кто это и с чем его едят? ЧТО ДЕЛАТЬ! ХЕЛП! у меня уже все сроки горят, а я до сих пор с прерываниями мучаюсь! :( Блин! Всю периферию акромя USB уже опробовал, а прерывания как не могу, так и не получается :( Поможите начинающему! Люди добрые!
  14. Сенкс за ответ! :) Архитектуру то я уже изучил, а вот что это за функции, описанные, как оказалось в библиотеке я знать не знал, пока саму оную не посмотрел. Все просто оказалось. Млин, Атмеловские коды написаны мягко говоря через одно место. Вектора обработчиков прерываний, в процессе инициализации в примерах атмела, модифицируются ДВА!!! раза. Каламбур да и только. лишняя перестраховка от ложных срабатываний кристалла. Насколько я разобрался, ругался IAR из-за того, что небыл описан путь в опциях проекта - вкладках препроцесоров для Си и АСМА. Такое может быть? Ибо одно единственное различие между моим кодом и кодом атмеля осталось только в этом :)))) Пойду домой проверять. Спасибо за ответы и советы! :a14: А заставило то, что я знать не знал как правильно код на асме в проекте записать. Теперь благодаря вам, - знаю :) Мне еще много предстоит изучить и сделать ошибок. Примного благодарен! :)
  15. Вроде разобрался с кодом на асме. Компилит сам код без ошибок вышеописанных, но блин, выдаются следующие ошибки: даже когда код на асме урезаю до PROGRAM ?RESET RSEG INTRAMSTART_REMAP RSEG INTRAMEND_REMAP RSEG ICODE:CODE:ROOT(2) CODE32 ; Always ARM mode after reset reset org 0x18 ldr pc,[pc,#-0xF20]; org 0x1c ldr pc,[pc,#-0xF20]; ENDMOD END усе равно ошибка эта вылазит. Как только асмовский файл убиваю, так все тип топ и нормально дебугерется. :( и еще, что означают вот эти строки ? //* open FIQ interrupt AT91F_PIO_CfgPeriph(AT91D_BASE_PIO_SW,AT91B_SW1,0); AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_FIQ, FIQ_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE, FIQ_init_handler); AT91F_AIC_EnableIt (pAic, AT91C_ID_FIQ); Скачал примеры от атмела. плин, черт ногу сломит. Компилю их же пример, ошибка: Fatal Error[e72]: Segment INTRAMEND_REMAP must be defined in a segment definition option (-Z, -b or -P) что это, и где ее исправлять ?