Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » LMX2306 как делитель (делитель частоты)
LMX2306 как делитель
доцент2 Дата: Ср, 09.01.2019, 11:23  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Накопал в закромах lmx2306. Хотелось бы попробовать использовать его как делитель частоты (прескаллер) для частотомера. В наличие есть BAS6456, но он без сигнала шумит. Показания выдает пока его "носом" не ткнешь в источник сигнала с нормальной амплитудой. И то если он его не "загасит" своей емкостью и сопротивлением.
В инете полно схем с lmx2306 как синтезатора и делителя, но кроме даташит описания практически нет. С даташитом никак не разберусь (в трех соснах заблудился).
Может у кого есть наработки с установкой 2306 как делителя. И как устанавливаются коэффициенты деления.
ЯНДЕКС Дата: 09.01.2019
anatol Дата: Ср, 09.01.2019, 21:11  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 592
Репутация: 20   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Цитата доцент2 ()
Хотелось бы попробовать использовать его как делитель частоты (прескаллер)
А где вы нашли выход прескалера (делителя)? Вход есть, а выхода нетути...туда дуй - оттуда сами знаете что.
доцент2 Дата: Чт, 10.01.2019, 16:28  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Вот на вскидку несколько вариантов использование синтезаторов частоты в качестве делителей в частотомерах.
Прикрепления: 9146723.jpg(52.1 Kb) · 9087844.jpg(71.3 Kb) · 6116146.jpg(68.9 Kb)
anatol Дата: Пт, 11.01.2019, 03:07  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 592
Репутация: 20   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Я имел ввиду чисто предварительный счетчик (прескалер) который делит до 8. Вторая часть делителя кажется имеет минимальный коэф..деления = 3. У меня есть предубеждение к ДКПД (делитель с переменным коэфф..деления). Не лежит душа хоть тресни. нравятся делители на 2 в периоде, крайняк на 10 или 100. Причем в "железе", не программируемые.
доцент2 Дата: Пт, 11.01.2019, 17:06  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

В различных схемах частотомеров авторы получают коэф., например 256. Но как....описания нет, есть готовые прошивки.
Сообщение отредактировал доцент2 - Пт, 11.01.2019, 17:07
anatol Дата: Пт, 11.01.2019, 19:41  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 592
Репутация: 20   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Цитата доцент2 ()
Но как....описания нет
А даташит нафига. Там все команды есть, и формулы для расчета. Шина SPI
доцент2 Дата: Пт, 11.01.2019, 20:45  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Да вот и заблудился в трех регистрах.
Anatol если бы я разобрался с этим даташитом, наверное сюда бы не обращался за помощью.

Сообщение отредактировал доцент2 - Сб, 12.01.2019, 14:08
доцент2 Дата: Ср, 13.02.2019, 21:21  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Дошли руки до LMX2306.

На разных форумах пишут, что для конфигурации в качестве прескалера достаточно провести инициализацию (регистр F) и сконфигурировать счетчик (регистр N). Подаю на вход LMX 78МГц, но на выходе результат пока 0. Похоже где то накосячил. Подскажите где копать.
'инициализация прескалера
            ' LSB      <---------     <----------     <----------     <----------     MSB
            'c1 c2 | f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11  f12 f13 f14 f15 f16 f17 f18 f19
            ' 1   1 |  0  0  0  1  0  0  0  0  0   0   0     0    0    0    0    0    0    0    1
            'рег F |             
            '                      |                                    |
            '     cfq_H        |        cfq_L                   |                 cfq_M                      |           
cfq_M=$01   '
cfq_L=$80   '
cfq_H=$18   '             
GoSub LMX_set
'настройка прескалера (счетчика)
            ' LSB      <---------     <----------     <----------     <----------     MSB
            'c1 c2 | n1 n2 n3 n4 n5 | n6 n7 n8 n9 n10 n11 n12 | n13 n14 n15 n16 n17 n18 n19
            ' 1  0  |  0   0   0   0   0  |  1   0   1   1    1    1     1    |   0     0     0     0     0     0     1
            'рег N |   A=0        x   x  |                 B=125               |
            '                         |                                              |                                                        |
            '       cfq_H         |                    cfq_L                 |                       cfq_M                        |
            '                  для LMX2306 значение делителя  N=B*P+A = 125*8+0 = 1000
                                                   
cfq_M=$81   '
cfq_L=$2F   '
cfq_H=$10   '             
GoSub LMX_set

'передача на LMX2306
LMX_set:
LMX_LE=1     ' запрет на передачу
DelayUS 50   ' 50ns
LMX_LE=0     ' разрешение на передачу

For cfq_i=7 To 0
    LMX_Clock = 0
    LMX_Data = cfq_M.0
    DelayUS 50
    LMX_Clock = 1 ' запись данных в регистр
    cfq_M.0 = cfq_M >>1
        DelayUS 50
Next

For cfq_i=7 To 0
    LMX_Clock = 0
    LMX_Data = cfq_L.0
    DelayUS 50
    LMX_Clock = 1 ' запись данных в регистр
    cfq_L.0 = cfq_L >>1
        DelayUS 50
Next

For cfq_i=4 To 0
    LMX_Clock = 0
    LMX_Data = cfq_H.0
    DelayUS 50
    LMX_Clock = 1 ' запись данных в регистр
    cfq_H.0 = cfq_H >>1
        DelayUS 50
Next
LMX_LE=1  'запрет на передачу   
Return
Прикрепления: 6152188.jpg(64.2 Kb)
Aleksey_174 Дата: Чт, 14.02.2019, 04:23  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 84
Репутация: 14   ±
Замечания:   ±
На сайте с 22.01.2017

Статус: Offline

Зачем вы пытаетесь передавать побитово, если есть специальные команды
LMX_LE=0     ' разрешение на передачу
SHOut LMX_Data , LMX_Clock , MsbFirst, [ %10000000,%10111111,%0000001 ]
LMX_LE=1  'запрет на передачу
и если уж на то пошло, то на Basic это будет выглядеть примерно так
For cfq_i=0 To 7
    LMX_Clock = 1 ' запись данных в регистр
    LMX_Data = GetBit cfq_M,cfq_i
    DelayUS 50
    LMX_Clock = 0
Next
доцент2 Дата: Чт, 14.02.2019, 10:59  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Спасибо за ответ.
Думаю способ передачи не особо принципиален. "Ножкодрыг" меньше места занимает, а иногда и шустрее.
Мне нужно передать 21 bit.
' LSB      <---------     <----------     <----------     <----------     MSB
'c1 c2 | f1 f2 f3        f4 f5 f6 f7 f8 f9 f10 f11       f12 f13 f14 f15 f16 f17 f18 f19
' 1   1 |  0  0  0         1  0  0  0  0  0   0   0          0    0    0    0    0    0    0    1
т.е. так
LMX_LE=0   '
SHOut LMX_Data , LMX_Clock , MsbFirst, [ %00000001,%10000000,%00011000\5 ]
или
SHOut LMX_Data , LMX_Clock , MsbFirst, [ cfq_M \ 8, cfq_L \8, cfq_H \ 5 ]
LMX_LE=1  '

Собственно результат тот же. С выхода LMX тишина.
Может с последовательностью передачи bit ошибаюсь. Но больше грешу на то, что не разобрался в настройках регистров LMX.

Сообщение отредактировал доцент2 - Чт, 14.02.2019, 11:58
ivan_fd Дата: Пт, 15.02.2019, 14:51  |                                                                                                                Сообщение # 11
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1089
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

доцент2,  не знаю проверяли ли Вы ваш код.
У меня, Протон 3.5.7.7, код:

Код
For cfq_i=7 To 0
    LMX_Clock = 0
    LMX_Data = cfq_M.0
    DelayUS 50
    LMX_Clock = 1 ' запись данных в регистр
    cfq_M.0 = cfq_M >>1
        DelayUS 50
Next


не работает.

Должно быть так:
Код
For cfq_i=7 To 0 Step -1
    LMX_CLOCK = 0
    LMX_DATA = cfq_M.0
    DelayUS 50
    LMX_CLOCK = 1 ' çàïèñü äàííûõ â ðåãèñòð
    cfq_M = cfq_M >>1
        DelayUS 50
Next


Посмотрите внимательно.
А на счет SHOut LMX_DATA , LMX_CLOCK , MsbFirst,
попробуйте LsbFirst. Ваш ногодрыг передает LsbFirst.

P.S: Хотя в даташите пишет
Цитата
Note: *In programming the counter, data is shifted in MSB first.

Binary Serial Data Input. Data entered MSB first. The last two bits are the control bits. High
impedance CMOS input.


Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Пт, 15.02.2019, 15:41
ЯНДЕКС Дата: 15.02.2019
доцент2 Дата: Пт, 15.02.2019, 17:35  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Цитата ivan_fd ()
For cfq_i=7 To 0 Step -1

Спасибо, эту ошибку сам нашел.
Разобрался с последовательностью записи в регистры.
Сейчас все заработало, пока использовал команду
SHOut LMX_Data, LMX_Clock, MsbFirst, [ cfq_M, cfq_L, cfq_H\5 ]
Прикрепления: 6377529.jpg(203.8 Kb)
ivan_fd Дата: Сб, 16.02.2019, 12:40  |                                                                                                                Сообщение # 13
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1089
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Ну так напишите в чем дело было, может кому то поможет в будущем?

Меня все время преследуют умные мысли...но я быстрее!!!
доцент2 Дата: Вс, 17.02.2019, 15:56  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Замотался. Вот пример конфигурации для делителя на 64:
'настройка регистр R (!!!только при работе как синтезатора!!!)           
cfq_M=$00   ' регистр R                                                                         
cfq_L=$00   '                                                                                   
cfq_H=$00   '                                                                                    
GoSub LMX_set                                                                                   

'настройка делителя (прескалера)  1:64    регистр N
cfq_M=$00   'регистр N            для LMX2306  N=B*P+A = 8*8+0 = 64
cfq_L=$20   '   1:64    А=0  В=8
cfq_H=$01   '             
'GoSub LMX_set

'инициализация регистр F
cfq_M=$00   ' регистр F                                                                       
cfq_L=$01   '                 
cfq_H=$03   '            
GoSub LMX_set

LMX_set:
    LMX_LE=1    'запрет на передачу
    DelayMS 50
    LMX_LE=0    'разрешение на передачу
    LMX_Clock=0
    SHOut LMX_Data, LMX_Clock, MsbFirst, [ cfq_M, cfq_L, cfq_H\5 ]
    LMX_LE=1    'запрет на передачу
Return
Форум Picbasic.ru » Программирование МК » Proton PicBasic » LMX2306 как делитель (делитель частоты)
  • Страница 1 из 1
  • 1
Поиск: