roboforum.ru

Технический форум по робототехнике.


BASCOM перевод кусочков кода, и помошь.

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

BASCOM перевод кусочков кода, и помошь.

Сообщение GIGOLAS » 12 дек 2010, 20:32

Возник небольшой интерес к одной конструкции, если нужна будет ссылка напишу. В основной програме понятно как написать, где и как дернуть ногами. Но увяз в 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/ есть еше описания ?
По жизненному опыту я точно знаю, что есть определённый тип людей, который считает что все ему должны.
Я отношу себя к противоположному типу, который постоянно считает себя виноватым в чём либо.
Ненавижу когда кто то пользуется моими недостатками.
Аватара пользователя
GIGOLAS
 
Сообщения: 302
Зарегистрирован: 22 сен 2008, 22:15
Откуда: Раменки 43

Вернуться в Новичкам или основы основ роботостроения.

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

cron