-
Постов
27 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Schtirlitz
-
-
Обычный порт за 1 такт никто не обещал, но IOBUS должен работать. Не знаю как у вас объявлен PORTA, но со стандартными заголовками это будет так:
PORT_IOBUS->Group[0].OUTTGL.reg = LED_RED;
Стало в 2 раза быстрее щелкать.. теперь на 2 такта 1 смена уровня порта.
В документации где-то увидел "single cycle GPIO access", вот и решил проверить)
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
Не туда смотрите. Смотреть надо на ассемблерные команды.в асме все нормально, одна С команда- одна инструкция:
0x23a: 0x61ac STR R4, [R5, #0x18] 0x23c: 0x61ac STR R4, [R5, #0x18] 0x23e: 0x61ac STR R4, [R5, #0x18] 0x240: 0x61ac STR R4, [R5, #0x18] 0x242: 0x61ac STR R4, [R5, #0x18] 0x244: 0x61ac STR R4, [R5, #0x18] 0x246: 0x61ac STR R4, [R5, #0x18] 0x248: 0x61ac STR R4, [R5, #0x18] 0x24a: 0x61ac STR R4, [R5, #0x18] 0x24c: 0x61ac STR R4, [R5, #0x18] 0x24e: 0xe7f4 B.N 0x23a
по шагам щелкал - никаких вылетов из цикла в какие-либо прерывания нету.
такое ощущение, что где-то такт делится на 4, но где- понять не могу.
-
впервые запускаю плату на этом чудесном проце. Тактирование от внешнего генератора 16мГц.
инициализация тактирования такая:
SYSCTRL->XOSC.reg=SYSCTRL_XOSC_STARTUP(0x04) | SYSCTRL_XOSC_ENABLE | SYSCTRL_XOSC_GAIN(0x4) | SYSCTRL_XOSC_AMPGC | SYSCTRL_XOSC_RUNSTDBY; //XCLK ON while (!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_XOSCRDY)){}; GCLK->CTRL.reg = GCLK_CTRL_SWRST ; while ( (GCLK->CTRL.reg & GCLK_CTRL_SWRST) && (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY) ); /* Wait for reset to complete */ // wait states = 0 NVMCTRL->CTRLB.reg= NVMCTRL_CTRLB_CACHEDIS; GCLK->GENCTRL.reg = GCLK_GENCTRL_ID_GCLK0 | GCLK_GENCTRL_SRC_XOSC | GCLK_GENCTRL_GENEN; //SWITCH XCLK TO GCLK0 GCLK->GENCTRL.reg = GCLK_GENCTRL_ID_GCLK1 | GCLK_GENCTRL_SRC_XOSC | GCLK_GENCTRL_GENEN | GCLK_GENCTRL_OE; //EXT_ADC_CLK GCLK->GENDIV.reg = GCLK_GENDIV_ID_GCLK0 | GCLK_GENDIV_DIV(1);//DIV=1 GCLK->GENDIV.reg = GCLK_GENDIV_ID_GCLK1 | GCLK_GENDIV_DIV(2);//DIV=2 (EXT_ADC) PM->CPUSEL.reg = 0;//DIV=1 PM->APBASEL.reg = 0 ; PM->APBBSEL.reg = 0 ; PM->APBCSEL.reg = 0 ;
далее в цикле делаю такую хрень:
CYCLE: PORTA.OUTTGL.reg = LED_RED; PORTA.OUTTGL.reg = LED_RED; PORTA.OUTTGL.reg = LED_RED; PORTA.OUTTGL.reg = LED_RED; PORTA.OUTTGL.reg = LED_RED; PORTA.OUTTGL.reg = LED_RED; PORTA.OUTTGL.reg = LED_RED; PORTA.OUTTGL.reg = LED_RED; PORTA.OUTTGL.reg = LED_RED; PORTA.OUTTGL.reg = LED_RED; goto CYCLE;
смотрю на такт и на порт LED_RED и вижу, что порт дергается синхронно с тактом и ровно в 4 раза медленнее, хотя по инструкции по идее должен дрыгаться за 1 такт.
При этом внешние такты на АЦП и на SPI выдаются такие как я и задал.
Что я делаю не так?
-
Требуется монтажник (не посредник, а реальный исполнитель) на выполнение разовых заказов по монтажу печатных плат.
Опытные образцы (1-2) и мелкие серии (20-30плат). Для серий готовы предоставлять трафарет.
Компоненты применяются в основном SMD (0603)
Москва и ближайшее Подмосковье.
Ваши предложения на zalex3d со6aka rambler . ru
-
Очень даже может быть при чем, как Вы переключаете ядро на PLL? Одной командой сразу и PRES и CSS?
Там весь код по начальной инициализации был спёрт из атмеловского эвалюшена с минимальными доработками. И работает как часы.
Проблема решена, спасибо aaarrr за подсказку. на входе клока был слишком высокий уровень. уровень понизили и все заработало как и должно. Похоже в более новые процы атмеловцы что-то добавили и они с таким уровнем работают нормально, а старые отказываются. Это и ввело нас в заблуждение.
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
ИМХО, ошибиться можно в двух местах:- уровень сигнала генератора (должен быть 1.8В)
- настройка PLL (тут надо видеть код)
Настройка PLL думаю тут непричем, тк этот код на множестве плат проверен и работает нормально, а вот с уровенем могут быть проблемы.
Генератор FXO- AH вроде 3,3В выдает через резистор на вход.
Сколько на самом входе не запомнил.
Завтра посмотрю.
Спасибо за наводку.
Правда непонятно как тогда оно на других платах с такими генераторами работает??
И на всех прежних платах у заказчика:-)))
-
Есть некие уточнения:
IARом все таки проц хоть медленно, но программируется и даже стартует, но в 4 раза медленнее чем должен. Рабочая частота внутри множится на встроенном PLL, на вход такт подается с внешнего генератора (такт нормальный). Соответственно подозрение на него.
В рабочих платах на выводе PLL_RC стоит около 0,5В даже в стертом проце, в нерабочих - 0В как в стертом, так и в прошитом и запущенном.
Удвоенная частота для тактирования внеших чипов на вывод PCK не выводится, а на рабочих платах выводится сразу-же(в стартапе все конфигурации).
Платы абсолютно одинаковы и собраны правильно.
Все процы от 2011 года выпуска работают нормально, все процы 2010 года выпуска работают как описано выше.
Что это? Брак? Или мы что-то не так делаем?
-
Ситуация такая: собрали нам 10 плат с AT91SAM7x128 на борту. Платы уже отработанные, собираем не в первый раз.
Ровно половина прошилась без проблем и запустилась, вторая половина категорически отказывается программироваться. Из тулзов у нас JFlash и IAR, программатор Атмеловский Segger SAM-ICE. Версии самые последние или почти самые:-)
Происходит все следующим образом: JFlash c процом коннектится, сигнатуру читает, но при попытке прошить пишет - Can't halt Target
Читает и стирает без ошибок. В IAR вроде как даже загружается все через отладчик в проц, без ошибок, но в 3 раза дольше чем обычно и программа не выполняется.
При пристальном рассмотрении выяснилось что первая половина процов из партии 2011 года, а вторая из партии 2010года. Покупали в Терре..
Кто нибудь сталкивался с таким? Куда копать?
-
Еще как позволяет 14080, 1 км на 0.5 кабеле.
Кстати а прошивку какую юзаете?
На SDFE4 работает, а на EFM не работает PAM128.
прошивка IDC: 1.5.0, DFE: 158_002
-
У нас есть готовое решение на EFM чипе, скорость до 11384кБит по каждому линку (больше к сожалениею EFM с нынешней прошивкой не позволяет)
Поддерживается агрегация линков с пропорциональным увеличением общей скорости.
Поддерживается до 8 регенераторов для увеличения дальности.
Если интересно- пишите в личку
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
Если вы ставите задачу - передрать серийно выпускаемое устройство, и "разработать" документацию для производства здесь, то с этим справится студент.
Если же вы хотите разработать аналог с лучшими параметрами, или меньшей себестоимостью (иной причины вложения в разработку я не вижу) то придется основательно раскошелится, поскольку работа грамотного СВЧ инженера стоит ой как дорого.
-
Я запустил честный Repeater в режиме TDM. Работает строго по диаграмме. До 8 мегабит. Вы уже разобрались с Вашей проблемой? Может у Вас на регенераторе неправильно установлен режим работы mode в команде CMD_CFG_SYM_DSL_MODE?
Кто-нибудь уже игрался с управлением мощностью Normal/Forced, EFM, LineProbing, SYM_PSD/ASYM_PCD, AnnexF/AnnexG? Есть кое-какие наблюдения, интересно обменяться опытом.
Какие чипы на STU-C и STU-R концах? Если SDFE, то все действительно работает по диаграмме. Если EFM (SOC4E) то репитер не работает, причем на самом начальном этапе диаграммы начанает вязаться без перехода в IDLE (кто виноват-непонятно пока).
Пока что решение проблемы- репитер из 2-х оконечек STU-R<->STU-C
-
Ибо нафига мне "суперпупернадёжная" система, у которой происходит один сбой в год, но он НЕ ОБНАРУЖИВАЕТСЯ СИСТЕМОЙ. Я лучше возьму систему, у которой сбои происходят каждый день, ну у которой эти сбои НЕ ПРОХОДЯТ НЕЗАМЕЧЕННЫМИ СИСТЕМОЙ
Т.е. я предлагаю даже УХУДШАТЬ надёжность работы девайса если это позволит увеличить вероятность обнаружения всех сбоев[/i]
А как быть с вероятностью сбоя программы обнаружения сбоев?
Не нужно изобретать велосипед: если нужна вероятность отказа устройства 10 в минус 9-й степени - применяйте резервирование, мажоритарные схемы итд.
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
Надо отделить мух от котлет. Ибо проблема надежности устройства не ограничивается только ПО микроконтроллера. Если у вас программные сбои происходят от разряда пьезозажигалки, то программа тут совершенно не причем- все проблемы решаются правильной трассировкой. Для этого и существуют испытания на ЭМС и разные группы жесткости устройств.
ИМХО для программиста достаточно встроенного WDT (правда некоторые спецы по надежности советуют использовать внешний) и грамотно написанной программы.
Вероятность отказа устройства 10 в минус 9 степени - это попахивает авиацией, резервированием и прочими усложнениями:-))
Для "гражданских" устройств 10 в минус 5 степени уже хорошо.
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
Требуется FPGA дизайнер для выполнения разовых проектов.
Основные требования:
- опыт работы с Altera Cyclone-I, Cyclone-II
- знание языков Verilog, VHDL
- опыт работы с интерфейсами E1, PCM (коммутация, синхронизация, сигнализация и.т.д.)
Оплата по договоренности, высокая.
(г. Москва)
Ждем резюме: [email protected]
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
-
Ставим в настройках линкера IAR -
Format Variant: 32bit linear without entry point
после этого AVRстудия начинает проглатывать HEX файл из IARa.
-
А Вы, случайно, подтягивающий резистор не подключили?
О чем это вы?
...
Я имел ввиду, что если на выводе который используется для АЦП включить внутренний
подтягивающий резистор записав в PORTx единицу, а в DDRx ноль,
то если АЦП меряет напряжение с источника с низким внутренним сопротивлением
(например выход операционного усилителя, или резистор с малым, по сравнению с
подтягивающими резисторами, сопротивлением)
замеряемое значение будет немного больше реального, но похоже.
Если же ножку чипа закоротить, то АЦП будет выдавать ненулевое значение
за счет падения напряжения, от протекаемого с подтягивающего резистора тока,
на внутренних цепях. Проверить очень просто, отсоединить вывод от измеряемой цепи
и замерить на нем напряжение, при включенно подтяжке будет +5в.
_____
Очень похоже на Ваш случай, но так как Вы пишете, что с другими чипами и,
как я понял, с той же программой проблем не было, то причина наверное в другом.
_________________
Александр
Забыл сказать что измеряю с выводов ADC7 и ADC6, которые не имеют I/O портов.
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
А Вы, случайно, подтягивающий резистор не подключили?О чем это вы?
У ацп подключенны: AGND к основной земле, AVCC через LC фильтр (10мкГн и 0.1 на AGND) к основному питанию (+5V), AREF к внешнему малошумящему источнику 3.3В. По одному из входов стоит подстроечный резистор между AREF и AGND. Cначала думали, что резистор в 0 не выходит, потом бросили перемычку между входом и AGND- смещение не пропало. Причем это не шум, а стабильное выдаваемое значение. С процессорами, выпущенными раньше (мега103, мега128) такого не было.
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
Земли объединены. АЦП в общем-то работает правильно, просто при нулевом сигнале выдает ненулевой код. Вычислений никаких не производим. Читал сначала ADCL потом ADCH и наоборот- изменений никаких. Проц- ATMEGA88-20AU
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
Странно ведет себя АЦП в меге88. С короткозамкнутым (коротким проводком между выводами) на AGND входом, выдает значение 0x18 (в 10-разрядной сетке АЦП) при замыкании на AREF выдает 3FF. В промеджуточных положениях выдает похожие на правду результаты. Откуда такое смещение нуля?
Перепаивали проц- тоже смещение нуля есть. Кто нибудь сталкивался с этим, или у нас партия бракованная?
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
ARM программист... С опытом и знаниями... 16-30тыщ... Смешно :angry2:
-
Кто нибудь работал с видео кодеком STV2310?
Нужна рабочая схема включения.
-
Опубликовано · Изменено пользователем Schtirlitz · Пожаловаться
Реальные доказательства в студию. Хотя бы подробный расклад почему нет. А насчет компетентности я вроде не претендовал.Когда у меня был ВАЗ и самопальный "мотор- тестер :) " я считывал параметры в движении и никаких проблем с этим не было.
Однако давно, когда на ВАЗ только начали ставили первые контроллеры Январь и гонщики ездили с подключенным сканером (чтобы наблюдать параметры и менять их на ходу), от постоянного опроса контроллера он не успевал выполнять свои основные задачи и сбивалось зажигание и фазы впрыска. Говорят на новых версиях Января эту проблему решили. Других противопоказаний для пользовании сканером в движении я не слыхал.
Более того, при мне диагносты из Автомира ездили с подключенным сканером, чтобы отловить ошибки в движении.
Вот здесь обсуждался OBD-II для Акцента. http://www.accent-club.ru/forum/topic.asp?TOPIC_ID=11475Там же рядом - БК для него же, с работой через OBDII.
Этот
колхозныйбортовой компьютер работает не через OBD-II, а берет сигналы напрямую от датчиков и одной из форсунок- смотрите внимательно инструкцию по подключению :)
ATSAMD20G17 новый проц-новые глюки
в Microchip (Atmel)
Опубликовано · Пожаловаться
У меня порт дергается с частотой 4 мГц при 16 тактирования.
Похоже всётаки с настройкой GCLK что-то не так.
Проц для меня новый, буду дальше разбираться..