Jump to content

    

Recommended Posts

Пытаюсь запустить ADC на MAX 10, что-то не очень (мягко говоря) получается...

 

Для начала, кто-нибудь знает, чем отличаются clock и adc_pll_clock ? Типа по clock идет общение с внешним миром, а adc_pll_clock только для преобразования A->D ? Если так, они должны быть как-то синхронизированы и т.д. ?

Share this post


Link to post
Share on other sites

Гхм. Подробный вопрос - подробный ответ.

Ну конечно кто-нибудь знает.

https://www.intel.com/content/dam/www/progr...10-adc-15.1.pdf

Просмотрите, там совсем немного - 60 страниц с картинками.

Share this post


Link to post
Share on other sites
Гхм. Подробный вопрос - подробный ответ.

Ну конечно кто-нибудь знает.

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 не нужны ???

Share this post


Link to post
Share on other sites

И всё таки, настоятельно рекомендую вдумчиво покурить сей документ...

К примеру про ваш вопрос враги не скрывают истину:

Стр. 2-5

If you use bank 1A for ADC, you cannot use the bank for GPIO.

:)

Share this post


Link to post
Share on other sites

Они озверели !!!

 

"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, это уже ни в какие ворота не лезет...

 

Share this post


Link to post
Share on other sites

Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ?

 

Имел ввиду - код на С под NIOS...

Share this post


Link to post
Share on other sites
Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ?

Имел ввиду - код на С под NIOS...

Ловите весь проект целиком.

Кстати, какой версией квартуса пользуетесь? НЯП, в первых версиях, где появилась поддержка MAX 10, bsp для ниоса создавался с ошибкой:

если в проекте использовались прерывания от АЦП, то в bsp все равно соответствующий парамер имел значение -1.

Приходилось врукопашную его править.

Только после этого все работало.

max10_adc_test.zip

Share this post


Link to post
Share on other sites
Ловите весь проект целиком.

 

Спасибо !!!

 

У меня версия 17.1 lite, там уже нормально ?

 

И еще вопрос, если можно - судя по коду, который удалось найти в интернете, в какой-то момент названия были изменены, типа вместо MODULAR_AD1C_0_SEQUENCER_CSR_BASE стало ADC_SEQUENCER_CSR_BASE

Это действительно так ?

 

Share this post


Link to post
Share on other sites
Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе 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 байт.

Share this post


Link to post
Share on other sites
И еще вопрос, если можно - судя по коду, который удалось найти в интернете, в какой-то момент названия были изменены, типа вместо MODULAR_AD1C_0_SEQUENCER_CSR_BASE стало ADC_SEQUENCER_CSR_BASE

Это действительно так ?

ХЗ. Я всегда по актуальному bsp проверяю, как оно там называется.

 

Share this post


Link to post
Share on other sites
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 байт.

А не поделитесь ещё и инициализацией ?

Share this post


Link to post
Share on other sites
А это всё, там нет никакой инициализации. Записывается 1 в CSR, и он начинает работать.

Блин, и оно при этом работает ! С ума сойти, это именно то, что мне нужно было, еще раз спасибо !

 

P.S. А как драйвер нафиг выбросить ?

 

P.P.S. Ну, и если еще кто столкнется - самым простым решением убрать прерывание ADC (которое просто все подвешивало, хотя специально не разрешал) было просто отключение соответствующей линии IRQ в Platform Designer'е

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this