Сам на СИ программируешь? или просил кого? Ох как нужна была помощь в этом деле...
Да это все читал но я просто электрик, и как это все запрограммировать ума не хватает, да и с английским только через переводчик. Говорила мама учи иняз сынок...
Я программированием то начал заниматься, когда Фрол про ALDLdroid рассказал, как он его подключил. Нашел на просторах инета в америке программу для чтения GM протокола на скорости 8192 бод, и начал разбираться и пытаться запустить это дело. Получилось на 8192 достаточно быстро все запустить. Подумал что до кучи можно попробовать и 160 бод реализовать. Но так как 3.1 у меня нет, то все делали с Иваном дистанционно. Я делал блок, программировал и отправлял ему, он проверял и говорил результат. Короче ип@лись долго. В итоге из 5-7 вариантов один у нас заработал, причем стабильно начинал работать при подключении, не требовалось ни каких манипуляций для синхронизации. Но в конце концов этот экземпляр "подпалили" и больше повторить не смогли. Видимо реализация самой платы ардуино про мини какую то вносила коррективу, (платы были разные по конструктиву).
Находил скетчи для 160 бод подключенные на прерывания, но так и не смог заставить работать БТ на 3.1, да и утомила пересылка туда сюда.
ender11 писал(а):соотв. надо уменьшить ширину импульса, которым кодируется "1", чтобы uart его принял.
Это я уже понял, посмотрел код. Если честно то как баран на новые ворота...
Половину не "вкуриваю", мне для понимания необходимо как минимум все перевести на ардуиновский формат, а сделать это на все 100% так и не смог.
Вот код для Ардуино про мини 328/16Мн/5V На данном сайте его больше нет, после того как я пытался связаться с автором, он все связанное с этим почистил... на вопросы не ответил.
- Код: Выделить всё
// ALDL_BlueTooth_Reapeater 8192 baud
//
// Mike Waldron 2013
// http://www.xm381.com/xm381/ALDL.html has ALDL info and documentation
//
// This Arduino sketch will recieve, via bluetooth, ALDL requests (8192 baud only) from programs like ALDLdroid or TunerPro
// and transmit the responeses from the ECU back.
// ***** Hardware Config *****
//Status LEDs
#define redled 4
#define greenled 3
#define blueled 2
//HC05 bluetooth transceiver (5, 2, 4, 3) key, state, rx, tx
#define Key 8
#define RxD 7
#define TxD 6
#define State 5 //PIO11 - reset
#include <SoftwareSerial.h>
SoftwareSerial BluetoothSerial(RxD, TxD); // RX, TX
//ALDL
#define ALDLSerial Serial
// ***** Program Setup *****
void setup() {
ALDLSerial.begin(8192);
BluetoothSerial.begin(9600);
// ***** setup BlueTooth *****
pinMode(State, INPUT);
pinMode(Key, INPUT);
// ***** LEDs *****
pinMode(redled, OUTPUT);
pinMode(greenled, OUTPUT);
pinMode(blueled, OUTPUT);
LedColor(1);
delay(1000);
LedColor(2);
delay(1000);
LedColor(3);
delay(1000);
}
// ***** Main Loop *****
void loop() {
//paired
if (digitalRead(State) == HIGH) {
LedColor(3);
{
if (BluetoothSerial.available()) { // retrieve ALDL request data from PC in buffer, if any
LedColor(1);
while(BluetoothSerial.available()){ // empty serial buffer
ALDLSerial.write(BluetoothSerial.read());
}
}
if (ALDLSerial.available()) { // retrieve ALDL response data from ECU in buffer, if any
LedColor(2);
while(ALDLSerial.available()){ // empty serial buffer
BluetoothSerial.write (ALDLSerial.read());
}
}
}
}
//not paired
else{
LedColor(2);
delay(10);
}
}
// ***** LED *****
void LedColor(byte color){
switch (color){
//Off
case 0:
digitalWrite(redled, LOW);
digitalWrite(greenled, LOW);
digitalWrite(blueled, LOW);
//Red
case 1:
digitalWrite(redled, HIGH);
digitalWrite(greenled, LOW);
digitalWrite(blueled, LOW);
return;
//Green
case 2:
digitalWrite(redled, LOW);
digitalWrite(greenled, HIGH);
digitalWrite(blueled, LOW);
return;
//Blue
case 3:
digitalWrite(redled, LOW);
digitalWrite(greenled, LOW);
digitalWrite(blueled, HIGH);
return;
}
}
Возникает логичный вопрос как твой кусок для 160 бод запихнуть в этот для 8192. По аналогии передавать 160 у меня не получилось (я не утверждаю что нельзя (один раз то все вышло), возможно нужно только указать на стоп бит, тем самым организовать "синхронизацию") В сущ. схеме выводы работающие с прерываниями заняты под трехцветный светодиод (его можно выкинуть, или передвинуть на другие выводы. У меня сейчас разведено все по другому, это оригинал с американского сайта).
Если можешь помочь будем рады, ибо у нас появится свой модуль ALDL-ВТ для всех наших двигателей...
Никогда не езди быстрее, чем может летать твой ангел-хранитель.