justontime 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Пытаюсь запустить ADC на MAX 10, что-то не очень (мягко говоря) получается... Для начала, кто-нибудь знает, чем отличаются clock и adc_pll_clock ? Типа по clock идет общение с внешним миром, а adc_pll_clock только для преобразования A->D ? Если так, они должны быть как-то синхронизированы и т.д. ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andk 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Гхм. Подробный вопрос - подробный ответ. Ну конечно кто-нибудь знает. https://www.intel.com/content/dam/www/progr...10-adc-15.1.pdf Просмотрите, там совсем немного - 60 страниц с картинками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Гхм. Подробный вопрос - подробный ответ. Ну конечно кто-нибудь знает. https://www.intel.com/content/dam/www/progr...10-adc-15.1.pdf Просмотрите, там совсем немного - 60 страниц с картинками. Мне кажется, я задал достаточно определенные вопросы, а не просто попросил рассказать вообще... А ADC UG у меня и так последние пару дней любимое чтиво... Ладно, с clk я уже разобрался (все, как и предполагал), возник другой вопрос. Использую только один аналоговый вход - ANAIN, а выводы ADCx (пара из них) задействованы как обычные GPIOs. При этом в процессе генерации ADC core указал, что используется только channel 0, в sequencer указал, что slot 1, привязан к ch 0. Тем не менее, при компиляции ругается, что "Can't place multiple pins..." именно на те ADCx, которые у меня задействованы, как GPIOs. Где ему еще нужно сказать, что эти ноги нафиг для ADC не нужны ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andk 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба И всё таки, настоятельно рекомендую вдумчиво покурить сей документ... К примеру про ваш вопрос враги не скрывают истину: Стр. 2-5 If you use bank 1A for ADC, you cannot use the bank for GPIO. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Они озверели !!! "Bank 1A, 1B, 2, and 8—you cannot use GPIO pins in these banks." если ADC в принципе включен !!! И это в корпусе E144... Вообще первоначальный восторг по поводу MAX 10 у меня начинает проходить - уже в который раз натыкаюсь на подобные засады... Да, понятно, что UG нужно читать внимательно, но... И всё таки, настоятельно рекомендую вдумчиво покурить сей документ... К примеру про ваш вопрос враги не скрывают истину: Стр. 2-5 If you use bank 1A for ADC, you cannot use the bank for GPIO. :) Да я параллельно уже тоже нашел (только в другом месте), и высказал свое крайнее неудовольствие... Реально у MAX 10 слишком много таких ограничений... If you use bank 1A for ADC, you cannot use the bank for GPIO. :) Кстати, именно это ко мне не имеет отношения - я же использую ANAIN, а не пин из обычного банка, поэтому и не ожидал такой засады... Ладно если бы использование пина из банка отрубало этот банк, но когда сам факт включения ADC отрубает чуть ли не половину GPIOs, это уже ни в какие ворота не лезет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andk 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба :biggrin: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ? Имел ввиду - код на С под NIOS... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ? Имел ввиду - код на С под NIOS... Ловите весь проект целиком. Кстати, какой версией квартуса пользуетесь? НЯП, в первых версиях, где появилась поддержка MAX 10, bsp для ниоса создавался с ошибкой: если в проекте использовались прерывания от АЦП, то в bsp все равно соответствующий парамер имел значение -1. Приходилось врукопашную его править. Только после этого все работало. max10_adc_test.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба Ловите весь проект целиком. Спасибо !!! У меня версия 17.1 lite, там уже нормально ? И еще вопрос, если можно - судя по коду, который удалось найти в интернете, в какой-то момент названия были изменены, типа вместо MODULAR_AD1C_0_SEQUENCER_CSR_BASE стало ADC_SEQUENCER_CSR_BASE Это действительно так ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ? Имел ввиду - код на С под NIOS... const float adc_vref = 3.0f; const volatile int* const adc_sample_array = (int*) ADC_SAMPLE_STORE_CSR_BASE; float adc_voltage; *(unsigned*)ADC_SEQUENCER_CSR_BASE = 1; adc_voltage = adc_vref * adc_sample_array[0] / 4095; Драйвер ADC выкинул, экономия 600 байт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба И еще вопрос, если можно - судя по коду, который удалось найти в интернете, в какой-то момент названия были изменены, типа вместо MODULAR_AD1C_0_SEQUENCER_CSR_BASE стало ADC_SEQUENCER_CSR_BASE Это действительно так ? ХЗ. Я всегда по актуальному bsp проверяю, как оно там называется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба const float adc_vref = 3.0f; const volatile int* const adc_sample_array = (int*) ADC_SAMPLE_STORE_CSR_BASE; float adc_voltage; *(unsigned*)ADC_SEQUENCER_CSR_BASE = 1; adc_voltage = adc_vref * adc_sample_array[0] / 4095; Драйвер ADC выкинул, экономия 600 байт. А не поделитесь ещё и инициализацией ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба А не поделитесь ещё и инициализацией ? А это всё, там нет никакой инициализации. Записывается 1 в CSR, и он начинает работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба А это всё, там нет никакой инициализации. Записывается 1 в CSR, и он начинает работать. Блин, и оно при этом работает ! С ума сойти, это именно то, что мне нужно было, еще раз спасибо ! P.S. А как драйвер нафиг выбросить ? P.P.S. Ну, и если еще кто столкнется - самым простым решением убрать прерывание ADC (которое просто все подвешивало, хотя специально не разрешал) было просто отключение соответствующей линии IRQ в Platform Designer'е Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 27 сентября, 2018 Опубликовано 27 сентября, 2018 · Жалоба Драйвер отключается в BSP Edtor убиранием соответствующей галочки в закладке "Drivers". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться