|
|
  |
ATmega8 + lmx2326, управляющее слово |
|
|
|
Feb 20 2009, 08:53
|

Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716

|
Нужно для себя сделать универсальный синтезатор 100 MHz - 2 GHz , почитал доку на 2326 полоса 0,1 МГц- 2,8ГГц . Надеюсь хватит с запасом по верхней частоте . Возникла проблема с пересчетом для данного pll lmx2326 . Глянул ДШ на нее но не совсем понятно К примеру есть формула пересчета fvco = [(P x  + A] x fosc/R // частота ГУНа считается по формуле B: Preset divide ratio of binary 13-bit programmable counter (3 to 8191) \\ что выставляется здесь A: Preset divide ratio of binary 5-bit swallow counter (0 £ A £ 31; A £ B for LMX2326) \\ что выставляется здесь fosc: Частота опорного генератора к примеру 10 МГц R: Preset divide ratio of binary 14-bit programmable reference counter (3 to 16383) предделитель утановки частоты P: Preset modulus of dual modulus prescaler // LMX2326; P = 32 Частота гуна = [(32x8191)+31] x 10000000/3 = 262 143 x 3333333.3 = 873 810 000 Это получается унас частота ГУНа , но почему то линнейного пересчета вкурить не могу .  . Буду рад пинку в нужную сторону
|
|
|
|
|
Feb 20 2009, 12:29
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Павлик @ Feb 20 2009, 08:53)  Частота гуна = [(32x8191)+31] x 10000000/3 = 262 143 x 3333333.3 = 873 810 000 Это получается унас частота ГУНа , но почему то линейного пересчета вкурить не могу. Буду рад пинку в нужную сторону Ну, получите. Частота гуна у вас 873 810 000 000 или вгрубе 873 ГГц. Стоит частоту сравнения выбрать поменьше, скажем fREF/10000=10 кГц, тогда при А=0, В=6250, Р=32 fГУН=2 000 000 кГц
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Feb 20 2009, 16:25
|

Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716

|
>>Выбираете шаг перестройки. Это будет Fref. Рассчитываете R: R = Fosc / Fref. К примеру у меня опорник ( Fosc) будет 10,240 МГц (как делают многие), шаг сетки (Fref) 5 кГц считаем 10240 / 5 = 2048 DEC -> 0x800 hex R = 0x800 >>Находите коэф. деления N нужной вам частоты: N = Fvco / Fref. Нужно получить частоту ГУНа (Fvco) 100 МГц 100000 / 5 = 20000 dec -> 0x4E20 hex >>5 младших бит получившегося числа будет А. Следующие 13 будут B. 0x4E20 = 0b 0100 1110 001 0 0000 B A A = 0 0000 B = 010 0111 0001 = 625 dec = 0x271 >>P = 2^5 = 32, те самые 5 бит A. Все число N = P * B + A P = 32 N = 32 * 625 + 0 = 20000 dec = 0x4E20 С этим понятно , теперь идем к выводу информации в LMX2316/26 R = 0x800 его мы заносим в 14-BIT PROGRAMMABLE REFERENCE DIVIDER RATIO (R COUNTER) Посылка первый 21 бит биты 1 2 - контрольные биты = 0 , биты 1 2 3 4 5 6 7 8 9 10 11 12 13 14 = R COUNTER = в данном случае 0х800 , биты 15 16 17 18 должны быть 0 в нормальном режиме , бит 19 MSB не понятно 0 или 1 писать в него . Затем посылка следующих 21 бит биты 1 2 - контрольные биты = 0 , биты 1 2 3 4 5 = А и тоже = 0 , биты 6 7 8 9 10 11 12 13 14 15 16 17 18 = числу В = 0 0010 0111 0001 (добавляем 2 нуля в старшие разряды ) бит 19 MSB не понятно 0 или 1 писать в него . В принципе вот такой расчет вывел из предложения выше , спасибо за подсказку , теперь надо проверить это на железе , и остается вопрос правильно ли все я понял и MSB не понятно 0 или 1 писать в него ? . CODE out_lmx: mov r29, r19 rcall out_byte mov r29, r20 rcall out_byte mov r29, r21 rcall out_byte nop nop nop sbi PORTB,CE sbi PORTB,CE nop nop cbi PORTB,CE cbi PORTB,CE nop nop ret
out_byte: ldi r28, 8 otb: clc rol r29 brcc dat_0 sbi PORTB,DAT rjmp pulse
dat_0: cbi PORTB,DAT pulse: nop nop sbi PORTB,CLOCK nop nop cbi PORTB,CLOCK nop nop dec r28 brne otb ret Вот так вот получилось в плане вывода .
Сообщение отредактировал Павлик - Feb 20 2009, 16:37
|
|
|
|
|
Feb 20 2009, 18:58
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(=GM= @ Feb 20 2009, 19:44)  Учтите, выводить нужно 21 бит, а не 24 как у вас, а СЕ=0 должно стоять перед началом вывода бит. Не обязательно. Защелкнутся последние 21 бит. Запись происходит по фронту CE, где будет срез - абсолютно не важно(картина 1.4). Я гружу LMX2332 обоими способами. Цитата(Павлик @ Feb 20 2009, 18:25)  бит 19 MSB не понятно 0 или 1 писать в него . Раздел 1.3.2. Если я правильно его понял - зависит от того, по каким критериям вы хотите оценивать факт захвата. Цитата(Павлик @ Feb 20 2009, 18:25)  бит 19 MSB не понятно 0 или 1 писать в него . А это зависит от вашей реализации захвата: будете использовать быстрый захват - записываете 1, ждете захвата, записываете 0. Не будете - записываете 0 сразу. Раздел 1.3.4. И не забудьте прописать регистр F. P.S. Я работал с LMX2332 и PMB2306. По вашему LMX2326 могу подсказать только то, что можно прочесть в даташите. Да, и выводить можно сразу три байта в одном цикле: CODE LoadSynth: LDI R20,19 LoadCycle: off(SYNTH_CLK)
SBRC R18,3 ; if(Value & (1L << 18) on(SYNTH_DATA) SBRS R18,3 ; else off(SYNTH_DATA)
on(SYNTH_CLK) LSL R16 ROL R17 ; Value <<= 1; ROL R18 DEC R20 BRNE LoadCycle
on(SYNTH_LOAD) off(SYNTH_LOAD) RET
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Feb 20 2009, 23:40
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Сергей Борщ @ Feb 20 2009, 18:58)  Не обязательно. Защелкнутся последние 21 бит. Запись происходит по фронту CE, где будет срез - абсолютно не важно(картина 1.4) Скорее всего можно выдвигать 24 бита, хотя я вот недавно столкнулся с цапом с последовательным вводом, где перезапись идёт либо по приходу 16 бит, либо по фронту LE. Вы-то сами почему в своей программе выдвигаете 19 бит, а не 21? Считаете, что всё равно запишется куда надо (:-)?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Feb 21 2009, 18:50
|

Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716

|
Для LMX2306 получилось так , приедет образец 2326 , разберусь уже и с ним . Частота опорного генератора 10000 кГц расчитываем число для установки состояния ( R counter ) а) 10000 / 2,5 = 4000 -> 0x0FA0 Сдвигаем число в лево 2 раза для вывода в LMX2306 0x0FA0 = << 2 = 0x3E80 выводим первое значение б) выходная частота ГУНа должна быть 20000 кГц шаг сетки 2500 гц / 2,5 кГц 20000 / 2,5 = 8000 переводим его в хекс -> 0x1F40 Сдвигаем число в лево 2 раза для вывода в LMX2306 0x1F40 = << 2 = 0x7D00 выводим второе значение в) инит LMX2306 устанавливаем контрольный бит С2 и контрольный бит поляризации F6 получается число 0х0082 выводим третье значение и все на этом посылка закончена Спасибо всем , Сергей Борщ Тема решена .
|
|
|
|
|
Mar 28 2009, 15:09
|

Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716

|
Вернусь опять к своей теме , возник очень интерестный для меня вопрос. Написал перекодировку частоты для вывода на ЖКИ , работает без проблем на микросхемах lmx2316 , а вот lmx2326 ни в какую не хочет работать  , привожу схему включения ниже. Подаю по 3 байта в 3 захода. 0x00, 0x40, 0x08 control bits 00 Частота ГУНа 400 МГц , Сетка 2,5кГц 0x09, 0xC4, 0x01 control bits 01 выбираем поляризацию настройки ГУНа битом 6 ( сдвинуто на 2 ) 0x00, 0x00, 0x82 control bits 10 Вот в ступоре или микросхема дохлая попалась , или во мне проблема. Смущает еще то , что 2316 работает без проблем , а в даташите все что я перевел , особых отличий кроме диапазона частоты я не увидел. Еще прикрепляю скан вывода данных из проца.
Сообщение отредактировал Павлик - Mar 28 2009, 15:24
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 28 2009, 15:29
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Вот тут есть пример работы (с исходниками) - http://www.thegleam.com/ke5fx/synth.htmlИли здесь - http://forum.cqham.ru/viewtopic.php?p=2741...d9c50120#274192В аттачменте к тому сообщению файл lmx2306.c - работающий. Для lmx2316 и других - другое значение для учета прескалера пропишите в программе. Ну и вообще - шаг 5 кГц на трех гигагерцах частоте пр частоте сравнения 5 кГц? А качество кого-нибудь интересует? Скорость перестройки? В статье John Miles описывается довольно распространенный сейчас принцип - с объяснениями зачем и почему так стоит делать. Вот еще - работающий у меня проект прескалера к частотомеру - там используется LMX2306 + ATMega8 Канал rf программируется на деление в 24 раза и его выход подключается к многофункциональному выводу микросхемы.
Сообщение отредактировал Genadi Zawidowski - Mar 28 2009, 15:32
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|