Захотелось сделать приёмник с четырьмя диапазонами: FM, КВ 41м, ДВ, СВ. Ну я и сделал. Написал прошивку для МК, зашил - и ничего. Сначала решил отладить диапазон FM. Дело в том, что при установке бита DVS (см. даташит) в 1 приёмник не переключается на вход FMIN. Определил это так: при подтыкании антенны на вход AM появляется шум, на вход FM - тишина.
Как я понял, биты P0-P15 задают коэффициент деления PLL.
DVC, SNS - управление входом.
R0-R3 - опорная частота (шаг перестройки).
BO1, BO2 - управление выходными портами
IFSW - режим MUTE
BDSW - выбор AM/FM
STSW - включение стерео
SDC - понятия не имею, прошу разъяснить.
DOC0-DOC2 - управление ногой DO
UL0, UL1 - х. з. что значит.
Впрочем, как и DZ и DLC.
TEST - тестирование, трогать не надо.
Что выделил - непонятно, объясните, пожалуйста.
Так же не знаю, правильно ли я делаю передачу данных.
Передаю так: в даташите есть схемы с названиями битов, я начинаю передавать слева направо. Что IN1, что IN2.
Фрагмент кода:
Спойлер
Код: Выделить всё
void tuner_write(unsigned int divider,unsigned char control){
tmp=0b00101000;
for(i=0;i<8;i++){
DO=(tmp&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=1;
delay_us(2);
for(i=0;i<16;i++){
DO=(divider&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
for(i=0;i<8;i++){
DO=(control&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=0;
};
void tuner_init(unsigned char data0,unsigned char data1,unsigned char data2){
tmp=0b00101001;
for(i=0;i<8;i++){
DO=(tmp&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=1;
delay_us(2);
for(i=0;i<8;i++){
DO=(data0&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
for(i=0;i<8;i++){
DO=(data1&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
for(i=0;i<8;i++){
DO=(data2&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=0;
};
unsigned char tuner_read(void){
unsigned char data_out=0;
tmp=0b00101010;
for(i=0;i<8;i++){
DO=(tmp&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=1;
delay_us(2);
for(i=0;i<24;i++){
if(i<8) data_out|=(1<<i)&DI;
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=0;
return data_out;
}Очень прошу описать все биты.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.


