FORUM Carcd

FORUM Carcd (https://carcd.ru/forum/index.php)
-   Очумелые Ручки (https://carcd.ru/forum/25/)
-   -   отладочная плата C8051f064ek (https://carcd.ru/forum/25/thread15234/)

msa 26.05.2006 20:13

Есть такая отладочная плата C8051F064EK на ацп Silabs за 30 - 45$

Судя схеме - готовый USB осциллограф, только параметры получше

чем у Киевского и Тульского на C8051F321 раз так в 10

я себе заказал , с ней и софт идет демонстрационный

Еще эта штуковина содержит на борту программатор USB

фирменный - типа аналог ЕС2 для Silabs с прошитой C8051F321

Написать бы к этой плате номальную оболочку для диагностики

вобще была бы вещь и сборка платы фирменная





http://www.efo.ru/doc/Silabs/Silabs.pl?2089

msn 26.05.2006 20:48

Я на этом ките уже сделал 2-х канальный осциллограф. Очень большой недостаток кита заключается в том что в качестве интерфейса МК <-> ПК используется медленный CP2102 (RS232<->USB) максимальная средняя скорость ~900 Кб/с, на ките получится только ~450 Кб/с (из-за того что на 22 МГц UART F064 больше не тянет). В режиме самописца (включено одно АЦП / 16 бит) максимальная частота дискретизации 20 КГц. В режиме чтения буфер -> ПК максимальная частота дискретизации 1 МГЦ на каждый канал или 2 МГц если объединить оба АЦП и запустить их со сдвигом на 180 гр. Но буфер всего 128 КБ, т.е. при включенном одном канале хватит на 65536 отсчетов, а при включенных 2-х каналах на 32768 отсчетов. К тому же вся память передается уж очень долго: 128 / 20 = 6-7 сек. Еще к недостаткам можно отнести тот факт что оба аналоговых входа закрыты и связаны небольшой емкостью.

msa 26.05.2006 20:56

Схему я смотрел, там по входам 2 танталовых на 4.7 мкф и выходы операционников соединены

конденсатором , в принципе закоротить не проблема должен будет брать постоянку .

а софт сам писал ? или что есть в отладочном пакете ? очень интересно глянуть http://www.carcd.ru/forum/public/sty...IR#>/smile.gif

sab 26.05.2006 21:16

Я думаю завтра темку приклею к осциллу...

msn 26.05.2006 21:21

Если выкинуть кондеры, как тогда смотреть отрицательные сигналы?

Можно конечно смещение добавить, но тогда если входы будут висеть в воздухе это смещение приведет к смещению нуля. А еще лучше выкинуть входные цепи (фильтры сильно будут искажать искру) и сделать небольшую платку со своими входными цепями (два каскада с защитой + инвертор если нужно смотреть отрицательные сигналы).

Софт писал сам, я автор киевского осцила http://www.carcd.ru/forum/public/sty...IR#>/smile.gif

В отладочном пакете была только прога для демонстрации качества АЦП (высокая линейность и малый шум).

Я бы дал отладочный софт (было реализовано только чтение с АЦП и вывод на экран) если бы его не вытер за ненадобностью.

Сейчас есть только коммерческая версия (исходные коды дать не могу) на базе кита, но уже 8 каналов.

Если интересно (чтобы оценить что на ките может получится) можете посмотреть оболочку и help.

Zip архив (0,98 МБ)

Rar архив (793 КБ)

Сигнал 8 кн.(624 КБ)

msn 26.05.2006 21:32

Забыл написать, что у этой серии МК F06x есть DMA, позволяющей без траты ресурсов МК писать данные АЦП прямо в XDATA.

Пример записи на 2 МГц:

Код:


;------------------------------- Инициализация --------------------------------

r2m_init:

 clr        a                                                                                ; Сбросили аккумулятор



 mov        SFRPAGE,                        a                                        ; 0 - Страница по умолчанию



 mov        R2M_BANK_ADD,          #020h                                ; Следующий банк = R2M_BANK_SET + R2M_BANK_ADD



 mov        R2M_COUNT_RECORD_HI, count_record_hi          ; Кол-во записываемых отсчетов c учетом длины претригера

 mov        R2M_COUNT_RECORD_MD, count_record_md

 mov        R2M_COUNT_RECORD_LO, count_record_lo

                                                 

 mov        R2M_COUNT_PRETGR_HI, count_pretrigger_hi  ; Длина претригера в отсчетах

 mov        R2M_COUNT_PRETGR_LO, count_pretrigger_lo



;------------------------- Предварительная настройка --------------------------

 setb  LED_TETS                                                                  ; Включить светодиод начала записи

 anl        BANK_PORT,  #01Fh                                                ; Выбрать банк 0 

 mov        MUX_PORT,  buf_ch                                                ; Установили номер канала



;--------------------------- Конфигурация DMA ---------------------------------

 mov        SFRPAGE,        #DMA0_PAGE                                        ; 3 - Страница конфигурации DMA

 mov        DMA0DAH,        a                                                        ; Стартовый адрес XDATA DMA = 0 : всегда начинаем запись с начала XDATA

 mov        DMA0DAL,        a



 mov        DMA0IPT,        a                                                        ; Установили адрес команд на начало буфера команд

 mov        DMA0IDT,        #0B0h                                                ; b7 = 1  : CCNV        - разрешить непрерывное преобразование, т.е. игнорируем счетчик

                                                                                                  ; b6 = 0  : DIFFSEL - запретить дифференциальный режим                 

                                                                                                  ; b5 = 1  : ADC1EN  - записывать данные АЦП1                 

                                                                                                  ; b4 = 1  : ADC0EN  - записывать данные АЦП0 



 mov        DMA0IDT,        #080h                                                ; Команда окончания записи с непрерывным преобразованием



 mov        DMA0BND,        a                                                        ; Установили адрес начала чтения буфере DMA



;-------------------------- Инициализация ACC начальным банком ----------------

 mov        R2M_BANK_SET,  #01Fh                                        ; Определили устанавливаемый банк               



;-------------------------------------- Запуск --------------------------------

 mov        SFRPAGE,        #ADC1_PAGE                                        ; 1 - Страница конфигурации АЦП 1

 clr        AD1INT                                                                        ; Сбросили флаг окончания предыдущих преобразований АЦП1

 jnb        AD1INT,        $                                                        ; Синхронизируем запуск DMA по окончанию преобразования АЦП1

 clr        AD1INT                                                                        ; Сбросили флаг окончания преобразования АЦП1



 nop                                                                                          ; Обеспечиаем задержку, смысл которой заключается в том, чтобы

 nop                                                                                          ; данные от АЦП0 записывались промежуточный буфер DMA до

 nop                                                                                          ; записи данных АЦП1, т.е. чтобы соблюсти порядок в памяти:

 nop                                                                                          ; АЦП0(T1) АЦП1(T1+dT)

 nop                                                                                          ; Количество nop должно быть в пределах: 3-14



 mov        SFRPAGE,        #ADC0_PAGE                                        ; 0 - Страница конфигурации АЦП 0

 clr        AD0INT                                                                        ; На всякий случай сбросили флаг окончания преобразования АЦП0         

 

 mov        SFRPAGE,        #DMA0_PAGE                                        ; 3 - Страница конфигурации DMA

 mov        DMA0CN,        #080h                                                ; b7 = 1 : DMA0EN  - запускаем DMA0

                                                                                                  ; b6 = 0 : DMA0INT - флаг завершения операций DMA0

                                                                                                  ; b5 = 0 : DMA0MD  - режим 0 (повторять группу команд заданое число раз)

                                                                                                  ; b4 = 0 : DMA0DE1 - Флаг ошибки переполнения данных от АЦП1

                                                                                                  ; b3 = 0 : DMA0DE0 - флаг ошибки переполнения данных от АЦП0

                                                                                                  ; b2 = 0 : DMA0DOE - прерывания от флагов предупреждения о переполнении данных разрешены

                                                                                                  ; b1 = 0 : DMA0DO1 - флаг предупреждения о переполнении данных от АЦП1

                                                                                                  ; b0 = 0 : DMA0DO0 - флаг предупреждения о переполнении данных от АЦП1



 mov        SFRPAGE,        #ADC0_PAGE                                        ; 0 - Страница конфигурации АЦП 0



 jnb        f_osc_trigger,  r2m_no_trigger                        ; Если нет триггера то переходим на набивку данных





...



r2m_no_trigger:

;------------------------- Простая набивка данных в банки ---------------------

r2m_no_trigger_fill_buf:                                                  ; Заполнение буфера

 jbc        AD0INT,        r2m_no_trigger_adc0_int        ; +4 :  4 / Ждем окончание преобразования АЦП0

 sjmp  r2m_no_trigger_fill_buf                                ; +3          / Не факт, что будет поймано имено в начале команды проверки



r2m_no_trigger_adc0_int:                                                  ; Данные от АЦП0 записываются в ОЗУ

 djnz  R2M_COUNT_RECORD_LO, r2m_no_trigger_fill_buf; +2 :  6 / Уменьшаем количество отсчетов записаное в даном банке

 djnz  R2M_COUNT_RECORD_MD, r2m_no_trigger_fill_buf; +2 :  8



 mov        R2M_COUNT_RECORD_MD, #040h                                ; +2 : 10 / Возобновили количество отсчетов в банке : 0x4000 = 16384

 add        R2M_BANK_SET,                R2M_BANK_ADD                ; +1 : 11 / Определили следующий устанавливаемый банк



 nop                                                                                          ; +1 : 12 / Эта задержка обеспечивает полную запись 2-х байт АЦП0 

 nop                                                                                          ; +1 : 13

 nop                                                                                          ; +1 : 14

 nop                                                                                          ; +1 : 15

 nop                                                                                          ; +1 : 16

 nop                                                                                          ; +1 : 17

 nop                                                                                          ; +1 : 18

 nop                                                                                          ; +1 : 19



 mov        BANK_PORT,                  R2M_BANK_SET                ; +2 : 21 / Установили банк - отсчет с АЦП1 бракованый       

 djnz  R2M_COUNT_RECORD_HI, r2m_no_trigger_fill_buf; +2 : 23 / Уменьшили количество банков для записи


msa 27.05.2006 10:02

Посмотрел софт http://www.carcd.ru/forum/public/sty...O_DIR#>/27.gif нужен такой осциллограф , 8 каналов даже ни к чему, 2 достаточно

и маркера наконец стали настраиваться по цвету - очень удобно

когда будет продаваться и где, я сразу записываюсь

msn 29.05.2006 00:18

Так как несколько человек написали по поводу покупки данного железа отвечу тут.

Софт писал на заказ для немецкой фирмы, поэтому скорее всего устройства будут продавать в Германии. Сам производить и продавать я не имею права. Софт и описание софта выложил только в целях демонстрации возможностей F06x.

metronom 07.06.2006 13:42

Интересно - а где нибудь протокол обмена по USB с этой оболочкой посДсмотреть мона? :11: Дабы свой USB-осцил подвязать к готовому софту а не маяться с написанием оболочки.


Текущее время: 01:22. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot