реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Altera ADC core
justontime
сообщение Sep 25 2018, 16:09
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



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

Для начала, кто-нибудь знает, чем отличаются clock и adc_pll_clock ? Типа по clock идет общение с внешним миром, а adc_pll_clock только для преобразования A->D ? Если так, они должны быть как-то синхронизированы и т.д. ?
Go to the top of the page
 
+Quote Post
andk
сообщение Sep 25 2018, 17:08
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 17-12-04
Из: Миасс
Пользователь №: 1 519



Гхм. Подробный вопрос - подробный ответ.
Ну конечно кто-нибудь знает.
https://www.intel.com/content/dam/www/progr...10-adc-15.1.pdf
Просмотрите, там совсем немного - 60 страниц с картинками.
Go to the top of the page
 
+Quote Post
justontime
сообщение Sep 25 2018, 17:39
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Цитата(andk @ Sep 25 2018, 20:08) *
Гхм. Подробный вопрос - подробный ответ.
Ну конечно кто-нибудь знает.
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 не нужны ???
Go to the top of the page
 
+Quote Post
andk
сообщение Sep 25 2018, 17:48
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 17-12-04
Из: Миасс
Пользователь №: 1 519



И всё таки, настоятельно рекомендую вдумчиво покурить сей документ...
К примеру про ваш вопрос враги не скрывают истину:
Стр. 2-5
If you use bank 1A for ADC, you cannot use the bank for GPIO.
sm.gif
Go to the top of the page
 
+Quote Post
justontime
сообщение Sep 25 2018, 17:54
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



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

"Bank 1A, 1B, 2, and 8—you cannot use GPIO pins in these banks." если ADC в принципе включен !!! И это в корпусе E144...


Вообще первоначальный восторг по поводу MAX 10 у меня начинает проходить - уже в который раз натыкаюсь на подобные засады... Да, понятно, что UG нужно читать внимательно, но...


Цитата(andk @ Sep 25 2018, 20:48) *
И всё таки, настоятельно рекомендую вдумчиво покурить сей документ...
К примеру про ваш вопрос враги не скрывают истину:
Стр. 2-5
If you use bank 1A for ADC, you cannot use the bank for GPIO.
sm.gif

Да я параллельно уже тоже нашел (только в другом месте), и высказал свое крайнее неудовольствие... Реально у MAX 10 слишком много таких ограничений...

Цитата(andk @ Sep 25 2018, 20:48) *
If you use bank 1A for ADC, you cannot use the bank for GPIO.
sm.gif


Кстати, именно это ко мне не имеет отношения - я же использую ANAIN, а не пин из обычного банка, поэтому и не ожидал такой засады... Ладно если бы использование пина из банка отрубало этот банк, но когда сам факт включения ADC отрубает чуть ли не половину GPIOs, это уже ни в какие ворота не лезет...
Go to the top of the page
 
+Quote Post
andk
сообщение Sep 25 2018, 17:55
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 17-12-04
Из: Миасс
Пользователь №: 1 519



biggrin.gif
Go to the top of the page
 
+Quote Post
justontime
сообщение Sep 26 2018, 06:30
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



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

Имел ввиду - код на С под NIOS...
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Sep 26 2018, 09:54
Сообщение #8


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(justontime @ Sep 26 2018, 09:30) *
Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ?
Имел ввиду - код на С под NIOS...

Ловите весь проект целиком.
Кстати, какой версией квартуса пользуетесь? НЯП, в первых версиях, где появилась поддержка MAX 10, bsp для ниоса создавался с ошибкой:
если в проекте использовались прерывания от АЦП, то в bsp все равно соответствующий парамер имел значение -1.
Приходилось врукопашную его править.
Только после этого все работало.
Прикрепленные файлы
Прикрепленный файл  max10_adc_test.zip ( 3.28 мегабайт ) Кол-во скачиваний: 5
 


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
justontime
сообщение Sep 26 2018, 11:09
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Цитата(Stewart Little @ Sep 26 2018, 12:54) *
Ловите весь проект целиком.


Спасибо !!!

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

И еще вопрос, если можно - судя по коду, который удалось найти в интернете, в какой-то момент названия были изменены, типа вместо MODULAR_AD1C_0_SEQUENCER_CSR_BASE стало ADC_SEQUENCER_CSR_BASE
Это действительно так ?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Sep 26 2018, 11:17
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(justontime @ Sep 26 2018, 10:30) *
Блин, вроде бы сделал, как нужно, но фигню какую-то читает неменяющуюся (при изменении напряжения на входе ADC). Никто не поделится кусочком работающего кода, инициализирующего ADC и получающего данные ?

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


CODE
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 байт.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Sep 26 2018, 11:28
Сообщение #11


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(justontime @ Sep 26 2018, 14:09) *
И еще вопрос, если можно - судя по коду, который удалось найти в интернете, в какой-то момент названия были изменены, типа вместо MODULAR_AD1C_0_SEQUENCER_CSR_BASE стало ADC_SEQUENCER_CSR_BASE
Это действительно так ?

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


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
justontime
сообщение Sep 26 2018, 12:10
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Цитата(DmitryR @ Sep 26 2018, 14:17) *
CODE
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 байт.

А не поделитесь ещё и инициализацией ?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Sep 26 2018, 13:57
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(justontime @ Sep 26 2018, 16:10) *
А не поделитесь ещё и инициализацией ?

А это всё, там нет никакой инициализации. Записывается 1 в CSR, и он начинает работать.
Go to the top of the page
 
+Quote Post
justontime
сообщение Sep 26 2018, 16:30
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Цитата(DmitryR @ Sep 26 2018, 16:57) *
А это всё, там нет никакой инициализации. Записывается 1 в CSR, и он начинает работать.

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

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

P.P.S. Ну, и если еще кто столкнется - самым простым решением убрать прерывание ADC (которое просто все подвешивало, хотя специально не разрешал) было просто отключение соответствующей линии IRQ в Platform Designer'е
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Sep 27 2018, 05:12
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Драйвер отключается в BSP Edtor убиранием соответствующей галочки в закладке "Drivers".
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th April 2024 - 10:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01519 секунд с 7
ELECTRONIX ©2004-2016