Перейти к содержанию

Программа На Pic16f84a Для Lmx2322


ZooN

Рекомендуемые сообщения

Братья программисты!.... вот к вам за помощью обращаюсь!.... захотелось оживить давно лежащий синтезатор! LMX2322 …Есть в сети образец синтеза на этой микросхеме! Но управление этой многоножкой осуществляется AVRой ….а уж больно хочется заточить под PIC (почему хочется вопрос заднего плана)Долго и упорно разбирался как управлять данной таракашкой!,.. а когда разобрался теперь не догоняю как всё это реализовать на PICе!...

PICи изучаю попутно! Пока на стадии простейшего написания программ на PIC16F84A (его и беру за основу)

Ближе к телу!

Суть такая!,… на LMX есть 3ри входа для управления!...

DATA

Clock

LE

В LMX нужно забить 2ва регистра! Биты в LMX загружаются последовательно! Через порт DATA! При выставлении каждого бита(на выходе МК) в нужное состояние, на порт Clock подаётся короткий импульс и бит записывается в нужное место регистра синтезатора! Допустим содежание, которым я должен наполнить регистры, я уже определил! Но возникает проблема номер 1…. Регистры там 18бит! Тоесть всю требуемую инфу что я должен побитно передать на вход DATA я не могу записать в один регистр контроллера! Их потребуется несколько! И нужно каким то образом сместить биты в регистрах МК и по порядку передать их на DATA, и при выставлении посылать импульсы в Clock и так все 18 штук! Потом формируем импульс на LE и регистр заполнен!..... потом следующий!

В принцепе моих знаний хватает только на то чтобы самому прописывать каждый уровень на выходе там допустим R0 portB и подавать импульс определённой длительности ну там с R1 а в конце сформировать и на LE ….. но подход такой не удобен! Так как при изменении частоты придётся в программе выставлять все эти битики …. Да и в .hex-e не подредактируешь! А вот как сделать циклический сдвиг да ещё на 18бит х3!...

Вопросы а почему LMX2322 а почему PIC16F84A не задавать! =)

А вот алгоритм но уже не словами а от руки начеркал!

72509a427f40t.jpg

P.S. Подскажите хотябы как и во что копать!.... а там сам попробую поразбираться! :help1:

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Вопросы а почему LMX2322 а почему PIC16F84A не задавать! =)

Извиняюсь, что не по теме. Но прикольно наблюдать, как когда все восьми битные микроконтроллеры дешевеют, 16f84a дорожает. А всего на всего это первый и довольно долгое время единственный микроконтроллер «микрочипа» с флеш памятью. Самое интересное, что разговоры, что его снимут с производства начали появляться с 2004 года, а его всё клепают и клепаю. Не удивлюсь если это один из самых продаваемых восьмибитников в мире.

Еще раз извиняюсь, но наболело просто не люблю PIC до 18 серии.

Это сообщение поставляется "как есть", без каких либо гарантий. Автор сообщения не несёт какой либо ответственности

за материальный, либо моральный ущерб причиненный данным сообщением напрямую или косвенно.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Понимаю ваше возмущение!.... от части согласен с вашими словами сказанными в сторону 16-84... просто пока другие даже не разглядывал! (с этим разберусь основательно)... и просто они есть в наличии! Подогнали на халяву! выбрасывать рука не подымается! а чтоб без дела лежали не хочется!...=(

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А на чём прошивы пишете ? Си или Асм ? Впринципе это делаеться с помощью сдвига регистра, потом смотрим на бит переноса и выплёвываем его значение на ножку порта.

Вот и всё.

ЗЫ: А почему LMX2322 и PIC16F84A ? :) Шутка :)

Тему переместил в соответствующий раздел

Ссылка на комментарий
Поделиться на другие сайты

Вот держи кусок исходника. Тут правда для LMX2306, но принцип тот же.

; Передача команд на синтезатор гетеродина
;************************************************************************************
lmx_func
; Передача команды для установки режимов LMX
;------------------------------------------------------------------------------------
movlw	b'0000000'
movwf	part1
movlw	b'0001001'
movwf	part2
movlw	b'1010010'
movwf	part3
call			 wr_comand_1
;------------------------------------------------------------------------------------

osc_del
; Передача значения коэффициента деления частоты опорного генератора
;------------------------------------------------------------------------------------
movlw	b'0000000'
movwf	part1
movlw	b'0010100'
movwf	part2
movlw	b'0000000'
movwf	part3
call			 wr_comand_1
;------------------------------------------------------------------------------------

vco_del
; Передача значения коэффициента деления частоты ГУН в соответствии
;с выбранным каналом
;------------------------------------------------------------------------------------
movlw	b'0001010'
movwf	part1
movlw	b'1111100'
movwf	part2
movlw	b'0000001'
movwf	part3
call		  wr_comand_1
;------------------------------------------------------------------------------------


какой-то код
; Подпрограммы для работы с LMX
;=============================================

wr_comand_1
; Подпрограмма передачи команды на синтезатор гетеродина
;----------------------------------------------------------------------------------
bcf	out_port, le1
nop
movf	part1, W
movwf	part
call	wr_part
movf	part2, W
movwf	part
call	wr_part
movf	part3, W
movwf	part
call	wr_part
nop
bsf	out_port, le1
return
;----------------------------------------------------------------------------------

wr_part
; Подпрограмма одной из 3-ех 7-разрядных частей команды для LMX2316
;----------------------------------------------------------------------------------
movlw	h'07'
movwf	count
wr_loop	
btfsc	 part, 6
bsf	 out_port, dat
nop
bsf	 out_port, clk
nop
bcf	   out_port, clk
nop
bcf	 out_port, dat
rlf	 part, W
rlf	 part, F
decfsz count, F
goto	 wr_loop
return
;----------------------------------------------------------------------------------

;===============================================

Регистры там 18бит!

У меня в LMX2306 требовалось 2 регистра по 21 биту и один 20 бит, и ничего... :)

Просто всё время посылай по 24 бита (просто легче послать 3 байта целиком), а первые биты перед MSB посылай нулевыми. Там же в LMX всё равно регистры сдвига стоят, и эти первые биты всё равно уйдут в никуда.

Ссылка на комментарий
Поделиться на другие сайты

Пишу на Asm

Спасибо за текст! буду разбираться!....

а ПИК какой используете!?!? 16F84 ???

Изменено пользователем ZooN
Ссылка на комментарий
Поделиться на другие сайты

Уважаемый antzol вот разбираюсь с вашим кодом! сказать чесно жутко понравился подход =))) особенно когда в регистры part1,2,3 загружаются 7ми разрядные значения! Сразу запало а как вы собираетесь останавливать сдвиг на один лишний бит! но после :

movlw 7

movwf count

*******

decrfsz count,F

Всё стало на места! Видать у меня маловато опыта чтоб самому сходу до такого допетрить =)

Но остались некоторые непонятки! разъясните плиз!

ВСЁ ЧТО КРАСНЫМ ПОЛНОСТЬЮ РАЗОБРАЛ

===========================================================

mx_func

; Передача команды для установки режимов LMX

;------------------------------------------------------------------------------------

movlw b'0000000'

movwf part1

movlw b'0001001'

movwf part2

movlw b'1010010'

movwf part3

call wr_comand_1

;------------------------------------------------------------------------------------

osc_del

; Передача значения коэффициента деления частоты опорного генератора

;------------------------------------------------------------------------------------

movlw b'0000000'

movwf part1

movlw b'0010100'

movwf part2

movlw b'0000000'

movwf part3

call wr_comand_1

;------------------------------------------------------------------------------------

vco_del

; Передача значения коэффициента деления частоты ГУН в соответствии

;с выбранным каналом

;------------------------------------------------------------------------------------

movlw b'0001010'

movwf part1

movlw b'1111100'

movwf part2

movlw b'0000001'

movwf part3

call wr_comand_1

;------------------------------------------------------------------------------------

какой-то код

; Подпрограммы для работы с LMX

;=============================================

wr_comand_1

; Подпрограмма передачи команды на синтезатор гетеродина

;----------------------------------------------------------------------------------

bcf out_port, le1

nop

movf part1, W

movwf part

call wr_part

movf part2, W

movwf part

call wr_part

movf part3, W

movwf part

call wr_part

nop

bsf out_port, le1

return

;----------------------------------------------------------------------------------

wr_part

; Подпрограмма одной из 3-ех 7-разрядных частей команды для LMX2316

;----------------------------------------------------------------------------------

movlw h'07'

movwf count

wr_loop

btfsc part, 6

bsf out_port, dat

nop

bsf out_port, clk ; устанавливаем в 1 бит clk

nop

bcf out_port, clk ; устанавливаем в 0 бит clk

nop

bcf out_port, dat

rlf part, W

rlf part, F

decfsz count, F

goto wr_loop

return

;----------------------------------------------------------------------------------

=========================================================

догадываюсь что lel, dat, clk в шапке программы присвоены номера битов

Не догнал вот что а может быть просто уверености не хватает принять что так оно и есть!

btfsc part, 6 ; если 6-ой бит рег. part = 1 то переход на команду bsf out_port, dat если = 0

;то переход bcf out_port, dat. Другими словами смотрим на последний бит в цепочке которую сдвигаем

; и в зависимости от значения с помощью команды ветвления принимаем решение на выходе dat поставить 0 или 1

bsf out_port, dat ; устанавливаем в 1 бит dat

***

***

***

bcf out_port, dat ; устанавливаем в 0 бит dat

rlf part, W ; циклитческий сдвиг влево рег. part и сохранения резул. в W

rlf part, F ;циклитческий сдвиг влево рег. part и сохранения резул. в F

Вот что осталось непонятно!

- зачем делается 2ва циклических сдвига!? и не совсем пойму как это происходит!? получается что сдвинули один раз записали в Аккумулятор сдвинули ещё и то что уже получилось записали в part ???? ( сори не догнал )

- каким образом значение 0 или 1 меняется на выходе portB (или portA) ???.... мы меняем значения в регистре out_port (надеюсь правильно понял это рег. общего назначения!?) а вот какой связкой команд он переносит значения своих битов на выход PICа.... или может опять удивлюсь и он рег. спец. назначения!? и прописан под адресом 06h или 05h ?????

- Загрузка битов начинается со сташего бита MSB так ведь получается???? тоесть LSB будет записан в рег. part3 крайним правым????

Спасибки за наглядную прожку =)

Изменено пользователем ZooN
Ссылка на комментарий
Поделиться на другие сайты

- зачем делается 2ва циклических сдвига!? и не совсем пойму как это происходит!? получается что сдвинули один раз записали в Аккумулятор сдвинули ещё и то что уже получилось записали в part ???? ( сори не догнал )

В принципе это делается для циклического сдвига с использованием флага переноса. При rlf part, W седьмой бит регистра part заносится во флаг переноса, а при rlf part, F он из флага переноса перемещается на место бита 0 в регистре part.

Так-то здесь это не требуется (всё равно содержимое регистр part после этого не используется, и можно не париться тем, что испортим его записью посторонних флагов переноса). Поэтому rlf part, W можно смело выкинуть. Сам не помню, почему так сделал. Давно было... :)

- каким образом значение 0 или 1 меняется на выходе portB (или portA) ???.... мы меняем значения в регистре out_port (надеюсь правильно понял это рег. общего назначения!?) а вот какой связкой команд он переносит значения своих битов на выход PICа.... или может опять удивлюсь и он рег. спец. назначения!? и прописан под адресом 06h или 05h ?????

out_port это и есть сам порт В микроконтроллера. :)

Вот слегка подредактированный кусок определения портов (всё лишнее выкинул).

; Определение портов
;=================================================
out_port	equ	PORTB; Порт для вывода команд на синтезаторы
out_tris	equ	TRISB

; На LMX данные передаются с помощью трех шин
clk	equ	2; синхронизация по битам
dat	equ	1; данные
le1	equ	0; синхронизация по командам синтезатора гетеродина
;================================================


; Определение регистров общего назначения
;================================================
Cblock	h'30'
part
part1; \
part2; | 7-битные части команды для синтезатора гетеродина
part3; /
Endc
;================================================

Загрузка битов начинается со сташего бита MSB так ведь получается???? тоесть LSB будет записан в рег. part3 крайним правым????

Так и есть.

Изменено пользователем antzol
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Ну вот! наконецто разобрался со всеми своими житейскими проблемами!.... и на чистую собрал всё что наработал!....

Небольшой отчёт то что и как получилось!

Синтезатор LMX2322

Контролер PIC16F84A

VCO от Murata из сотика T10s (на ссылке он под 20м номером)

Ericsson t10s

Рабочая частота 785мГц

Потребляемый ток 22мА (9мА лопает VCO)

Схема вообщем получилась вот такая!...(номиналы многие подбирал, подгонял)

aa0f8f380ba0t.jpg

Собирал сначала на макетной плате! запускалась при рукоприкладстве! =)....

В варианте собранном начистую запустилась без лишних уговоров! поглядел напряжения в нужных точка! включил R5 на 785мГц и о радость!.... что пока побороть не смог так это небольшой фон! (слабый писк на слух 1k или несколько кГц) в принимаемом сигнале на приёмник! думается это всё пока ещё ФНЧ...

Путь создания!

Очень длин и тяжек вышел!....

Никогда не работал с синтезаторами(нужды чтоли так сказать небыло) но вот весной 2008го столкнулся со старыми мобилками (a1018, T10s в них было куча вкусного :rolleyes: )! запустил злостно выдернутые из них VCO а стабильность как оказалась весьма поршивенькой! вот тут и родилась мысль прикрутить синтез! LMX2322 была выдернута из a1018! Накачал datasheetов по разным LMXам и стал разбираться как вообще работать с ними!

Понял что нечем управлять(нужен контроллер)...с контролерами работал тоже мало! Так что по пути к цели пришлось обучиться писать на PICах...(именно на нём хотел, причины личные :unsure: ) пройдя курс молодого бойца по програмированию на ASMе и изучив на достаточном уровне сел писать!(для одной из первых программ получилось достаточно просто)

НУ а после уже дело техники сбор деталек, Sprint-Layout, травка платы и сборка самого синтезатора! (2 часа сборки!)

И в итоге Огромное удовольствие за то что не зря потратил столько времени! Получил массу опыта! И удовольствия от пути к своей цели! Познакомился с синтезатороми, PICми и ещё многим!....

Огромное спасибо!!!

за идеи и помощь(по синтезатору) shara_j, Plant, ivasi

За курс програмирования на PIC ресурсу

Курс програмирования на PIC для начинающих (и отдельное Корабельникову Евгению Александровичу)

За идеи как писать программу для PIC antzol

И за критику и поправки всем остальным!

Фотосессия!...

b5c49e02976et.jpg8ef634626ca0t.jpg

c610b3e934c5t.jpg8b49c3bdf735t.jpg

И прикреплю архив со всем барахлом!... файлы для MPLAB схема

всем успехов ;)

arh1.zip

Изменено пользователем ZooN
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
    • Типа такого: https://aliexpress.ru/item/2044864227.html?sku_id=58855020183
    • поняли неправильно. У ТЛ494 никакой защиты нет, усилители ошибки не защита, они не должны приводить к ложным импульсам. Причем тут "микруха" ?  надо нагружать ВСЁ. До сих пор вообще непонятно о каком ИИП идет речь и сколько у него каналов. Бесполезно схему рисовать? - Помогать так бесполезно. Картина кривая по самое "немогу" продолжаются картинки, снятые через ногу и без цены деления.
×
×
  • Создать...