Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить

Ср июн 03, 2009 07:50:52

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

Помогите пожалуйста с таким кодом! Очень нужно!
Заранее благодарю.

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

Чт сен 22, 2011 15:24:14

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

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

Вт сен 27, 2011 14:11:01

а драйвер от этой звуковой имеется? может его можно взломать?

Re:

Вт сен 27, 2011 14:14:57

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

И ещё несколько нужных вещей из ДШ: таблицы и тайминги.

а драйвер от этого тюнера имеется? может его можно взломать?

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

Пт фев 26, 2016 07:25:01

Добрый день!

Разбираюсь сейчас с FM1256 - почему-то звук идёт с кратковременными перерывами. Будто бы тюнер на короткое время выключается. В чем может быть дело?

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

Вс мар 06, 2016 14:48:30

Отвечу сам себе: нужно было включить High Sensivity

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

Пт окт 06, 2017 11:14:39

Запускал платку от муз.центра с тюнером на 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 KiB) Скачиваний: 204

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

Вс окт 15, 2017 15:29:42

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