Vitat's homepage
13 Sep 2026, 01:25 *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: 21.03.08 Произведено обновление сайта/Site was updated
 
  Home   Forum   Help Search Login Register  

Pages: [1]   Go Down
  Print  
Author Topic: Yampp и bmw i-bus  (Read 14438 times)
0 Members and 1 Guest are viewing this topic.
Tolin
Junior
**
Posts: 11


View Profile
« on: 18 Aug 2004, 02:02 »

Вопрос, есть ли готовая прошивка в одном флаконе с эмулятором, чтобы штатно подходила к родной шине BMW,

если нет то помогите разобратся с кодом,
последние прошивки написаны на WinAVR-20030312.

как сделать так чтоб на выходе max202 получился hex , к примеру

[code:1]
void pl_disp(u16 index, u08 sel)
{
   YADL_PLAY_LIST_ENTRY *pEntry = get_pl_entry(index);
   if (index < playlist_qty)
   {
      Vlcd_puts(pEntry->name);               // print on LCD
#ifdef ENABLE_UART
      if(sel)                        // if current index
         uprintf("\rPlaylist: %s     ",pEntry->name);      // print on terminal

      и как сюда добавить чтоб он выдовал также на порт hex код              

#endif
   }
}[/code:1]

зарание Сенкс.
Logged
Sergey
Member
***
Posts: 76


View Profile Email
« Reply #1 on: 18 Aug 2004, 13:48 »

Тебе нужно чтобы при каждом вызове uprintf() выводился HEX, или просто HEX строки. Question
Logged
Tolin
Junior
**
Posts: 11


View Profile
« Reply #2 on: 18 Aug 2004, 16:27 »

Дело в том что это как в твоем листе, IPBUS.c
[code:1]
//commands massive
static u08 INIT_10_37_MASS[]={18,0x10,0x10,0x06,0x00,0x37,0x01,0x00,0x83,0x41,0x00,0,0x40,0xF6,0x4A,0x03,0x03,0x01};
static u08 INIT_50_MASS[]={8,   0x50,0x10,0x06,0x00,0x00,0x01,0x04};
static u08 COM_10_23_MASS[]={12,0x10,0x10,0x06,0x00,0x23,0x01,0x00,0x83,0x41,0x00};
static u08 COM_10_34_MASS[]={9,0x10,0x10,0x06,0x00,0x34,0,0x40};
static u08 COM_61_19_MASS[]={0x19,0,0x01,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01};
//end
[/code:1]

там тоже есть строки такиеже строки, какие нужны и мне на выходе,

[code:1]/*******************************************************************************/
/* IBUS MESSAGES DEFINITION                                                    */
/*******************************************************************************/

/*******************************************************************************/
/* CD PLAYER Messages. DEVICE ID = 18H                                         */
/*******************************************************************************/

// CD Broadcast Messages (FFH)--------------------------------------------------

// Poll Response
u08 cd_pollresp_msg[] PROGMEM =
{ 0x18, 0x04, 0xff, 0x02, 0x00, 0xE1 };

// CD announce
u08 cd_announce_msg[] PROGMEM =
{ 0x18, 0x04, 0xff, 0x02, 0x01, 0xE0 };


// CD Messages to Radio (68H)---------------------------------------------------

// - 7th byte is the disk index (usually between 01,06).
// - 8th byte is the track index.
// Messages always send CD 01, Track 01. Don't care about CD and track # with a MP3 player.
// So the message can be static.  

// CD and Track Status Not Playing Response
u08 cd_statusnotplaying_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x00, 0x02, 0x00, 0x3F, 0x00, 0x01, 0x01, 0x7E };

// CD and Track Status Playing Response
u08 cd_statusplaying_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x00, 0x09, 0x00, 0x3F, 0x00, 0x01, 0x01, 0x75 };

// Track Start Playing CD 01 00
u08 cd_startplaying01_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x02, 0x09, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x76 };

// Track Start Playing CD 02 00
u08 cd_startplaying02_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x02, 0x09, 0x00, 0x3F, 0x00, 0x02, 0x00, 0x75 };

// Track Start Playing CD 03 00
u08 cd_startplaying03_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x02, 0x09, 0x00, 0x3F, 0x00, 0x03, 0x00, 0x74 };

// Track Start Playing CD 04 00
u08 cd_startplaying04_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x02, 0x09, 0x00, 0x3F, 0x00, 0x04, 0x00, 0x73 };

// Track Start Playing CD 05 00
u08 cd_startplaying05_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x02, 0x09, 0x00, 0x3F, 0x00, 0x05, 0x00, 0x72 };

// Track Start Playing CD 06 00
u08 cd_startplaying06_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x02, 0x09, 0x00, 0x3F, 0x00, 0x06, 0x00, 0x71 };

// Track End Playing 01 01
u08 cd_endplaying_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x07, 0x09, 0x00, 0x3F, 0x00, 0x01, 0x01, 0x72 };

// CD Seek 01
//u08 cd_seek1_msg[] PROGMEM =
//{ 0x18, 0x0A, 0x68, 0x39, 0x08, 0x09, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x7C };

// Scan Forward
//u08 cd_scanfwd_msg[] PROGMEM =
//{ 0x18, 0x0A, 0x68, 0x39, 0x03, 0x09, 0x00, 0x3F, 0x00, 0x02, 0x03, 0x77};

// Scan Backward
//u08 cd_scanback_msg[] PROGMEM =
//{ 0x18, 0x0A, 0x68, 0x39, 0x04, 0x09, 0x00, 0x3F, 0x00, 0x02, 0x03, 0x70};

/*******************************************************************************/
/* RADIO Messages. DEVICE ID = 68H                                             */
/*******************************************************************************/

// Poll CD Player
u08 rad_cdpoll_msg[] PROGMEM =
{ 0x68, 0x03, 0x18, 0x01, 0x72 };

// Request Current CD and Track Status
u08 rad_cdgetcurrenttk_msg[] PROGMEM =
{ 0x68, 0x05, 0x18, 0x38, 0x00, 0x00, 0x4D };

// Stop Playing
u08 rad_cdstopplaying_msg[] PROGMEM =
{ 0x68, 0x05, 0x18, 0x38, 0x01, 0x00, 0x4C };

// Request to play
u08 rad_cdreqtoplay_msg[] PROGMEM =
{ 0x68, 0x05, 0x18, 0x38, 0x03, 0x00, 0x4E };


// Request to startup ??
// sent when entering CDC mode and on
// system startup
u08 rad_cdreqtoplay2_msg[] PROGMEM =
{ 0x68, 0x05, 0x18, 0x38, 0x02, 0x00, 0x4f };



// Fast Scan Forward
u08 rad_cdfastscanf_msg[] PROGMEM =
{ 0x68, 0x05, 0x18, 0x38, 0x04, 0x01, 0x48 };

// Fast Scan Backward
u08 rad_cdfastscanb_msg[] PROGMEM =
{ 0x68, 0x05, 0x18, 0x38, 0x04, 0x00, 0x49 };

// CD Change 01-06. To stay static, Declaration of 6 messages.
//u08 rad_cdchange01_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x06, 0x01, 0x4A };

//u08 rad_cdchange02_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x06, 0x02, 0x49 };

//u08 rad_cdchange03_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x06, 0x03, 0x48 };

//u08 rad_cdchange04_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x06, 0x04, 0x4F };

//u08 rad_cdchange05_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x06, 0x05, 0x4E };

//u08 rad_cdchange06_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x06, 0x06, 0x4D };

// Scan Intro Mode On
//u08 rad_cdscanintroon_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x07, 0x01, 0x4B };

// Scan Intro Mode Off
//u08 rad_cdscanintrooff_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x07, 0x00, 0x4A };

// Random Mode On
//u08 rad_cdrandomon_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x08, 0x01, 0x44 };

// Random Mode Off
//u08 rad_cdrandomoff_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x08, 0x00, 0x45 };

// Previous Track
//u08 rad_cdprevtk_msg[] PROGMEM =
//{ 0x68, 0x05, 0x18, 0x38, 0x0A, 0x01, 0x46 };




/*******************************************************************************/
/* BMB Messages. DEVICE ID = F0H                                               */
/*******************************************************************************/

// Hold tape eject
//u08 bmb_radholdeject_msg[] PROGMEM =
//{ 0xF0, 0x04, 0x68, 0x48, 0x64, 0xB0 };

// Hold tape auto reverse
//u08 bmb_radholdautorev_msg[] PROGMEM =
//{ 0xF0, 0x04, 0x68, 0x48, 0x54, 0x80 };

// Push 1
u08 bmb_radpush1_msg[] PROGMEM =
{ 0xF0, 0x04, 0x68, 0x48, 0x11, 0xC5 };

// Push 2
u08 bmb_radpush2_msg[] PROGMEM =
{ 0xF0, 0x04, 0x68, 0x48, 0x01, 0xD5 };

// Push 3
u08 bmb_radpush3_msg[] PROGMEM =
{ 0xF0, 0x04, 0x68, 0x48, 0x12, 0xC6 };

// Push 4
u08 bmb_radpush4_msg[] PROGMEM =
{ 0xF0, 0x04, 0x68, 0x48, 0x02, 0xD6 };

// Push 5
u08 bmb_radpush5_msg[] PROGMEM =
{ 0xF0, 0x04, 0x68, 0x48, 0x13, 0xC7 };

// Push 6
u08 bmb_radpush6_msg[] PROGMEM =
{ 0xF0, 0x04, 0x68, 0x48, 0x03, 0xD7 };


// Push Next
u08 bmb_radpushnext_msg[] PROGMEM =
{ 0xF0, 0x04, 0x68, 0x48, 0x00, 0xD4 };

// Push Prev
u08 bmb_radpushprev_msg[] PROGMEM =
{ 0xF0, 0x04, 0x68, 0x48, 0x10, 0xC4 };

// Push Nav turn knob
//u08 bmb_navpushtknob_msg[] PROGMEM =
//{ 0xF0, 0x04, 0x3B, 0x48, 0x05, 0x82 };

// Push NAV MENU
//u08 bmb_navpushmenu_msg[] PROGMEM =
//{ 0xF0, 0x04, 0xFF, 0x48, 0x34, 0x77 };

/*******************************************************************************/
/* STEERING WHEEL Messages. DEVICE ID = 50H                                    */
/*******************************************************************************/

// Push Next - Steering Wheel
u08 stw_radpushnext_msg[] PROGMEM =
{ 0x50, 0x04, 0x68, 0x3B, 0x01, 0x06 };

// Push Prev - Steering Wheel
u08 stw_radpushprev_msg[] PROGMEM =
{ 0x50, 0x04, 0x68, 0x3B, 0x08, 0x0F };



/*******************************************************************************/
/* VARIOUS MESSAGE                                                             */
/*******************************************************************************/

// CD Activation Detection.  
// DO NOT SEND THIS string. It is not a valid message.
// Simply detect the string containing subfields + "CD"

u08 rad_navstringcdno[] PROGMEM =
{ 0x43,0x44,0x43,0x20 };

u08 rad_navstring2[] PROGMEM =
{ 0x43,0x44,0x20,0x36 };


// Index area refresh
u08 nav_refresh_msg[] PROGMEM =
{ 0x68, 0x06, 0x3B, 0xA5, 0x60, 0x01, 0x00, 0x91 };



// Other
u08 rad_navmenuset_msg[] PROGMEM =
{ 0x68, 0x04, 0x3B, 0x46, 0x01,0x10 };

u08 rad_navmenutimed_msg[] PROGMEM =
{ 0x68, 0x04, 0x3B, 0x46, 0x02,0x13 };[/code:1]


принцип должен быть наверное один и тотже,
Yampp с новым софтом должен слать код присутствия CD, и
формировать на ЖКИ магнитофона соответствующую информацию, и также воспринемать передоваемые команды от панели управления
вот прикладываю схему всех шин данных в моделях BMW
http://www.bmwclub.ru/gallery/showphoto.php?photo=22109&papass=&sort=1&thecat=500
Logged
Sergey
Member
***
Posts: 76


View Profile Email
« Reply #3 on: 18 Aug 2004, 17:41 »

Quote

Yampp с новым софтом должен слать код присутствия CD, и
формировать на ЖКИ магнитофона соответствующую информацию, и также воспринемать передоваемые команды от панели управления

Понятно Smile
Только заменой массивов команд здесь не обойдешься, надо полностью
переписывать link.c, частично ipbus.c и адаптировать остальную прошивку. Еще скорее всего надо менять аппаратную часть (pca82c250 и lm339).

кстати этот кусок откуда
Quote
void pl_disp(u16 index, u08 sel)
{
   YADL_PLAY_LIST_ENTRY *pEntry = get_pl_entry(index);
   if (index < playlist_qty)
   {
      Vlcd_puts(pEntry->name);               // print on LCD
#ifdef ENABLE_UART
      if(sel)                        // if current index
         uprintf("\rPlaylist: %s     ",pEntry->name);      // print on terminal

      и как сюда добавить чтоб он выдовал также на порт hex код                

#endif
   }
}

из YAMPP или BWM Question
если из YAMPP то uprintf()(так же как и max202) используется только для отладки и при нормальной работе не нужен

Вообще пришли схему и прошивку для имулятора I-BUS,  может чего поконкретнее скажу Smile
sergey@nayramdal.ru
Logged
Tolin
Junior
**
Posts: 11


View Profile
« Reply #4 on: 19 Aug 2004, 02:00 »

кстате поповоду мах202, с прошивкой 1.30 если запустить терминал то то что видно на ЖКИ, то и видно на терменале, только из терминала можно управлять
L-list
m-menu
n-next
d- звук тише
u - звук громче,

итд,
также он показывает сколько отыграла песьня, название полностью весь тег
может быть чтото можно из это использовать для эмуляции,
если уже это написано,

зарание Сенкс.
Logged
Tolin
Junior
**
Posts: 11


View Profile
« Reply #5 on: 19 Aug 2004, 02:55 »

А вот кстате простенькая схемка сопряжения компа с i-bus


с помощю проги по мониторингу, можно управлять всем в машине, звуком, окнами, светом, кондишеном, телефонм

вот описание в оригенале
http://www.openbmw.org/bus/

а вот команды
http://www.openbmw.org/bus/buttons/
Logged
Sergey
Member
***
Posts: 76


View Profile Email
« Reply #6 on: 19 Aug 2004, 14:49 »

Посмотрел я файл bwm.c
В принципе достаточно просто переделать любую прошивку YAMPP для эмулятора.
Все сообщения на I BUS посылаются через UART,а в YAMPP UART используется для связи с компьютером и отладки, поэтому лучше использовать второй UART(mega161,162), хотя это не принципиально.

функция event_e get_bmw_event(void) - получает сообщения от магнитолы, обрабатывает
их и выдает код комманды YAMPP-у (EV_PLAY,EV_STOP и т.д.)
char lexer(const struct lexcfg PROGMEM *pattern) - вспомогательная функция для get_bmw_event() - распознает сообщения по маскам(масивы комманд магнитолы).

void SendCDMsg(PGM_P pData) и void SendCDMsgRAM(u08 *pData) посылают сформированое сообщение в UART.

void WriteTArea(u08 index,u08 *str)
void WriteIArea(u08 index,u08 *str)
void WriteMain(u08 *str)   формируют сообщения(добавляют заголовок,длину и т.д) для отображения на экране магнитолы (время, состояние и т.д.) Я как понял там три окна(физических или логических), каждая отвечает за свое.

остальные по названию понятны. Если будут более конкретные вопросы - пиши.
Logged
Tolin
Junior
**
Posts: 11


View Profile
« Reply #7 on: 19 Aug 2004, 20:18 »

Ок, если не трудно давай совместно обсудим что и как,

за основы берем рабочую прошивку, 1.30

теперь я так понял в нее надо добавить мосивы команд

[code:1]// CD Broadcast Messages (FFH)--------------------------------------------------

// Poll Response
u08 cd_pollresp_msg[] PROGMEM =
{ 0x18, 0x04, 0xff, 0x02, 0x00, 0xE1 };

// CD announce
u08 cd_announce_msg[] PROGMEM =
{ 0x18, 0x04, 0xff, 0x02, 0x01, 0xE0 };


// CD Messages to Radio (68H)---------------------------------------------------

// - 7th byte is the disk index (usually between 01,06).
// - 8th byte is the track index.
// Messages always send CD 01, Track 01. Don't care about CD and track # with a MP3 player.
// So the message can be static.  

// CD and Track Status Not Playing Response
u08 cd_statusnotplaying_msg[] PROGMEM =
{ 0x18, 0x0A, 0x68, 0x39, 0x00, 0x02, 0x00, 0x3F, 0x00, 0x01, 0x01, 0x7E };[/code:1]

итд, до конца из файла BMW.c

что теперь ?

как базовая система поймет что присутствует к примерй CD-Changer
я так понял надо с какойто переодичностью слать какойто код, типо я тут, я ченджер,

как это сделать?
Logged
Tolin
Junior
**
Posts: 11


View Profile
« Reply #8 on: 20 Aug 2004, 17:49 »

как правельно сконфигурировать Visual Micro Lab
чтоб он работал с WinAVR,

какие настройки должны быть в структуре процессора,
Logged
Pages: [1]   Go Up
  Print  
 
Jump to:  

TinyPortal v1.0.5 beta 1© Bloc

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!