Skip to content
View in the app

A better way to browse. Learn more.

Ford XR6 Turbo.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MrBean

Member
  • Joined

  • Last visited

Everything posted by MrBean

  1. We can only hope they put the highly efficient Whipple charger on these - phew, will definately be selling the F6 to get me hands on one of these monsters - has to be the 5.8L version though, spinning at (hopefully) 7k rpm. Nice engine!
  2. Fark me...you may be a Expensive Daewoo boy, but you know what you're doing come carpenting time (and that's not all of it). Good going, Kal, looking very good - overkill for me when it comes to audio-systems, but then I'm sure that's the same with me when it comes to carputers - lol. To everyone else here: An engine doesn't know (or care)(about) the badge on it's tappet-covers...... Depends what you do to the inside is what ultimately matters .....[/stir-mode off]
  3. Heya Mate, The ArcadeVGA by Ultimarc would be the best bet if you were to retain the stock factory ICC LCD. You get PCI-Express versions, just check on their site
  4. Heya Mick, Thanx Hey, pm me your mobile number again, please - I want to catch up with you! I also posted this request over at Fluxmedia I think it was.... Good to hear from you....
  5. Thanx Mate, the reason why I opted for this is that it's direct sunlight readable......looks great in real life - million times better than my Xenarc 700TSV
  6. @ aramage: I completely uninstalled Mac OSX, and am running Win XP by itself. But, with that said, the Mac-mini is being replaced by my much faster-booting Commell LS-372 setup - see post 126 on the previous page..... What have you in mind?
  7. Thanx Mate, appreciated
  8. Thanx Pat, appreciated Enjoy rest of Easter then!
  9. Hello Everyone, Made some progress on the LCD setup. As some of you know, I mentioned earlier that I was going the same route as Thermoptic with his NEC 8.4" Transflective LCD. It is a very good solution, both the fact that it is transflective, and 8.4" at that, makes for a better fit to my (very difficult to mod) Ford F6 Tornado bezel. Well, after a few hiccups, like the incorrect (5V 84PW041) inverter, I finally received the 12V 84PW031 unit, which means I can now power the inverter, backlight controls, and brightness, directly off the ALR-1400 controller board. It makes for a very neat, tidy setup, suitable to my build-requirements. With the NEC NL8060BC21-02 being an open frame LCD, without any case, I had to do something custom with aluminium, which also means it would be a sure way of mounting it onto the bezel. Here is the ALR-1400 controller mounted in the custom housing, immediately behind the TFT panel. Here is the new 84PW031 12 inverter: And here the LCD button controller electronics (for testing purposes) Here you can see all the electronics as they sit snugly behind the TFT and the housing on an angle, giving you an idea of the dimensions Here I have the angled shot from the front and then, two shots from front-on - please take note that you will see some refelction, as I have left the protective plastic cover on the LCD for now, until I am finished with the bezel - hence a slight refelection from the camera flash......in case you wondered.... and and lastly, here two shots of the LCD connected to the carputer, and sitting in Desktop environment: With flash..... and without flash For the moment though, please ignore the rough state of the fascia bezel, I need to start working on that next, so I can get this into the UTE. Good progress though, both carputer, with all software, casing, etc sorted, same with the LCD - the LCD secures very well onto the fascia, with decent 3mm stainless steel screws/nuts, so it sits very firm and secure. Let me know what you think so far - please look back a few pages to have a looky at the original 10" LCD attempt, which was abandoned due to reflection issues et al. Br, MrBean
  10. Nope, that's twaddle - nothing will happen, unless you have cd's in at the time, which may dislodge and get stuck though. I tilted mine multiple times, and opened it up many more, and no hassles....and no mercury switch Enjoy, and be careful, that's all there's to it....and avoid static discharge into the unit....
  11. Ah, dunno, the micro won't be much, and as this will be a community project, you won't pay for the software/firmware for the micro either. The Carputer - well, I have provided all the linkies, so check with the suppliers, as pricing would be different now......
  12. Hello Guys, Ok, some progress - although this may not seem like much, I think it significant. I have browsed several websites for a number of hours, and discovered some rather useable code - there's a fair bit of CAN-code floating out there, and although I am no programmer, I have enough savvy to work through the snippets to figure out what will work and what not, so here's basically what we can start from: Here's the can.c file-code /******************************************************************************** ****************** --------------------------------------------------------------------------------------------------- Copyright © 2007, Jonathan Bagg All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Jonathan Bagg nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------------------------- Project name : Infidigm AVR Drivers Processor : AT90CAN32/64/128 File name : can.c --------------------------------------------------------------------------------------------------- Modifications: Revision 1.0 2007/05/19 Bagg - Initial Release --------------------------------------------------------------------------------------------------- Created : 10 March 2007 Author(s) : Jonathan Bagg --------------------------------------------------------------------------------------------------- CAN bus Interrupt Based Driver --------------------------------------------------------------------------------------------------- ******************************************************************************** ******************/ #include <avr/io.h> #include <avr/interrupt.h> #include "can.h" /******************************************************************************** ****************** * CAN Baud Rate ******************************************************************************** ******************/ #define CAN_BAUD_RATE 500000 /******************************************************************************** ****************** * CAN PHY driver delays and LINE delay (unit = nS) ******************************************************************************** ******************/ #define TX_DELAY 50 //bus driver delay #define RX_DELAY 30 //receiver delay #define LINE_DELAY 110 //bus line delay /******************************************************************************** ****************** * Acceptance Filtering ******************************************************************************** ******************/ #define ACCPT_MASK_ID 0 #define ACCPT_TAG_ID 0 #define ACCPT_MASK_RTR 0 #define ACCPT_TAG_RTR 0 #define ACCPT_MASK_IDE 0 #define ACCPT_TAG_RB0 0 #define ACCPT_TAG_RB1 0 //RB1 in extended (CAN 2.0B) Only /******************************************************************************** ****************** * TX and RX frame buffer sizes * - 1 can frame ~ 11 bytes for CAN2A and 13 bytes for CAN2B * - RX_SIZE * 11 or 13 is aprox rx buffer memory size. ******************************************************************************** ******************/ #define TX_SIZE 8 //Transmit Buffer Size, can be 2^n where n=0 to 6 #define RX_SIZE 8 //Receiver Buffer Size, can be 2^n where n=0 to 6 /******************************************************************************** ****************** * Pre-Processor ONLY! - Do not edit! ******************************************************************************** ******************/ #define BIT_TIME_NS (1000000000/CAN_BAUD_RATE) #define TCSC (BIT_TIME_NS/16) #define TPRS (2*(TX_DELAY+RX_DELAY+LINE_DELAY)) #define PROPAG_CALC ((TPRS+(TCSC/2-1))/TCSC) //round at 0.5 instead of 1 #if PROPAG_CALC>7 #define PROP_SEG PROPAG_CALC #else #define PROP_SEG 7 #endif #define REMAINING (16-1-(PROP_SEG-1)-1) #define PHASE_SEG_1 (REMAINING/2) #if (REMAINING & 1) //check if odd or even #define PHASE_SEG_2 (PHASE_SEG_1-1) //phase2 <= phase1 #else #define PHASE_SEG_2 PHASE_SEG_1 #endif #define SJW_VALUE 1 #define BRP_VALUE (F_CPU/CAN_BAUD_RATE/16) #if (BRP_VALUE > 0x3F) #warning CAN Baud Rate too LOW #endif #if (PHASE_SEG_2 < 2) #warning Propagation time is too long! #endif #if (F_CPU%CAN_BAUD_RATE) #warning Clock (F_CPU) is not a multipe of CAN Baud rate! #endif #if !(TX_SIZE==64 || TX_SIZE==32 || TX_SIZE==16 || TX_SIZE==8 \ || TX_SIZE==4 || TX_SIZE==2 || TX_SIZE==1) #warning:Wrong CAN TX Buffer Size #endif #if !(RX_SIZE==64 || RX_SIZE==32 || RX_SIZE==16 || RX_SIZE==8 \ || RX_SIZE==4 || RX_SIZE==2 || RX_SIZE==1) #warning:Wrong CAN RX Buffer Size #endif #define RX_ABS_MASK 0x7F #define TX_ABS_MASK 0x7F /******************************************************************************** ****************** * Internal Variables ******************************************************************************** ******************/ union can_frame tx_frames[TX_SIZE]; union can_frame rx_frames[RX_SIZE]; static unsigned char tx_off; static unsigned char tx_on; static unsigned char tx_busy; static unsigned char rx_off; static unsigned char rx_on; /******************************************************************************** ****************** * init_can(); - See 'can.h' Header file for Description ******************************************************************************** ******************/ void init_can(void) { CANGCON = _BV(SWRES); //Reset CAN controller CANBT1 = (BRP_VALUE - 1) << 1; CANBT2 = ((SJW_VALUE - 1) << 5) | ((PROP_SEG - 1) << 1); CANBT3 = ((PHASE_SEG_2 - 1) << 4) | ((PHASE_SEG_1 - 1) << 1) | 1; CANTIM = 0; CANTTC = 0; CANHPMOB = 0; CANTCON = 0; CANPAGE = 0 << 4; //Switch to Mob 0 access CANSTMOB = 0; CANPAGE = 1 << 4; //Switch to Mob 1 access CANSTMOB = 0; #if CAN_V==CAN2A CANIDM4 = ACCPT_MASK_RTR << 2 | ACCPT_MASK_IDE; CANIDM2 = (ACCPT_MASK_ID << 5) & 0xFF; CANIDM1 = (ACCPT_MASK_ID >> 3) & 0xFF; CANIDT4 = ACCPT_TAG_RTR << 2 | ACCPT_TAG_RB0; CANIDT2 = (ACCPT_TAG_ID << 5) & 0xFF; CANIDT1 = (ACCPT_TAG_ID >> 3) & 0xFF; #elif CAN_V==CAN2B CANIDM4 = ((ACCPT_MASK_ID << 3) & 0xFF) | ACCPT_MASK_RTR << 2 | ACCPT_MASK_IDE; CANIDM3 = (ACCPT_MASK_ID >> 5) & 0xFF; CANIDM2 = (ACCPT_MASK_ID >> 13) & 0xFF; CANIDM1 = ((long)ACCPT_MASK_ID >> 21) & 0xFF; CANIDT4 = ((ACCPT_TAG_ID << 3) & 0xFF) | ACCPT_TAG_RTR << 2 | ACCPT_TAG_RB1 << 1 | ACCPT_TAG_RB0; CANIDT3 = (ACCPT_TAG_ID >> 5) & 0xFF; CANIDT2 = (ACCPT_TAG_ID >> 13) & 0xFF; CANIDT1 = ((long)ACCPT_TAG_ID >> 21) & 0xFF; #endif CANCDMOB = _BV(CONMOB1) | CAN_IDE; //Set Mob 1 as RX and IDE CANEN2 = _BV(ENMOB1) | _BV(ENMOB0); //Enable Mob 0 and 1 CANIE2 = _BV(ENMOB1) | _BV(ENMOB0); //Enable Mob 0 and 1 Interrupt CANGIE = _BV(ENIT) | _BV(ENRX) | _BV(ENTX); //Enable TX and RX interrupt CANGCON = _BV(ENASTB); //Enable CAN controller } /******************************************************************************** ****************** * CAN ISR - See 'can.h' Header file for Description ******************************************************************************** ******************/ SIGNAL(SIG_CAN_INTERRUPT1) { unsigned char can_irq; volatile unsigned char canstmod; can_irq = CANSIT2; // TX if (can_irq & _BV(SIT0) && CANIE2 & _BV(ENMOB0)) { //Select TX Mob (=Mob0) CANPAGE = 0 << 4; canstmod = CANSTMOB; CANSTMOB&= ~_BV(TXOK); //clear MB1, TX interrupt if (tx_on != tx_off) { unsigned char pos; pos = tx_off & (TX_SIZE-1); //set ID #if CAN_V==CAN2A CANIDT4 = tx_frames[pos].array[0]; CANIDT2 = tx_frames[pos].array[0]; CANIDT1 = tx_frames[pos].array[1]; #elif CAN_V==CAN2B CANIDT4 = tx_frames[pos].array[0]; CANIDT3 = tx_frames[pos].array[1]; CANIDT2 = tx_frames[pos].array[2]; CANIDT1 = tx_frames[pos].array[3]; #endif //program data registers - auto increment CANMSG CANMSG = tx_frames[pos].data[0]; CANMSG = tx_frames[pos].data[1]; CANMSG = tx_frames[pos].data[2]; CANMSG = tx_frames[pos].data[3]; CANMSG = tx_frames[pos].data[4]; CANMSG = tx_frames[pos].data[5]; CANMSG = tx_frames[pos].data[6]; CANMSG = tx_frames[pos].data[7]; //set length and request send CANCDMOB = _BV(CONMOB0) | CAN_IDE | tx_frames[pos].length; tx_off++; } else { tx_busy = 0; } } // RX else if (can_irq & _BV(SIT1) && CANIE2 & _BV(ENMOB1)) { //Select RX Mob (=Mob1) CANPAGE = 1 << 4; //Switch to Mob 1 access if (((rx_on - rx_off) & RX_ABS_MASK) < RX_SIZE) { unsigned char pos; pos = rx_on & (RX_SIZE-1); //Read length rx_frames[pos].length = CANCDMOB & 0x0F; //Read ID #if CAN_V==CAN2A rx_frames[pos].array[0] = (CANIDT2 & 0xE0) | (CANIDT4 & 0x07); rx_frames[pos].array[1] = CANIDT1; #elif CAN_V==CAN2B rx_frames[pos].array[0] = CANIDT4; rx_frames[pos].array[1] = CANIDT3; rx_frames[pos].array[2] = CANIDT2; rx_frames[pos].array[3] = CANIDT1; #endif //read data registers - auto increment CANMSG rx_frames[pos].data[0] = CANMSG; rx_frames[pos].data[1] = CANMSG; rx_frames[pos].data[2] = CANMSG; rx_frames[pos].data[3] = CANMSG; rx_frames[pos].data[4] = CANMSG; rx_frames[pos].data[5] = CANMSG; rx_frames[pos].data[6] = CANMSG; rx_frames[pos].data[7] = CANMSG; rx_on++; } //clear irq canstmod = CANSTMOB; CANSTMOB&= ~_BV(RXOK); CANCDMOB = _BV(CONMOB1) | CAN_IDE; //Set Mob 1 as RX and IDE } } /******************************************************************************** ****************** * send_can_frame(); - See 'can.h' Header file for Description ******************************************************************************** ******************/ unsigned char send_can_frame(union can_frame *frame) { unsigned char result; result = 0; CANGIE&= ~_BV(ENIT); if (!tx_busy) { CANPAGE = 0 << 4; //Switch to Mob 0 access //set ID #if CAN_V==CAN2A CANIDT4 = frame->array[0]; CANIDT2 = frame->array[0]; CANIDT1 = frame->array[1]; #elif CAN_V==CAN2B CANIDT4 = frame->array[0]; CANIDT3 = frame->array[1]; CANIDT2 = frame->array[2]; CANIDT1 = frame->array[3]; #endif //program data registers - auto increment CANMSG = frame->data[0]; CANMSG = frame->data[1]; CANMSG = frame->data[2]; CANMSG = frame->data[3]; CANMSG = frame->data[4]; CANMSG = frame->data[5]; CANMSG = frame->data[6]; CANMSG = frame->data[7]; result = 1; tx_busy = 1; //set length, start send which restarts tx interrupt CANCDMOB = _BV(CONMOB0) | CAN_IDE | frame->length; } else if (TX_SIZE - ((tx_on - tx_off) & TX_ABS_MASK)) { result = 1; unsigned char I; for (I=0;I<CAN_FRAME_SIZE;I++) { tx_frames[tx_on & (TX_SIZE-1)].array[I] = frame->array[I]; } tx_on++; result = 1; } CANGIE|= _BV(ENIT); return result; } /******************************************************************************** ****************** * read_can_frame(); - See 'can.h' Header file for Description ******************************************************************************** ******************/ union can_frame *read_can_frame(void) { return &rx_frames[(rx_off & (RX_SIZE-1))]; } /******************************************************************************** ****************** * next_can_frame(); - See 'can.h' Header file for Description ******************************************************************************** ******************/ void next_can_frame(void) { if (rx_on != rx_off) { rx_off++; } } /******************************************************************************** ****************** * new_can_frame(); - See 'can.h' Header file for Description ******************************************************************************** ******************/ unsigned char new_can_frame(void) { unsigned char result; if (rx_on != rx_off) //check for new data on rx pdu buffer result = 1; else result = 0; return result; } Here's the can.h file-code /******************************************************************************** ****************** --------------------------------------------------------------------------------------------------- Copyright © 2007, Jonathan Bagg All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Jonathan Bagg nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------------------------- Project name : Infidigm AVR Drivers Processor : AT90CAN32/64/128 File name : can.h --------------------------------------------------------------------------------------------------- Modifications: Revision 1.0 2007/05/19 Bagg - Initial Release --------------------------------------------------------------------------------------------------- Created : 10 March 2007 Author(s) : Jonathan Bagg --------------------------------------------------------------------------------------------------- CAN bus Interrupt Based Driver --------------------------------------------------------------------------------------------------- ******************************************************************************** ******************/ /******************************************************************************** ****************** * Select CAN version ******************************************************************************** ******************/ #define CAN2A 0 #define CAN2B 1 #define CAN_V CAN2A //Only edit this line to be CAN2A or CAN2B /******************************************************************************** ****************** * Pre-Processor ONLY! - Do not edit! ******************************************************************************** ******************/ #define CAN_FRAME_DATA_LENGTH 8 #if CAN_V==CAN2A #define CAN_FRAME_MSG_LENGTH 3 #define CAN_IDE 0 #elif CAN_V==CAN2B #define CAN_FRAME_MSG_LENGTH 5 #define CAN_IDE _BV(IDE) #endif #define CAN_FRAME_SIZE (CAN_FRAME_DATA_LENGTH + CAN_FRAME_MSG_LENGTH) /******************************************************************************** ****************** * CAN Frame Message Structure ******************************************************************************** ******************/ union can_frame { struct { #if CAN_V==CAN2A unsigned int rb0 : 1; // RB0 bit unsigned int filler : 1; // filler bit unsigned int rbr : 1; // RBR bit unsigned int filler1 : 1; // filler bit unsigned int filler2 : 1; // filler bit unsigned int id :11; #elif CAN_V==CAN2B unsigned int rb0 : 1; // RB0 bit unsigned int rb1 : 1; // RB1 bit unsigned int rbr : 1; // RBR bit unsigned long id :29; #endif unsigned int length : 4; // data length in bytes unsigned int filler3 : 4; // filler bits unsigned char data[CAN_FRAME_DATA_LENGTH]; }; unsigned char array[CAN_FRAME_MSG_LENGTH + CAN_FRAME_DATA_LENGTH]; }; /******************************************************************************** ****************** * * Function : init_can * * Description : Sets up the CAN controller. Inits Mob 0 as TX and Mob 1 as RX. * * Parameters : None * * Functions Called : None * * Returns : None * ******************************************************************************** ******************/ void init_can(void); /******************************************************************************** ****************** * * Signal : SIG_CAN_INTERRUPT1 * * Description : CAN Interrupt Service Routine. Loads the next can frame to transmit from * the tx buffer to the MoB. Unloads the received can frame from the * receiver Mob to the the rx buffer. * * Parameters : None * * Functions Called : None * * Returns : None * ******************************************************************************** ******************/ /******************************************************************************** ****************** * * Function : send_can_frame * * Description : Adds a can frame to be transmitted. If send_can_frame() returns true, the * added can frame will be transmitted by the can controller when the * can bus is free. After send_can_frame() returns, the added can_frame * is on the tx buffer (if returned true), and the originating can_frame in * the application can be modified / destroyed. * * Parameters : pointer to the CAN message * * Functions Called : None * * Returns : 1 if successfully added can frame to send, 0 if buffer is full * * Example : union can_frame can_engin_rpm; * can_engin_rpm.id = 0x0123; * can_engin_rpm.data[0] = rpm; * can_engin_rpm.length = 1; * send_can_frame(&can_engin_rpm); * ******************************************************************************** ******************/ unsigned char send_can_frame(union can_frame *frame); /******************************************************************************** ****************** * * Function : read_can_frame * * Description : Used for reading data from received CAN messages. See below RX example. * * Parameters : None * * Functions Called : None * * Returns : Pointer to current can frame in RX buffer * ******************************************************************************** ******************/ union can_frame *read_can_frame(void); /******************************************************************************** ****************** * * Function : next_can_frame * * Description : Used to remove the current received CAN frame from the RX buffer and select * the next received CAN message, if one exists. See below RX example. * * Parameters : None * * Functions Called : None * * Returns : None * ******************************************************************************** ******************/ void next_can_frame(void); /******************************************************************************** ****************** * * Function : new_can_frame * * Description : Used to check if there is one or more new received CAN frames on the RX * buffer. See below RX example. * * Parameters : None * * Functions Called : None * * Returns : 1 if there is one or more new received CAN frames, 0 if RX buffer is empty. * ******************************************************************************** ******************/ unsigned char new_can_frame(void); /******************************************************************************** ****************** * * RX Example * * unsigned char rpm; * * for (; { * if (new_can_frame()) { * union can_frame *can_engin_rpm; //temporarily declare space on stack * can_engin_rpm = read_can_frame(); * if (can_engin_rpm->id == 0x0123) { * rpm = can_engin_rpm->data[0]; * } * next_can_frame(); * } * } * ******************************************************************************** ******************/ Now, I have designed the network to enable the switches to connect with correct pull-up/pull-down resistors to the AVR inputs, all I need to do now is make a list of which pins will connect to the switches (PINX =input). I have a working bit of code for switch-inputs, so we can use that as well...... Will post it with the pin-assignements. You coders out there, let me know if these snippets are a good starting-point, I would think so Anyway, here a readme file ..... can_readme.txt can.c.txt can.h.txt
  13. @ fordboy1981: It will be best to request pricing directly from the suppliers, as it will vary slightly. A lot of the items have been imported from the USA, and those prices are in USD $ on the websites. Shipping is not that exxie, so you can form an idea
  14. Hello Guys, I have posted this in my ICC-Engineering thread incase you miss it, and want to go down this path....
  15. Hello Guys, I had a few PM's requesting the specs for my Carputer, so let me give a quick breakdown: Carputer Infrastucture Motherboard - Commell LS-372 - 3.5" form-factor, very small, and powerful. On the same Australian supplier website, there's also the LS-373, which is slightly newer model, with a mini pci-express (vs mini pci) slot. CPU - Intel Core 2 Duo T7100 MOBILE, 1.8GHz 800MHz FSB, 2MB L2 Cache, Socket 479 Micro-FCPGA / P CPU Notebook / Laptop Processor - please make sure you get a socket P (for Santa Rosa chipset) cpu if you use either the LS-373 or LS-373 Commell motherboard. Memory - 2gigs of decent DDR-2 800 SODimm - single stick, as there's one memory slot on motherboard only - I'm using some decent PQI powermemory for notebook picked up at the IT Fortune Mall in Bangkok on a previous visit. You should be able to find a local distributor of the same, or similar ram. Harddrive - OCZ Apex 60gig SSD - very fast, snappy, no microstutters at all. WiFi - any decent mini-pci (LS-372) or mini-pci express (LS-373) wifi card, similar to those in use in notebooks - very small, low power draw, and works pretty well - I use an Atheros chipset based one picked up of Ebay for something like $25 AUD. OS - Windows XP, with SP3, slipstreamed and trimmed down with nLite - giving me the fast <22seconds boot from power on. Frontend - CentraFuse by Fluxmedia - no argument, the best frontend out there, and I see now they're partnering with Microsoft to use an Embedded version next round - great!! Miscellaneous Items Tyre Pressure Monitoring - Portal Media PC TPMS kit, based on Robby over at Mp3Car's design, but without all the hacking of the 3rd EYE kit - this is basically the same hardware, but all onto a single custom PCB. Alok Patel supplies sensors for the tyres too, the price can't be beaten, and his service is exceptional. OBD-II Scantool - Well, I use a few, for different purposes - the one you guys might be interested in for displaying the basic OBD-II data live in the Centrafuse Frontend OBD-II window, I got the very neat, and fast (with double buffering) ODBPro's Scantool with right-angle cable from the good 'ol US of A - Paul is a pretty decent person to deal with, and great service. Then, for my project debugging, I am using the Mongoose FEPS from DrewTech with reprogramming capability, making use of std J2534 interface. And then, last but not least, should I want to check all 400+ sensors in my UTE, I can always connect my Autoenginuity with extended Ford Support software, but this one is based on a proprietary protocol, so you cannot really use this one for reverse engineering. The last 2 devices is not necessary, you can get the ODBPro's scantool for decent capabilities, and it works well with CF frontend. LCD One word of advice - don't skimp on the LCD you want to use - I have at least 4 different sizes/brands here, from the 10.4" Ebay special, to an 8" Ebay special, to the very exxy Xenarc 700-TSV, and they're all relatively crap for carputer use, due to glare/direct sunlight issues. The one I am now using is the NEC NL8060BC21-03 Transflective sun-readable 8.4" unit, obtained from Future Electronics I am using the 84PW041 inverter, and the Digital View ALR-1400 Controller with the appropriate LVDS connection cable - there's one or 2 extra cables needed with this, so ask here if you want to go this route, and I will spec all hardware for this custom LCD. See Page 6 on Thermoptic's thread over at Mp3Car to see the difference in view-quality, and a list of components. I hope this will assist you guys to assemble the same very fast, bullet-proof setu I have, albeit at a relatively steep price - but, I believe it is money well spent. Cant have a 380rwkw UTE with a crap pc now, can we. Should you have questions regarding my hardware, please ask, I will answer if I can.
  16. Hey Guys, The only problem you'll ever have when turning these ICC's upside down is when there are CD's in the cd receiver unit, and they may cock scew causing problems, especially on the multi-cd units. I know there's a few myths floating around, but this is the real reason. The LCD's ink won't run out if you turn it uppity up, I promiss Good on ya for fixing your bent pin, be careful with those, can easily break and then you have a little more serious problem. Br, MrBean
  17. Thanx Bunna, handy info. Will see what I can dig up in the future, as this will be a little longer-term project
  18. Hey Again Everyone, If there's anyone here that wants to use my carputer component list to build a very future-proof, extremely fast, if slightly pricey carputer, please notify me and I will post all my components codes, etc. I have used nLite on the latest WinXP SP3 to get boot-times down to 22seconds, and can include those settings, which should see you at the same boot-times for the LS-372 board. Let me know.
  19. And Hello Tree Monkey, as I mentioned a few posts back, reverse-engineering takes quite a fair bit of time, and if you're more comfortable having your ICC back, I will kindly ship it, as mentioned previously. I have had limited time available this last couple months due to ever-increasing pressure from our mother-company in Finland, and have been travelling more than I've at home :( So yes, I do realize progress is slow, but at least there's some. Update I have the Commell LV-372 3.5" up and running, 100% complete, with Centrafuse 2.1 frontend. Very recently installed an OCZ Apex 60gig SSD, and am happy to report boot times, from power switch to desktop in 22 seconds. Very quick if you ask me. I received the newly designed TPMS interface from Alok on PortalMediaPC, and have it configured, and up and running. Designed my own 1/4-wave whip antenna for the sucker, and it works very well, tyre-pressures and temps updating to the frontend... I have stripped my old manual ICC to get the housing sorted to fit the Commell board, currently busy with that. As mentioned earlier, one of the goals is to reuse existing infrastructure, and mount everything so as to look factory standard. Good progress here, and hoping finally to have the pics up on the weekend. The SSD held me back here, as I ultimately wanted to use one vs the 7200 Momentus harddrive, and I'm glad I waited for it to become affordable before purchasing. Now, at least the carputer part is complete. I'm having fun to fit the new transflective LCD (8.4" sun-readable industrial) in the std ICC fascia, the problem is the engineering plastic used in injection molding these things, PPO/PPE - nothing really bonds to it, so you cannot glue/weld it like ABS derivatives. Damn. I would not like to use fiberglass/fillers etc. Anyway.... Onto the AVR CAN controller: I have been busy reverse-engineering the original factory LCD - the TFT unit with nice color graphics overlays - I want to integrate this into the new transflective LCD controller, an ALR-1400 from Digital View, which has some form of overlay control on the onboard Genesis controller chip. By doing this, I want to retain all existing functionality on 1 LCD, instead of having 2.....would make for a much cleaner solution. I am also finalizing the daughterboard PCB that will fit between the existing ICC pushbuttons, and mount directly to the CAN-AVR - then off to the PCB manufacturers to make a prototype or 2. So, apologies if progress seems slow, guys - I will try and spend more time on this, and get something positive out soon - I'm burning for us to start on the microcode, and have mostly all the PIDs available to start with porgramming and testing. I have a small sample programming running in the AVR, pulsing an LED on/off at faster or slower rates, depending on a pushbutton selection, so it's working fine. Do anyone here have some contacts that can get me the schematic on the factory TFT LCD controller board - it seems Sumitomo made this for Ford, and I'm hoping to find the schematic from some insiders..... Will make my job a lot easier. If you want to remain anonymous, please PM me, I will keep it highly confidential. Kind regards, Beanie
  20. Who, me? Hehe, good one, though I wouldn't do it.....
  21. You can always leave it at my place for the weekend though, I'm game enough I don't mind the physical dimensions though, hopefully the electrical connector is in the exact same position.....pushbuttons etc I can hardwire to my existing ICC electronics, if need be.... If you hear anything, please let me know, Tab....
  22. Hello Guys, As most of you are aware, I am fitting a decent carputer setup in my BF F6 Tornado, but am having some issues with the LCD intergration into the ICC fascia. Since I've started, the FG's materialized out of thin air, and I really like the looks (and more specifically, positioning) of the ICC unit, and LCD display. Having the LCD at this location opens up many doors. Ok, I know I will need the evaporator/aircon box or whatever it's called underneath the dash, the dashboard itself, center console et al. What I need to know if this will fit into the BF Ute? Second question, anyone aware of any changes in the electrical connection(s) on the ICC to the original bulkhead connector? Otyherwise I will retrofit my ICC electronics to the new fascia. Looking forward to your replies. Best regards, MrBean
  23. Here you go, Mate: Fine Aluminium Paint code 920 Dulon
  24. Hey TM, Yes, thanx! Appreciated Been travelling a bit this last few days due to work committments, but finally back in town. Time to go on with this.
  25. @ Danny: Hey, good linky there, the guys that did those displays (although it's way to busy for me) did a great job - the problem I have with digit(al) displays are that it's more difficult to process the data than analogue needles. But, all credit to this guy, very well done. But, we won't be touching on most of what he did, our frontends will be doing all that - incl TPMS, GPS, OBD-II, and normal carputing stuff like MP3's, movies, etc..... For now, I like to keep the instrument-cluster analog, especially with way north of 360rwkw's, you just don't have time to gawk at the gauges. Anyway, Tree Monkey have posted the guinea-pig ICC for us, thanx TM, once I receive it, we can start in all earnest. Chat to you all soon. Br, Beanie.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.