Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Как управлять микросхемой SN761672?


Как управлять микросхемой SN761672?

Сообщений 1 страница 14 из 14

1

Уважаемые знатоки прошу помощи разобраться с управлением микросхемы SN761672. Имеется телевизионный тюнер TECC2949PG35W. Внутри тюнера микросхема SN761672. Нужно задать телевизионному тюнеру приемную частоту 430 МГц. Выходная промежуточная частота 38,9МГц. Читаю datasheet , не могу понять как определить значение N0....N14(коэффициент деления частоты)?

Отредактировано Maks77 (2018-11-21 15:56:58)

0

2

Установить можно.
Стр.9 даташита, табл.2 и 3.

Для включения N6 записать:
- в Divider byte 1 (DB1) - 00000000
- в Divider byte 2 (DB2) - 01000000

По умолчанию - в этих байтах везде 0.

Адрес записи - табл.4

Прочитать их, видимо нельзя, во всяком случае, в ДШ про чтение этих данных ничего нет...
Возможно, использование той же адресации, что и при записи, что-то даст.
Спалить что-то при этом вряд ли получится. ;)

Отредактировано Nord (2018-11-22 03:38:14)

0

3

NordПробовал, ни чего не получается. Информация прототипа моего приемника ТУТ. К сожалению из за отсутствия информации на микросхему, мне надо полностью менять схему приемника.

0

4

Maks77 написал(а):

Пробовал, ни чего не получается.

Что "пробовал" и что "не получается" ?

0

5

Nord
Особенности расчёта порогов диапазонов в зависимости от ПЧ1
Для каждого новой ПЧ ТВ тюнера (30,2 Мгц) необходимо пересчитывать пороги переключения диапазонов.

Например:

Низкий диапазон 45 - 170МГц

Средний диапазон 170 - 450 МГц

Высокий диапазон  450 - 855  МГц

ПЧ 30.2, шаг ТВ тюнера 31.25 кГц,

Значение пределителя: channel=(freq+30200)*100/3125Ul;

Для порога 170Мгц: channel= (170000+30200)*100/3125 = 6406;

Для порога 450Мгц: channel= (450000+30200)*100/3125 = 15366;



Код делителя DB1,DB2 расчитывал по примеру в описании. В моем случае промежуточная частота(ПЧ1)=38,9 Мгц
Входная частота F=430 МГц. Следовательно: DB1, DB2=(430000+39800)*100/3125=15004=11101010011100
не уверен что правильно ввожу последовательность &В кода 
DB1=00111010
DB2=10011100

Код программы выглядит так:

$regfile = "attiny2313.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32

Dim A As Word                                               'Переменная
Dim B As Byte
Dim Ab As Byte
Dim Db1 As Byte
Dim Db2 As Byte
Dim Cb As Byte
Dim Bs As Byte

Config Portb.1 = Output                                     ' CE
Config Portb.2 = Output                                     ' DATA
Config Portb.3 = Output                                     ' CL
Config Scl = Portb.7                                        'конфигурирование I2C
Config Sda = Portb.5
Config I2cdelay = 10                                        'частота 100кГц

A = &B00001001_10110010                                     ' D0|D1|D2|D3|D4|D5|D6|D7|D8|D9|D10|D11|D12|D13|T0|T1
B = &B1001_0000                                             ' B0|B1|B2|TB|R0|R1|R2|S
Ab = &B11000110
Db1 = &B00111010
Db2 = &B10011100
Cb = &B10000010
Bs = &B1000

'Do
Portb.1 = 1                                                 'CE открыть
Shiftout Portb.2 , Portb.3 , A , 3                          'Параметры Data и Clk, отправляем вначале 16-бит
Shiftout Portb.2 , Portb.3 , B , 3                          'Параметры Data и Clk, потом 8-бит
Portb.1 = 0                                                 'CE закрыть

I2cstart

I2cwbyte Ab                                                 'отсыл адресного байта
I2cwbyte Db1                                                'отсыл байта делителч DB1
I2cwbyte Db2                                                'отсыл байта делителя DB2
I2cwbyte Cb                                                 'отсыл байта управления
I2cwbyte Bs                                                 'отсыл байта переключателя диапазонов

I2cstop

'Loop
End

Отредактировано Maks77 (2018-11-26 07:27:49)

0

6

Maks77 написал(а):

Код программы выглядит так:
A = &B00001001_10110010
B = &B1001_0000

Что за "_" в значениях ?
У кого как, а у меня Bascom на это ругается... ;)

0

7

[b]Nord У меня программа не ругается. Эта часть программы работает замечательно. Меня интересует часть программы где я передаю данные по I2c протоколу
'Do
I2cstart

I2cwbyte Ab                                                 'отсыл адресного байта
I2cwbyte Db1                                                'отсыл байта делителч DB1
I2cwbyte Db2                                                'отсыл байта делителя DB2
I2cwbyte Cb                                                 'отсыл байта управления
I2cwbyte Bs                                                 'отсыл байта переключателя диапазонов

I2cstop

'Loop
End

Не понятно, когда я программу включаю на цикл. данные  Sda = Portb.5 передаются, но не вижу генерацию по порту Scl = Portb.7.
Прошу исправить по программному коду, что я делаю не так?

Отредактировано Maks77 (2018-11-26 09:49:47)

0

8

Попробуйте добавить до инициализации I2C строчку:
$lib "i2c_twi.lbx"

Без нее работа с шиной будет программной.

И, самое главное - подтяжки на шине имеются ?

Отредактировано Nord (2018-11-26 12:42:13)

0

9

Nord
Подтяжки по шине не имеются :blush:  Как я мог не учесть про важность подтяжек.

0

10

Nord написал(а):

Что за "_" в значениях ?
У кого как, а у меня Bascom на это ругается... ;)

Что у тебя за древняя версия баскома. Это обычный разделитель чисел, для удобства чтением глаза, можно добавлять любое количество. Если у тебя с этим проблемы, то просто удали знак подчеркивания из бинарного числа.

0

11

RDW написал(а):

Что у тебя за древняя версия баскома.

2.0.7.8
Нелицензия.

RDW написал(а):

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

Я осведомлен про этот символ.
В подобных случаях не пользуюсь по указанной причине, но это не мешает мне работать... ;)
Не исключено, что у кого-то может возникнуть подобная ситуация.

0

12

Maks77 написал(а):

Подтяжки по шине не имеются

Чем закончилось-то ? ;)

0

13

Nord Пока ни чем. Подтяжки поставил. Тюнер начал слушаться, но работает не совсем правильно. Как разберусь, напишу подробно о проделанной работе

Отредактировано Maks77 (2018-11-28 13:20:49)

0

14

Доброго времени уважаемые спецы! Разобралсяс микросхемой SN761672.
Формула расчета делителя DB1, DB2 выглядит так:

DB1,DB2<=>(Fприемная частота+Fпромежуточная частота)/Шаг перестройки

В моем случае
Fприемная=462000кГц
Fпч=38900кГц
Шаг перестройки=50кГц
Код программы:

$regfile = "attiny2313.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32

Dim Res As Word

Dim Ab As Byte
Dim Db1 As Byte
Dim Db2 As Byte
Dim Cb As Byte
Dim Bs As Byte

Config Portb.1 = Output                                     ' CE
Config Portb.2 = Output                                     ' DATA
Config Portb.3 = Output                                     ' CL
Config Scl = Portd.4                                        'конфигурирование I2C
Config Sda = Portd.5
Config I2cdelay = 10                                        'частота 100кГц

Portb.1 = 0                                                 'CE - ставим в ноль
Res = 28190
Res = Res / 5

Portb.1 = 1
Shiftout Portb.2 , Portb.3 , Res , 3 , 14 , 50

Res = 904                                                   'параметр nfm модуляции, так же в нем отпределяется шаг 5кГц

Shiftout Portb.2 , Portb.3 , Res , 3 , 10 , 50

Portb.1 = 0
Waitms 30

                                   'программа для тюнера  TECC2949PG35
                                   'SN761678 и FI 1256MK2 Fпч=38900кГЦ Fприемная = 462 000кГц
                                   'Делитель = Fприемная+Fпч/50

Ab = &B11000000                         'address  byte
Db1 = &B00100111                       'байт делителя
Db2 = &B00100010                       ' байт делителя
Cb = &B11001000                         ' control byte 
Bs = &B1000                                 ' байт переключения диапазонов

I2cstart

I2cwbyte Ab                                                 '
I2cwbyte Db1
I2cwbyte Db2                                                '
I2cwbyte Cb                                                 '
I2cwbyte Bs                                                 '

I2cstop

End

Тема закрыта. Спасибо всем за внимание!

Отредактировано Maks77 (2018-12-09 17:44:26)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Как управлять микросхемой SN761672?