FM тюнер с МК управлением

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Ребята, ну кто-нибудь поможет с кодом?! Скажем на PORTD.2 все время, пока на PORTD.4 единица - меандр с частотой 300кГц. А данные выводятся в PORTD.3, причем каждый бит тактируется этой частотой. Итого получается 24 такта на PORTD.2, на PORTD.4 в течении этих 24 тактов - единица, после - ноль. И за это время данные (24 бита) передаются в PORTD.3.

Помогите пожалуйста с таким кодом! Очень нужно!
Заранее благодарю.
Реклама
roland07
Родился
Сообщения: 6
Зарегистрирован: Чт сен 22, 2011 14:44:56

Re: FM тюнер с МК управлением

Сообщение roland07 »

Господа, указанные ссылки нерабочие. Где можно взять пример и описание управления этим хозяйством. Что вообще за ножки у этих тюнеров и за что они отвечают?
Реклама
Аватара пользователя
gfgeuf
Друг Кота
Сообщения: 3695
Зарегистрирован: Пн авг 29, 2011 10:35:30
Откуда: Україна Дикий Захід - Чортків - Джурин

Re: FM тюнер с МК управлением

Сообщение gfgeuf »

а драйвер от этой звуковой имеется? может его можно взломать?
пути ТОКА неисповедимы.
Злословец есть самый лютый из диких зверей,
а льстец - самый опасный из ручных животных. (ДИОГЕН)
Аватара пользователя
gfgeuf
Друг Кота
Сообщения: 3695
Зарегистрирован: Пн авг 29, 2011 10:35:30
Откуда: Україна Дикий Захід - Чортків - Джурин

Re:

Сообщение gfgeuf »

Igor_67 писал(а):Я тут вчера в барахле покопался у себя и отыскал старенький FM тюнер, который в комп на шину ISA ещё. Там микруха стоит TEA5757H. По даташиту на нее посмотрел, какая нога за что отвечает, поснимал лишние элементы с платы, дабы ток не кушала, подключил - заработало! Поймал переменником все станции, которые у нас есть в регионе. Но здесь такая фиговина: эта микра предназначена как раз для электронного управления перестройкой частоты. Имеется три сигнала: BUS CLOCK, DATA (IN/OUT), WRITE ENABLE. Вроде всё понятно, только данные там передаются пачками по 24 бита в каждой. Так вот, у меня вопрос: Как мне организовать передачу данных в TEA5757 из МК AVR (Mega 16 или Mega 32)? Подскажите, плиз, а то вчера весь вечер голову ломал, но безуспешно. Если можно, кусочек кода скиньте пжалста, лучше на ВАСИКе или АСМе.
Привожу диаграмму процесса записи/чтения из ДШ:

И ещё несколько нужных вещей из ДШ: таблицы и тайминги.
а драйвер от этого тюнера имеется? может его можно взломать?
пути ТОКА неисповедимы.
Злословец есть самый лютый из диких зверей,
а льстец - самый опасный из ручных животных. (ДИОГЕН)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
prinv
Вымогатель припоя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь
Контактная информация:

Re: FM тюнер с МК управлением

Сообщение prinv »

Добрый день!

Разбираюсь сейчас с FM1256 - почему-то звук идёт с кратковременными перерывами. Будто бы тюнер на короткое время выключается. В чем может быть дело?
Никакая контра не уйдёт от нас
Реклама
Аватара пользователя
prinv
Вымогатель припоя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь
Контактная информация:

Re: FM тюнер с МК управлением

Сообщение prinv »

Отвечу сам себе: нужно было включить High Sensivity
Никакая контра не уйдёт от нас
Реклама
VT_nov
Родился
Сообщения: 1
Зарегистрирован: Пт окт 06, 2017 10:55:28

Re: FM тюнер с МК управлением

Сообщение VT_nov »

Запускал платку от муз.центра с тюнером на TEA5757H под Arduino
Код писался ради интереса и проверки платки, это не готовый проект.
Умеет отсылать и читать данные из тюнера.
Может кому пригодится....

Код: Выделить всё

#define we 2   //write enable pin
#define dat 3  //data pin 
#define clk 4  //clock pin

#define button1 11
#define button2 12
#define search_preset 10 //кнопка preset-search
#define AM_FM 9 //кнопка переключения диапазона

#define gd 1  //глобальная задержка

boolean search = 0; //бит функции поиска
boolean band_switch = 0; //0-FM 1-AM
byte cykl = 0; //для цикла for
unsigned int freq = 9072; //переменная частоты, для АМ-прямой счёт, для FM-умножение на 12.5 170=B10101010 9072-102.7Mhz
unsigned int freqroll = 0;
byte controlroll = 0;

byte control  = B10000010;  //байт настроек-контроля, отправка СЛЕВА-НАПРАВО биты 23-16
////////////////23------16
////////////////B10000000 - FM, поиск вверх, >5мкВ, стерео
////////////////B00000000 - FM, поиск вниз, >5мкВ, стерео
////////////////B10010000 - MW, поиск вверх, >28мкВ
////////////////B00010000 - MW, поиск вниз, >28мкВ




void RecivData(){        //функция чтения данных из микры, помещаем принятое в freqroll и controlroll
    controlroll = 0;
    freqroll = 0;
    pinMode(dat, INPUT_PULLUP); //ногу на вход
  //strt_rcv:
    digitalWrite(we, LOW);
    delay(gd);

    //if(digitalRead(dat) == 1) goto strt_rcv; //проверка состояния 24-го бита 

////////////////////////////////////////////////////   
    for(cykl=0; cykl<=7; ++cykl){                 //цикл приема контрольного байта
      digitalWrite(clk, HIGH);
      delay(gd);
      digitalWrite(clk, LOW);
      controlroll = controlroll << 1;  
      bitWrite(controlroll, 0, digitalRead(dat));
      delay(gd);
      //Serial.println(controlroll, BIN);
    }

////////////////////////////////////////////////////   
    for(cykl=0; cykl<=15; ++cykl){                //цикл приема значения частоты
      digitalWrite(clk, HIGH);
      delay(gd);
      digitalWrite(clk, LOW);
      freqroll = freqroll << 1;
      bitWrite(freqroll, 0, digitalRead(dat));
      delay(gd);
    }
    
}



void SendData(boolean search_sw, byte cntrl, unsigned int frq){   //функция отправки данных в микру
    pinMode(dat, OUTPUT); //ногу на выход
    controlroll = cntrl; 
    freqroll = frq;
    digitalWrite(we, HIGH);
    delay(gd);

    digitalWrite(dat, search_sw); //отправка 24-го бита поиска 
    delay(gd);
    digitalWrite(clk, HIGH);
    delay(gd);
    digitalWrite(clk, LOW);
    delay(gd);
////////////////////////////////////////////////////   
    for(cykl=0; cykl<=7; ++cykl){                 //цикл отправки контрольного байта
      digitalWrite(dat, bitRead(controlroll, 7));
      delay(gd);
      digitalWrite(clk, HIGH);
      delay(gd);
      digitalWrite(clk, LOW);
      delay(gd);
      controlroll = controlroll << 1;
    }
////////////////////////////////////////////////////
    for(cykl=0; cykl<=15; ++cykl){                //цикл отправки значения частоты
      digitalWrite(dat, bitRead(freqroll, 15));
      delay(gd);
      digitalWrite(clk, HIGH);
      delay(gd);
      digitalWrite(clk, LOW);
      delay(gd);
      freqroll = freqroll << 1;      
    }
    
    delay(gd);
    digitalWrite(we, LOW); 
    
}


// the setup function runs once when you press reset or power the board
void setup() {
  // start serial port
  Serial.begin(9600);
  
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(we, OUTPUT); //WE
  pinMode(dat, OUTPUT); //Data
  pinMode(clk, OUTPUT); //Clock
  digitalWrite(we, LOW);
  digitalWrite(dat, LOW);
  digitalWrite(clk, LOW);
  
  pinMode(button1, INPUT_PULLUP); //кнопка1
  pinMode(button2, INPUT_PULLUP); //кнопка2
  pinMode(search_preset, INPUT_PULLUP); //кнопка preset-search
  pinMode(AM_FM, INPUT_PULLUP); //кнопка выбора диапазона

SendData(search, control, freq); //Запуск тюнера

}

// the loop function runs over and over again forever
void loop() {

/////////////////////////////////////////////////////////////   КНОПКА PRESET-SEARCH
  if (digitalRead(search_preset) == LOW) {
    search = !search;
    digitalWrite(LED_BUILTIN, HIGH);
    delay(300);
  }

/////////////////////////////////////////////////////////////   КНОПКА выбора диапазона
  if (digitalRead(AM_FM) == LOW) {
    if (band_switch == 0) { //переключаем в АМ
      bitSet(control, 4);
      //bitSet(control, 5); //КВ
      freq = 1455;
      band_switch = 1;
      goto out_z;
    }
    
    if (band_switch == 1) { //переключаем в FM
      bitClear(control, 4);
      freq = 9072;
      band_switch = 0;
    }
    out_z:
    digitalWrite(LED_BUILTIN, HIGH);
    delay(300);
  }
  
/////////////////////////////////////////////////////////////   КНОПКА1 вверх по частоте
  if (digitalRead(button1) == LOW) {
    digitalWrite(LED_BUILTIN, HIGH);
    bitSet(control, 7); //ставим 7ой бит - поиск вверх    
    freq = freq + 8;
    SendData(search, control, freq); 
  }



/////////////////////////////////////////////////////////////   КНОПКА2 вниз по частоте
  if (digitalRead(button2) == LOW) {
    digitalWrite(LED_BUILTIN, HIGH);
    bitClear(control, 7); //убираем 7-ой бит - поиск вниз    
    freq = freq - 8;
    SendData(search, control, freq);        
  }
  delay(20);
  RecivData();
  //long fo = freqroll * 12.5;
  //unsigned int fo2 = freqroll - 455;
  Serial.println(freqroll, DEC);
  Serial.println(controlroll, BIN);                  
  digitalWrite(LED_BUILTIN, LOW); 
  delay(500);                       
}
Изображение Изображение
Вложения
TEA5757.zip
(1.76 КБ) 244 скачивания
Аватара пользователя
shindax
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Сб сен 19, 2009 07:02:19

Re: FM тюнер с МК управлением

Сообщение shindax »

Я под заказ делал радиооткрытку на Si4700. В отличие всего вышеупомянутого, никаких мОточных компонентов. Управлялось по программному SPI 8-ногим PIC. Если интересно, могу выложить.
Ответить

Вернуться в «Умные мысли»