Lukuyrityksiä
Noh.. Nyt on päästy siihen vaiheeseen, että on yritetty lukea 7052:sta.
Ennen dummy bittejä AUDRST käytetty alahaalla neljän kellopulssin aja ja nostettu ylös.(onko oikein?)
Dummy bitit ja 1010 kirjoitettu....
Jää odottamaan Ready flag:ia sitä ei tule tulee vain bit3=0, bit2=0, bit1=1, bit0=1 eli 0011 ????
Mitattu että kun pysähtyy
Dir=1
AudSync=0 (eikös nosteta ylös vasta Ready flag tultua ?)
AudRst=1
helppiä, mistä alkaa etsimään vikaa...
Ennen dummy bittejä AUDRST käytetty alahaalla neljän kellopulssin aja ja nostettu ylös.(onko oikein?)
Dummy bitit ja 1010 kirjoitettu....
Jää odottamaan Ready flag:ia sitä ei tule tulee vain bit3=0, bit2=0, bit1=1, bit0=1 eli 0011 ????
Mitattu että kun pysähtyy
Dir=1
AudSync=0 (eikös nosteta ylös vasta Ready flag tultua ?)
AudRst=1
helppiä, mistä alkaa etsimään vikaa...
Hieno homma.
Myös mulla antoi pitkään tuota samaa kunnes löysin manuaalista että 0011 viittaisi siihen että RAM mode ei mene päälle. Tuo AUDRST pitää ajaa siinä alussa muutaman kellopulssin ajan niin että se vastuksella Vcc:hen kiinnitetty signaali on varmasti päällä tai kytketään viimeistään samaan aikaan päälle kun AUDRST menee alas.
Oletko katsonut skoopilla että meneekö pulssit interfacen lävitse ?
Tässä vielä varmuuden vuoksi toi mun toimiva softanpätkä niin että näet mitä mahdollisesti on eroja... (täähän löytyy softa-arkistosta, mutta voi olla haastavaa etsiä).
unsigned int GetAUDData(unsigned int MemAddr) // Get data from the MemAddr
{
volatile unsigned int counter=0;
volatile long result=0;
volatile char errormsg[]=" ";
volatile long nibble = 0;
// show that the process has started with a green led
LED0=LED_ON;
//routine that sets lines to default prior to starting the process
PBinitialize();
// set signals to default for start
DIR = signal_HIGH;
AUDCK = signal_HIGH;
AUDSYNC = signal_HIGH;
DIR = signal_LOW;
//routine to set RAM mode
AUDRST=signal_LOW;
for (counter=0;counter<=5;counter++) clockpulse();
AUDRST=signal_HIGH;
for (counter=0;counter<=5;counter++) clockpulse();
//set audsync to indicate that ecu will soon start receiving data
AUDSYNC = signal_LOW;
// send dummybyte
AUDDATA0 = 0;
AUDDATA1 = 0;
AUDDATA2 = 0;
AUDDATA3 = 0;
clockpulse();
//send command to read longword is 1010 / read byte is 1000
//if changed remember to set also the reading function to byte or longword
AUDDATA3 = 1;
AUDDATA2 = 0;
AUDDATA1 = 1;
AUDDATA0 = 0;
clockpulse();
// write the MemAddr to the AUD line
for(counter=0;counter<8;counter++) // process total 32 bits, 4 bits at a time
{
AUDDATA0 = (MemAddr & 0x01);
AUDDATA1 = ((MemAddr & 0x02)>>1);
AUDDATA2 = ((MemAddr & 0x04)>>2);
AUDDATA3 = ((MemAddr & 0x08)>>3);
clockpulse();
MemAddr >>=4;
}
//change the port direction and set AUD interface direction signal to read
PBsetinput();
DIR = signal_HIGH;
//loop until cpu sends ready byte %0001 ...
counter=0;
while (!((AUDDATA3==0)&(AUDDATA2==0)&(AUDDATA1==0)&(AUDDATA0==1))&(counter++<15))
{
clockpulse();
if (counter>=10){
LED3=LED_ON; // put on a red led to indicate an error in conversion
text_write("<timeout error>");
}}
// AUD line confirmed its ready lets continue, start reading after setting AUDSYNC high
AUDSYNC = signal_HIGH;
clockpulse();
//read out longword (8) 4bit nibbles of data requested
result=0;
for(counter=0;counter<8;counter++)
{
nibble = AUDDATA3<<3;
nibble += AUDDATA2<<2;
nibble += AUDDATA1<<1;
nibble += AUDDATA0<<0;
result += (nibble<<(counter*4));
clockpulse();
}
LED0=LED_OFF;
return (result); // return the memory contents of given address
}
Edited By PetriK on 1196019625
Myös mulla antoi pitkään tuota samaa kunnes löysin manuaalista että 0011 viittaisi siihen että RAM mode ei mene päälle. Tuo AUDRST pitää ajaa siinä alussa muutaman kellopulssin ajan niin että se vastuksella Vcc:hen kiinnitetty signaali on varmasti päällä tai kytketään viimeistään samaan aikaan päälle kun AUDRST menee alas.
Oletko katsonut skoopilla että meneekö pulssit interfacen lävitse ?
Tässä vielä varmuuden vuoksi toi mun toimiva softanpätkä niin että näet mitä mahdollisesti on eroja... (täähän löytyy softa-arkistosta, mutta voi olla haastavaa etsiä).
unsigned int GetAUDData(unsigned int MemAddr) // Get data from the MemAddr
{
volatile unsigned int counter=0;
volatile long result=0;
volatile char errormsg[]=" ";
volatile long nibble = 0;
// show that the process has started with a green led
LED0=LED_ON;
//routine that sets lines to default prior to starting the process
PBinitialize();
// set signals to default for start
DIR = signal_HIGH;
AUDCK = signal_HIGH;
AUDSYNC = signal_HIGH;
DIR = signal_LOW;
//routine to set RAM mode
AUDRST=signal_LOW;
for (counter=0;counter<=5;counter++) clockpulse();
AUDRST=signal_HIGH;
for (counter=0;counter<=5;counter++) clockpulse();
//set audsync to indicate that ecu will soon start receiving data
AUDSYNC = signal_LOW;
// send dummybyte
AUDDATA0 = 0;
AUDDATA1 = 0;
AUDDATA2 = 0;
AUDDATA3 = 0;
clockpulse();
//send command to read longword is 1010 / read byte is 1000
//if changed remember to set also the reading function to byte or longword
AUDDATA3 = 1;
AUDDATA2 = 0;
AUDDATA1 = 1;
AUDDATA0 = 0;
clockpulse();
// write the MemAddr to the AUD line
for(counter=0;counter<8;counter++) // process total 32 bits, 4 bits at a time
{
AUDDATA0 = (MemAddr & 0x01);
AUDDATA1 = ((MemAddr & 0x02)>>1);
AUDDATA2 = ((MemAddr & 0x04)>>2);
AUDDATA3 = ((MemAddr & 0x08)>>3);
clockpulse();
MemAddr >>=4;
}
//change the port direction and set AUD interface direction signal to read
PBsetinput();
DIR = signal_HIGH;
//loop until cpu sends ready byte %0001 ...
counter=0;
while (!((AUDDATA3==0)&(AUDDATA2==0)&(AUDDATA1==0)&(AUDDATA0==1))&(counter++<15))
{
clockpulse();
if (counter>=10){
LED3=LED_ON; // put on a red led to indicate an error in conversion
text_write("<timeout error>");
}}
// AUD line confirmed its ready lets continue, start reading after setting AUDSYNC high
AUDSYNC = signal_HIGH;
clockpulse();
//read out longword (8) 4bit nibbles of data requested
result=0;
for(counter=0;counter<8;counter++)
{
nibble = AUDDATA3<<3;
nibble += AUDDATA2<<2;
nibble += AUDDATA1<<1;
nibble += AUDDATA0<<0;
result += (nibble<<(counter*4));
clockpulse();
}
LED0=LED_OFF;
return (result); // return the memory contents of given address
}
Edited By PetriK on 1196019625
Do dii..
Jatkoin sitä resetin alhaalla olo aikaa ja jo alko bittejä tulla, mutta nyt sieltä tulee 32 kertaa 00000400 ja sitten pysähtyy siihen Ready flag kohtaan ja on 0101 eli se bus
Lisää ehdotuksia pyytää hän...
Edit:
Antaa kirjoittaa osoitteet 00000080 saakka ja sit pysähyyy, koitin osoite+4 ja osoite+1 samaan kohtaan pysähtyy.
Ei näköjään tykkää, että luetaan osoitteesta 00000080 heh..
Edited By timo3 on 1196023393
Jatkoin sitä resetin alhaalla olo aikaa ja jo alko bittejä tulla, mutta nyt sieltä tulee 32 kertaa 00000400 ja sitten pysähtyy siihen Ready flag kohtaan ja on 0101 eli se bus
Lisää ehdotuksia pyytää hän...

Edit:
Antaa kirjoittaa osoitteet 00000080 saakka ja sit pysähyyy, koitin osoite+4 ja osoite+1 samaan kohtaan pysähtyy.
Ei näköjään tykkää, että luetaan osoitteesta 00000080 heh..
Edited By timo3 on 1196023393
Veikkaan kahta vaihtoehtoa.
Ensiksi että sun osoitteen syöttöalgoritmi ei toimi. Jos toi tulee 32 kertaa, niin silloin olet onnistunut ensimmäisen longword:n lukemisessa, mutta se tulee ulos 32 kertaa joten yrität todennäköisesti lukea jotain väärää osoitetta seuraavaksi.
Toinen vaihtoehto on että sun kellopulssi on ihan pielessä. Eli ECU osaa käsitellä nollat mutta sitten ei muita.
Flashin eka tavu 0x00000000 pitäisi sisältää 0x00000400
Seuraava osoite pitäisi olla
0x00000004 ja siinä pitäisi olla osoite 0xFFFFxxxx
Sitten pitäisi tulla
0x00000008 ja sen pitäisi taas olla 0x00000400
ja taas
0x0000000A ja siinä pitäisi olla osoite 0xFFFFxxxx
Sitten pitäisi tulla monta kertaa sama osoite, eli ns. virhetilanteen hyppyvektori.
Kyllä se siitä... olet jo voiton puolella.
Ensiksi että sun osoitteen syöttöalgoritmi ei toimi. Jos toi tulee 32 kertaa, niin silloin olet onnistunut ensimmäisen longword:n lukemisessa, mutta se tulee ulos 32 kertaa joten yrität todennäköisesti lukea jotain väärää osoitetta seuraavaksi.
Toinen vaihtoehto on että sun kellopulssi on ihan pielessä. Eli ECU osaa käsitellä nollat mutta sitten ei muita.
Flashin eka tavu 0x00000000 pitäisi sisältää 0x00000400
Seuraava osoite pitäisi olla
0x00000004 ja siinä pitäisi olla osoite 0xFFFFxxxx
Sitten pitäisi tulla
0x00000008 ja sen pitäisi taas olla 0x00000400
ja taas
0x0000000A ja siinä pitäisi olla osoite 0xFFFFxxxx
Sitten pitäisi tulla monta kertaa sama osoite, eli ns. virhetilanteen hyppyvektori.
Kyllä se siitä... olet jo voiton puolella.
Nyt olis ECU:ta luettu muutaman kerran eikä virheitä ole tullut ja mikä parasta pyörä lähtee vielä käyntiin.
Tämän näköistä Dataa sieltä alko tulemaan
00000400FFFFABA000000400FFFFABA000002B9800002B9800002B9800002B98
00002B9800002B9800002B98000012E00000133200002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
0000136000001394000013C8000013FC00002B9800002B9800002B9800002B98
0000144C00002B980000148400002B98000014BC00002B98000014F400002B98
Polttoaine ja sytytys karttojakin sieltä pikaisella silmäyksellä löytyi.
http://www.fotopankki.fi/1234567/kuva/1362278267174916
Nyt sitten muuta, kuin kaivelemaan kaikki kartat esiin sieltä.
Tämän näköistä Dataa sieltä alko tulemaan
00000400FFFFABA000000400FFFFABA000002B9800002B9800002B9800002B98
00002B9800002B9800002B98000012E00000133200002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
00002B9800002B9800002B9800002B9800002B9800002B9800002B9800002B98
0000136000001394000013C8000013FC00002B9800002B9800002B9800002B98
0000144C00002B980000148400002B98000014BC00002B98000014F400002B98
Polttoaine ja sytytys karttojakin sieltä pikaisella silmäyksellä löytyi.
http://www.fotopankki.fi/1234567/kuva/1362278267174916
Nyt sitten muuta, kuin kaivelemaan kaikki kartat esiin sieltä.
Näyttää aikalailla oikealta tuo data.
Laitatko koko ladatun koodin ja myös sun pic ohjelman jakoon niin päästään vertailemaan ja oppimaan...
Noi kartat löytyy parhaiten tuolla analyze ohjelmalla. Kelaat sillä kahden ensimmäisen kartan alkuun ja syötät luvut exceliin. Excel laskee x-akselin ja y-akselin ja loput kartat. Noi löytyy tietysti tuolta download alueelta...
Voisin tutustua tuohon samaan editointisoftaan mitä säkin käytät. Mistäs se onkaan ladattavissa.
Ajoin tänään idapro:hon sisään noi busan kartat ja muutaman muunkin alirutiinin nimen. Alkaa vaikuttamaan siltä että pienellä opiskelulla tuokin RISC voisi tulla jonkin verran tutuksi.
Isoin homma on löytää nuo kaikki erilliset portit mitä käytetään I/O:hon.
Edited By PetriK on 1196232470
Laitatko koko ladatun koodin ja myös sun pic ohjelman jakoon niin päästään vertailemaan ja oppimaan...
Noi kartat löytyy parhaiten tuolla analyze ohjelmalla. Kelaat sillä kahden ensimmäisen kartan alkuun ja syötät luvut exceliin. Excel laskee x-akselin ja y-akselin ja loput kartat. Noi löytyy tietysti tuolta download alueelta...
Voisin tutustua tuohon samaan editointisoftaan mitä säkin käytät. Mistäs se onkaan ladattavissa.
Ajoin tänään idapro:hon sisään noi busan kartat ja muutaman muunkin alirutiinin nimen. Alkaa vaikuttamaan siltä että pienellä opiskelulla tuokin RISC voisi tulla jonkin verran tutuksi.
Isoin homma on löytää nuo kaikki erilliset portit mitä käytetään I/O:hon.
Edited By PetriK on 1196232470
Tässä on se koodi, jolla luku onnistui. Resetointia on jatkettu muutamalla kellopulssilla ja tiedot lähetetään PC:lle 32 bitin sarjassa, eikä neljän bitin, niinkuin alussa.
Device 16F628
DECLARE XTAL 20
DECLARE CCP1.1 PORTB.3
CONFIG WDT_OFF , HS_OSC , PWRTE_ON, lvp_off
SYMBOL AuData3 = PORTB.7
SYMBOL AuData2 = PORTB.4
SYMBOL AuData1 = PORTB.6
SYMBOL AuData0 = PORTB.5
SYMBOL SerInput = PORTB.1
SYMBOL SerOutput = PORTB.2
SYMBOL AudRst = PORTB.0
SYMBOL Dir = PORTA.0
SYMBOL Audck_pin = PORTA.1
SYMBOL AudSynk = PORTA.3
dim Write_Byte as word
dim Read_Byte as word
dim AudData3_0 as byte
dim AudData7_4 as byte
dim AudData11_8 as byte
dim AudData15_12 as byte
dim AudData19_16 as byte
dim AudData23_20 as byte
dim AudData27_24 as byte
dim AudData31_28 as byte
Dim x as byte
cmcon = 7
Input Audck_pin
intcon.7 = 0
vrcon = 0
trisb = %11100011
pr2 = 255
ccp1con = %00001100
t2con = %00000101
CCPR1L = 127
output dir
output AudSynk
output AudRst
Input AuData3
Input AuData3
Input AuData2
Input AuData1
Input AuData0
Input Audck_pin
alku:
SerInput1:
Serin SerInput , 6 , [Write_Byte]
if Write_Byte = 75 then Write_Byte = "K"
serout SerOutput, 6 , [Write_Byte]
if Write_Byte = 75 then goto SerInput2
goto SerInput1
SerInput2:
FOR x = 1 to 8
Serin SerInput , 6 , [Write_Byte]
if Write_Byte = 75 then serout SerOutput, 6 , ["V"]
if Write_Byte = 75 then goto SerInput1
if Write_Byte = 48 then Write_Byte = 0
if Write_Byte = 49 then Write_Byte = 1
if Write_Byte = 50 then Write_Byte = 2
if Write_Byte = 51 then Write_Byte = 3
if Write_Byte = 52 then Write_Byte = 4
if Write_Byte = 53 then Write_Byte = 5
if Write_Byte = 54 then Write_Byte = 6
if Write_Byte = 55 then Write_Byte = 7
if Write_Byte = 56 then Write_Byte = 8
if Write_Byte = 57 then Write_Byte = 9
if Write_Byte = 65 then Write_Byte = 10
if Write_Byte = 66 then Write_Byte = 11
if Write_Byte = 67 then Write_Byte = 12
if Write_Byte = 68 then Write_Byte = 13
if Write_Byte = 69 then Write_Byte = 14
if Write_Byte = 70 then Write_Byte = 15
IF x = 8 then AudData3_0 = Write_Byte
IF x = 7 then AudData7_4 = Write_Byte
IF x = 6 then AudData11_8 = Write_Byte
IF x = 5 then AudData15_12 = Write_Byte
IF x = 4 then AudData19_16 = Write_Byte
IF x = 3 then AudData23_20 = Write_Byte
IF x = 2 then AudData27_24 = Write_Byte
IF x = 1 then AudData31_28 = Write_Byte
next
output AuData3
output AuData3
output AuData2
output AuData1
output AuData0
GOSUB Audck
high Dir
high AudSynk
low Dir
GOSUB Audck
LOW AudRst
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
HIGH AudRst
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
low AudSynk
LOW AuData3
LOW AuData2
LOW AuData1
LOW AuData0
GOSUB Audck
high AuData3
LOW AuData2
high AuData1
LOW AuData0
For x = 1 to 8
if x = 1 then Write_Byte = AudData3_0
if x = 2 then Write_Byte = AudData7_4
if x = 3 then Write_Byte = AudData11_8
if x = 4 then Write_Byte = AudData15_12
if x = 5 then Write_Byte = AudData19_16
if x = 6 then Write_Byte = AudData23_20
if x = 7 then Write_Byte = AudData27_24
if x = 8 then Write_Byte = AudData31_28
gosub Audck
if Write_Byte & 8 = 8 then high AuData3
if Write_Byte & 8 = 0 then low AuData3
if Write_Byte & 4 = 4 then high AuData2
if Write_Byte & 4 = 0 then low AuData2
if Write_Byte & 2 = 2 then high AuData1
if Write_Byte & 2 = 0 then low AuData1
if Write_Byte & 1 = 1 then high AuData0
if Write_Byte & 1 = 0 then low AuData0
next
GOSUB Audck
high Dir
input AuData3
input AuData2
input AuData1
input AuData0
Ready_Flaf:
GOSUB Audck
if AuData3 = 1 then goto Ready_Flaf
if AuData2 = 1 then goto Ready_Flaf
if AuData1 = 1 then goto Ready_Flaf
if AuData0 = 0 then goto Ready_Flaf
GOSUB Audck
high AudSynk
For x = 1 to 8
GOSUB Audck
Read_Byte = 0
Read_Byte = Read_Byte << 1
IF AuData3 = 1 THEN Read_Byte = Read_Byte + 1
Read_Byte = Read_Byte << 1
IF AuData2 = 1 THEN Read_Byte = Read_Byte + 1
Read_Byte = Read_Byte << 1
IF AuData1 = 1 THEN Read_Byte = Read_Byte + 1
Read_Byte = Read_Byte << 1
IF AuData0 = 1 THEN Read_Byte = Read_Byte + 1
if Read_Byte = 0 then Read_Byte = "0"
if Read_Byte = 1 then Read_Byte = "1"
if Read_Byte = 2 then Read_Byte = "2"
if Read_Byte = 3 then Read_Byte = "3"
if Read_Byte = 4 then Read_Byte = "4"
if Read_Byte = 5 then Read_Byte = "5"
if Read_Byte = 6 then Read_Byte = "6"
if Read_Byte = 7 then Read_Byte = "7"
if Read_Byte = 8 then Read_Byte = "8"
if Read_Byte = 9 then Read_Byte = "9"
if Read_Byte = 10 then Read_Byte = "A"
if Read_Byte = 11 then Read_Byte = "B"
if Read_Byte = 12 then Read_Byte = "C"
if Read_Byte = 13 then Read_Byte = "D"
if Read_Byte = 14 then Read_Byte = "E"
if Read_Byte = 15 then Read_Byte = "F"
IF x = 1 then AudData3_0 = Read_Byte
IF x = 2 then AudData7_4 = Read_Byte
IF x = 3 then AudData11_8 = Read_Byte
IF x = 4 then AudData15_12 = Read_Byte
IF x = 5 then AudData19_16 = Read_Byte
IF x = 6 then AudData23_20 = Read_Byte
IF x = 7 then AudData27_24 = Read_Byte
IF x = 8 then AudData31_28 = Read_Byte
next
serout SerOutput, 6 , [AudData31_28, AudData27_24, AudData23_20, AudData19_16, AudData15_12, AudData11_8, AudData7_4, AudData3_0,"L"]
goto alku
Audck:
If Audck_pin = 0 then goto Audck
Audck1:
If Audck_pin = 1 then goto Audck1
RETURN
end
Edited By timo3 on 1196248114
Device 16F628
DECLARE XTAL 20
DECLARE CCP1.1 PORTB.3
CONFIG WDT_OFF , HS_OSC , PWRTE_ON, lvp_off
SYMBOL AuData3 = PORTB.7
SYMBOL AuData2 = PORTB.4
SYMBOL AuData1 = PORTB.6
SYMBOL AuData0 = PORTB.5
SYMBOL SerInput = PORTB.1
SYMBOL SerOutput = PORTB.2
SYMBOL AudRst = PORTB.0
SYMBOL Dir = PORTA.0
SYMBOL Audck_pin = PORTA.1
SYMBOL AudSynk = PORTA.3
dim Write_Byte as word
dim Read_Byte as word
dim AudData3_0 as byte
dim AudData7_4 as byte
dim AudData11_8 as byte
dim AudData15_12 as byte
dim AudData19_16 as byte
dim AudData23_20 as byte
dim AudData27_24 as byte
dim AudData31_28 as byte
Dim x as byte
cmcon = 7
Input Audck_pin
intcon.7 = 0
vrcon = 0
trisb = %11100011
pr2 = 255
ccp1con = %00001100
t2con = %00000101
CCPR1L = 127
output dir
output AudSynk
output AudRst
Input AuData3
Input AuData3
Input AuData2
Input AuData1
Input AuData0
Input Audck_pin
alku:
SerInput1:
Serin SerInput , 6 , [Write_Byte]
if Write_Byte = 75 then Write_Byte = "K"
serout SerOutput, 6 , [Write_Byte]
if Write_Byte = 75 then goto SerInput2
goto SerInput1
SerInput2:
FOR x = 1 to 8
Serin SerInput , 6 , [Write_Byte]
if Write_Byte = 75 then serout SerOutput, 6 , ["V"]
if Write_Byte = 75 then goto SerInput1
if Write_Byte = 48 then Write_Byte = 0
if Write_Byte = 49 then Write_Byte = 1
if Write_Byte = 50 then Write_Byte = 2
if Write_Byte = 51 then Write_Byte = 3
if Write_Byte = 52 then Write_Byte = 4
if Write_Byte = 53 then Write_Byte = 5
if Write_Byte = 54 then Write_Byte = 6
if Write_Byte = 55 then Write_Byte = 7
if Write_Byte = 56 then Write_Byte = 8
if Write_Byte = 57 then Write_Byte = 9
if Write_Byte = 65 then Write_Byte = 10
if Write_Byte = 66 then Write_Byte = 11
if Write_Byte = 67 then Write_Byte = 12
if Write_Byte = 68 then Write_Byte = 13
if Write_Byte = 69 then Write_Byte = 14
if Write_Byte = 70 then Write_Byte = 15
IF x = 8 then AudData3_0 = Write_Byte
IF x = 7 then AudData7_4 = Write_Byte
IF x = 6 then AudData11_8 = Write_Byte
IF x = 5 then AudData15_12 = Write_Byte
IF x = 4 then AudData19_16 = Write_Byte
IF x = 3 then AudData23_20 = Write_Byte
IF x = 2 then AudData27_24 = Write_Byte
IF x = 1 then AudData31_28 = Write_Byte
next
output AuData3
output AuData3
output AuData2
output AuData1
output AuData0
GOSUB Audck
high Dir
high AudSynk
low Dir
GOSUB Audck
LOW AudRst
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
HIGH AudRst
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
GOSUB Audck
low AudSynk
LOW AuData3
LOW AuData2
LOW AuData1
LOW AuData0
GOSUB Audck
high AuData3
LOW AuData2
high AuData1
LOW AuData0
For x = 1 to 8
if x = 1 then Write_Byte = AudData3_0
if x = 2 then Write_Byte = AudData7_4
if x = 3 then Write_Byte = AudData11_8
if x = 4 then Write_Byte = AudData15_12
if x = 5 then Write_Byte = AudData19_16
if x = 6 then Write_Byte = AudData23_20
if x = 7 then Write_Byte = AudData27_24
if x = 8 then Write_Byte = AudData31_28
gosub Audck
if Write_Byte & 8 = 8 then high AuData3
if Write_Byte & 8 = 0 then low AuData3
if Write_Byte & 4 = 4 then high AuData2
if Write_Byte & 4 = 0 then low AuData2
if Write_Byte & 2 = 2 then high AuData1
if Write_Byte & 2 = 0 then low AuData1
if Write_Byte & 1 = 1 then high AuData0
if Write_Byte & 1 = 0 then low AuData0
next
GOSUB Audck
high Dir
input AuData3
input AuData2
input AuData1
input AuData0
Ready_Flaf:
GOSUB Audck
if AuData3 = 1 then goto Ready_Flaf
if AuData2 = 1 then goto Ready_Flaf
if AuData1 = 1 then goto Ready_Flaf
if AuData0 = 0 then goto Ready_Flaf
GOSUB Audck
high AudSynk
For x = 1 to 8
GOSUB Audck
Read_Byte = 0
Read_Byte = Read_Byte << 1
IF AuData3 = 1 THEN Read_Byte = Read_Byte + 1
Read_Byte = Read_Byte << 1
IF AuData2 = 1 THEN Read_Byte = Read_Byte + 1
Read_Byte = Read_Byte << 1
IF AuData1 = 1 THEN Read_Byte = Read_Byte + 1
Read_Byte = Read_Byte << 1
IF AuData0 = 1 THEN Read_Byte = Read_Byte + 1
if Read_Byte = 0 then Read_Byte = "0"
if Read_Byte = 1 then Read_Byte = "1"
if Read_Byte = 2 then Read_Byte = "2"
if Read_Byte = 3 then Read_Byte = "3"
if Read_Byte = 4 then Read_Byte = "4"
if Read_Byte = 5 then Read_Byte = "5"
if Read_Byte = 6 then Read_Byte = "6"
if Read_Byte = 7 then Read_Byte = "7"
if Read_Byte = 8 then Read_Byte = "8"
if Read_Byte = 9 then Read_Byte = "9"
if Read_Byte = 10 then Read_Byte = "A"
if Read_Byte = 11 then Read_Byte = "B"
if Read_Byte = 12 then Read_Byte = "C"
if Read_Byte = 13 then Read_Byte = "D"
if Read_Byte = 14 then Read_Byte = "E"
if Read_Byte = 15 then Read_Byte = "F"
IF x = 1 then AudData3_0 = Read_Byte
IF x = 2 then AudData7_4 = Read_Byte
IF x = 3 then AudData11_8 = Read_Byte
IF x = 4 then AudData15_12 = Read_Byte
IF x = 5 then AudData19_16 = Read_Byte
IF x = 6 then AudData23_20 = Read_Byte
IF x = 7 then AudData27_24 = Read_Byte
IF x = 8 then AudData31_28 = Read_Byte
next
serout SerOutput, 6 , [AudData31_28, AudData27_24, AudData23_20, AudData19_16, AudData15_12, AudData11_8, AudData7_4, AudData3_0,"L"]
goto alku
Audck:
If Audck_pin = 0 then goto Audck
Audck1:
If Audck_pin = 1 then goto Audck1
RETURN
end
Edited By timo3 on 1196248114
petrik joko olet yrittänyt kirjoittaa Flash:a k5 tai k6 ECU:sta?
Viittisitkö tarkistaa siitä k6 ECU:sta onko siinä MD0 ja MD2 toisiinsa yhteydessä.
Kawassa ne on vedetty yhteen, joten se rajoittaa tiettyihin modeihin pääsyä.
Ja meneekö se FWE suoraan liittimelle K6:ssa vai 8044:n kautta?
Oko sulla tietoa siitä ATU rekistereistä, palautuuko ne alkuperäisiin asetuksiin virrat sammuttaessa?
Viittisitkö tarkistaa siitä k6 ECU:sta onko siinä MD0 ja MD2 toisiinsa yhteydessä.
Kawassa ne on vedetty yhteen, joten se rajoittaa tiettyihin modeihin pääsyä.
Ja meneekö se FWE suoraan liittimelle K6:ssa vai 8044:n kautta?
Oko sulla tietoa siitä ATU rekistereistä, palautuuko ne alkuperäisiin asetuksiin virrat sammuttaessa?
Moi,
Sorry - En ole vielä ehtinyt aloittaa uudestaan kirjoitusprojektia. Oli eilen noi tyttären ylioppilasjuhlat ja se on vähän rajoittanut projektin levittämistä askarteluhuoneesta muille pöydille
Siitä on sen verran aikaa etten nyt suoraan muista miten noi signaalit on vakiona. Mutta jos käytät sitä mittauskaaviota jolla voi mitata miltä pinnojen arvojen pitäisi liittimessä näyttää niin sillä pääsee varmaan aika pitkälle.
Muistaakseni ATU pitää aina resetin jälkeen initialisoida, mutta soft ja hard reseteissä taisi olla joku ero. Löytynee hw manuaalista. ATU:a käsitelläään lähinnä ihan siinä alussa. Tuossa .idc tiedostossa on jonkin verran dokumentoitu tuota ATU:a.
Mä käytän vielä jonkin verran aikaa noihin karttoihin ennen kuin menen uudestaan ohjelmoimaan. RR:ltä tuli eilen jouluntoivotus viestissä joka sisälsi infoa että ms signaali tosiaankin on ns. karttojenvaihtosingaali. Ajattelin sen tarkistaa tänään.
Kirjoittelen tähän alla olevaan heti kun asia edistyy:
http://www.busanistit.org/foorumi....;t=4817
Sorry - En ole vielä ehtinyt aloittaa uudestaan kirjoitusprojektia. Oli eilen noi tyttären ylioppilasjuhlat ja se on vähän rajoittanut projektin levittämistä askarteluhuoneesta muille pöydille

Siitä on sen verran aikaa etten nyt suoraan muista miten noi signaalit on vakiona. Mutta jos käytät sitä mittauskaaviota jolla voi mitata miltä pinnojen arvojen pitäisi liittimessä näyttää niin sillä pääsee varmaan aika pitkälle.
Muistaakseni ATU pitää aina resetin jälkeen initialisoida, mutta soft ja hard reseteissä taisi olla joku ero. Löytynee hw manuaalista. ATU:a käsitelläään lähinnä ihan siinä alussa. Tuossa .idc tiedostossa on jonkin verran dokumentoitu tuota ATU:a.
Mä käytän vielä jonkin verran aikaa noihin karttoihin ennen kuin menen uudestaan ohjelmoimaan. RR:ltä tuli eilen jouluntoivotus viestissä joka sisälsi infoa että ms signaali tosiaankin on ns. karttojenvaihtosingaali. Ajattelin sen tarkistaa tänään.
Kirjoittelen tähän alla olevaan heti kun asia edistyy:
http://www.busanistit.org/foorumi....;t=4817