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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » FAQ по Bascom AVR и МК » Преобразование байта в последовательность бит


Преобразование байта в последовательность бит

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

1

Здравствуйте!
Прошу сильно не пинать, в Bascom много не пишу, в основном простенькие управляющие программки.

Решил на досуге поработать с синтезатором частоты AD9850.
Там программирование выходной частоты идет путем выдачи серии бит из контроллера в синтезатор и тактирования.
И вот тут у меня встал вопрос - как байт преобразовать в последовательность бит.С таким никогда не сталкивался.
В справке ничего похожего не нашел.Может кто просветит?
Cпасибо всем, кто откликнется)

0

2

Посмотри на аврпроект точка ру про DDS 9851 - там всё есть.

0

3

Есть такая команда SHIFTOUT pin , pclock , var , option [, bits , delay ]
Это то, что нужно для этих целей.
Pin - по нему пойдут данные.
Pclock - по этому выводу будут идти импульсы синхронизации.

Отредактировано sva-don (2019-09-23 10:14:47)

+1

4

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

Решил на досуге поработать с синтезатором частоты AD9850.

Готовый код

Код:
$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 64
$swstack = 32
$framesize = 24
'----------------------------
Dim Chastota9850 As Dword
Dim Chastotar As Single
Dim Fddsclk As Single
Dim Ftw As Dword                                           '4 байта засылаемые в dds
Dim Z As Byte                                                 'пятый байт
Z = &B00000000                                              'для AD9850
'Z = &B00000001                                             'бит умножения х6 такта для AD9851
'
Declare Sub Send_ad9850
'***** Настройка портов *****
Config Portd.0 = Output                                    'dds
Config Portd.1 = Output                                    'dds
Config Portd.2 = Output                                    'dds
D7 Alias Portd.0 : Fq Alias Portd.1 : Clk Alias Portd.2
'D0-data  D1-Fq  D2-clk
'сброс dds  и перевод в последовательную загрузку
Clk = 0
Fq = 0
Waitus 1
Clk = 1
Waitus 1
Clk = 0
Waitus 1
Fq = 1
Waitus 1
Fq = 0
Waitus 1
'
Fddsclk = 4294967296 / 125000000
Chastota9850 = 5000000                                 '5MHz на выходе
'
'*****************************
'**** Отправка DDS AD9850 ****
'*****************************
Sub Send_ad9850
 Chastotar = Chastota9850 * Fddsclk
 Ftw = Chastotar                                           'перевод в целочисленный формат
 Reset Fq
  Shiftout D7 , Clk , Ftw , 3
  Shiftout D7 , Clk , Z , 3
 Set Fq
End Sub

End

В онлайн симуляторе аналог девайс можно сравнить значение FTW.
https://www.analog.com/designtools/en/s … eFilters=0
Разница расчёта  в сотых герца.

+1


Вы здесь » Программирование ATMEL в BASCOM. » FAQ по Bascom AVR и МК » Преобразование байта в последовательность бит