roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 20:26

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: BASCOM перевод кусочков кода, и помошь.
СообщениеДобавлено: 12 дек 2010, 20:32 
Не в сети
Аватара пользователя

Зарегистрирован: 22 сен 2008, 22:15
Сообщения: 302
Откуда: Раменки 43
Возник небольшой интерес к одной конструкции, если нужна будет ссылка напишу. В основной програме понятно как написать, где и как дернуть ногами. Но увяз в I2C протоколе, в нем полное бревно в темном лесу, :oops: нешитая готовых исходников (вставил и забыл). Требуется управлять двумя микросхемами Lm7001 и TDA6508.

для TDA6508 кусок...

Код:
/////////////////////////
// for KS-H-146, KS-H-148

#define CONST__GAINoff 0B10001000
#define CONST__GAINon  0B10001001 // Weak Signal Booster ON
#define CONST__LoBAND  0B00000001
#define CONST__MiBAND  0B00000010
#define CONST__HiBAND  0B00001100

////////////////////
void KSH14xPLL(void)
{
  uint32_t fPCH1;
  uint8_t   Band;


     Band = CONST__LoBAND;

     if(FrcvWork > 155000L) Band = CONST__MiBAND;
     if(FrcvWork > 440000L) Band = CONST__HiBAND;


     fPCH1 = (uint16_t)((FrcvWork + RCVPCH1)/50);

     I2CStart();

     I2COutByte(0b11000000);   // Tuner Address
     I2COutByte(HiBYTE(fPCH1));
     I2COutByte(LoBYTE(fPCH1));
     I2COutByte((TunerGain)? CONST__GAINon:CONST__GAINoff);
     I2COutByte(Band);


     I2CStop();
     return;


и для Lm7001 кусочек...

Код:
////////////////////
void Lm7001Set(void)
{
  static uint8_t  Mod4Lm7001[3] = {0xE6,0xE4,0xE2};
uint16_t fPCH2;

     FrcvPCH2 = (RCVPCH1-RCVPCH2)-(FrcvWork-((FrcvWork/50)*50));
fPCH2 = FrcvPCH2/5;

     cli ();
     SetBit(LM7001_PortEN,LM7001_BitCEN);

     Lm7001Out(LoBYTE(fPCH2));
     Lm7001Out(HiBYTE(fPCH2));

     flagBo = Mod4Lm7001[Modulation];

  ///////////////////////////////////////
  //
  //  S R2 R1 R0 TB Bo3 Bo2 Bo1
  //
  //  R0=0, R1=1, R2=1 --> 5kHz
  //   S=1  --> FMIN
  //
  //      flagBo = 0xE0;  // 5kHz, FMIN
  //
  // Bo1  --> 1 - Mute ON 0 - Mute OFF
  // Bo2  --> 1 - WFM  0 - NFM
  // Bo3  --> 1 - FM   0 -  AM

     if(FlagMute) { flagBo |= 0x01; }

     Lm7001Out(flagBo);

     ClrBit(LM7001_PortEN,LM7001_BitCEN);
     ClrBit(LM7001_Port,  LM7001_BitDat);
     sei ();
     return;
}


Можете помочь перевести куски кода в Bascom, и дать советы и сылочки по составлению запросов и принятия данных по I2C протоколу в Bascom, чтоб расжовано было а не просто пару кусков кода, и на нашенском Русском.

Заранее благодарен за любую помошь. :oops:

Добавлено спустя 1 час 11 минут 41 секунду:
Да кроме http://www.decada.org.ru/project/lessons/bascom_avr/12/ есть еше описания ?

_________________
По жизненному опыту я точно знаю, что есть определённый тип людей, который считает что все ему должны.
Я отношу себя к противоположному типу, который постоянно считает себя виноватым в чём либо.
Ненавижу когда кто то пользуется моими недостатками.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 26


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO