Stap 4: Hier is programma voor arduino
#define dummyData 0xAA
#define RDY 75 #define NRDY 76
Const int _MISO = 4; Const int _MOSI = 5; Const int _CLK = 3; Const int eerste = 2;
/ * Variabele definitie blok * /
bytegegevens; byte AL, AH; 16-bits adres byte lockByte; insluiten lock bits hier byte zucht, SigL; Handtekening Bytes
void setup {pinMode (_MISO, INPUT); pinMode (_MOSI, OUTPUT); pinMode (_CLK, OUTPUT); pinMode (RST, uitvoer); Serial.begin(115200); afhankelijk van de instelling van de host-PC
}
void loop {tijdje (! Serial.available()); wachten op karakter als (Serial.available() > 0) schakelen (Serial.read()) {kast 'p': Serial.write(progEnable()); break; case "r": readProgmem(); Serial.write(Data); breken; geval 'a': tijdje (! Serial.available()); AL = Serial.read(); breken; Case "A": tijdje (! Serial.available()); AH = Serial.read(); breken; geval zou ': tijdje (! Serial.available()); gegevens = Serial.read(); breken; geval van ': AH = 0; AL = 0; Zucht = readSign(); Serial.write(SigH); breken; geval van ': AH = 2; AL = 0; SigL = readSign(); Serial.write(SigL); AH = 1; AL = 0; SigL = readSign(); Serial.write(SigL); breken; Lees SigL case ' o ': digitalWrite (RST, 1); break; Case "c": digitalWrite (RST, 0); break; geval "e": eraseChip(); Serial.write(RDY); breken; geval 'j': breken; geval 'w': writeProgmem(); breken; }
}
unsigned char SendSPI (unsigned char gegevens) {uint8_t retval = 0; uint8_t intData = gegevens; int t; voor (int ctr = 0; ctr < 7; ctr ++) {als (intData & 0x80) digitalWrite(_MOSI,1); anders digitalWrite(_MOSI,0);
digitalWrite(_CLK,1); delayMicroseconds(1);
t = digitalRead(_MISO); digitalWrite(_CLK,0);
Als (t) retval | = 1; anders retval & = 0xFE; RetVal << = 1; intData << = 1; delayMicroseconds(1); }
Als (intData & 0x80) digitalWrite(_MOSI,1); anders digitalWrite(_MOSI,0); digitalWrite(_CLK,1); delayMicroseconds(1);
t = digitalRead(_MISO); digitalWrite(_CLK,0); Als (t) retval | = 1; anders retval & = 0xFE;
Return retval; }
byte progEnable() {SendSPI(0xAC); SendSPI(0x53); SendSPI(dummyData); Return SendSPI(dummyData); }
VOID eraseChip() {SendSPI(0xAC); SendSPI(0x9F); SendSPI(dummyData); SendSPI(dummyData); delay(520); }
ongeldig readProgmem() {}
SendSPI(0x20); SendSPI(AH); SendSPI(AL); gegevens = SendSPI(dummyData); }
VOID writeProgmem() {SendSPI(0x40); SendSPI(AH); SendSPI(AL); SendSPI(data); }
VOID writeLockBits() {SendSPI(0xAC); SendSPI(lockByte); SendSPI(dummyData); SendSPI(dummyData); }
VOID readLockBits() {SendSPI(0x24); SendSPI(dummyData); SendSPI(dummyData); lockByte = SendSPI(dummyData); }
byte readSign() {SendSPI(0x28); SendSPI(AH); SendSPI(AL); Return SendSPI(dummyData); }