Синтезатор на TEA5757, помогите с кодом
Добавлено: Чт июл 30, 2009 10:44:20
Мяу, товарищи!
Возникла такая проблема. Пишу программу для управления синтезатором на основе Баскома.
Синтезатор TEA5757. Там управление идет по трем проводам.
1. WREN - чтение/запись (0 - чтение, 1 - запись)
2. BUS-CLK - частота тактирования (200 кГц)
3. DATA - данные
вот код:
BUS-CLK должен быть 200 кГц при тактовой частоте МК - 4 МГц. Страницы 7-11 в даташите (ДШ прилагается).
Как это лучше организовать?
Можно не в BASCOMе. Хоть на АСМе, хоть на СИ, пофигу.
Кто поможет старому больному коту?
Есть подозрение, что у меня с тактированием напутано. Тактирование должно осуществляться по по фронту сигнала. И сначала передается LSB.
Возникла такая проблема. Пишу программу для управления синтезатором на основе Баскома.
Синтезатор TEA5757. Там управление идет по трем проводам.
1. WREN - чтение/запись (0 - чтение, 1 - запись)
2. BUS-CLK - частота тактирования (200 кГц)
3. DATA - данные
вот код:
Проблема в том, что при подаче 1 на WREN, синтезатор вообще затыкается ( видимо, включается режим MUTE, как написано в даташите). При последующей подаче 0 на WREN, все остается как было, т.е. - тишина. Поэтому не могу проверить правильность кода. Кто знает, как это сделать? И вообще правильно ли написан код?$regfile "m16def.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 8
$framesize = 24
Dim Count As Byte
Dim Fm_count As Byte
Dim Datte As Long
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim F As Single
Dim S As String * 5
Config Scl = Portc.0
Config Sda = Portc.1
Config Portd.7 = Input
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Porta.1 = Output
Reset Porta.1
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.2 , Rs = Porta.0
Config Lcd = 16 * 2
Wren Alias Portd.4
Clock Alias Portd.5
Outp Alias Portd.6
Knopka Alias Pind.7
Reset Wren
Reset Clock
Reset Outp
Gosub M1
Set Wren
Gosub M2
Shiftout Outp , Clock , Datte , 2 , 25
Set Clock
Waitms 50
Reset Wren
End
M1:
Restore Dat1
Read S
Lcd S ; " MHz"
Return
M2:
Restore Dat20
'For A = 1 To 2
Read Datte
'Next A
Return
Dat1:
Data "101.0" , "101.9" , "102.4" , "102.9" , "103.9" , "104.4" , "104.9" , "105.4" , "105.9" , "106.4"
Dat20:
Data &B1100000000010001011101000
BUS-CLK должен быть 200 кГц при тактовой частоте МК - 4 МГц. Страницы 7-11 в даташите (ДШ прилагается).
Как это лучше организовать?
Можно не в BASCOMе. Хоть на АСМе, хоть на СИ, пофигу.
Кто поможет старому больному коту?
Есть подозрение, что у меня с тактированием напутано. Тактирование должно осуществляться по по фронту сигнала. И сначала передается LSB.