Общение с смарткартой на ардуино. Не получается прочитать весь atr?
Код используемый для чтения:
#include <SoftwareSerial.h>
#include <directTimers.h>
#define VCC 4
#define RST 5
#define CLK 9
#define IO 2
SoftwareSerial io(2, 2);
void setup() {
Serial.begin(115200);
Serial.println("Init");
pinMode(VCC, OUTPUT);
pinMode(RST, OUTPUT);
pinMode(CLK, OUTPUT);
pinMode(IO, INPUT);
io.begin(2688); //при асинхронном режиме spd = 372/CLK CLK=1000000Hz
//clock settings
TIMER1_setClock(PRESCALER_1);
TIMER1_setMode(CTC_MODE);
TIMER1_COMPA_mode(TOGGLE_PIN);
//TIMER1_COMPA_setValue(7); set 1Mhz clock
Serial.println("Init done");
}
void loop() {
if (Serial.available()){
if (Serial.read() == 's'){
Serial.println("Starting");
start();
}
}
}
void start(){
warm_reset();
while (1){
if (io.available()){
Serial.print(io.read());
Serial.println();
}
}
}
void warm_reset(){
digitalWrite(RST, LOW);
digitalWrite(VCC, HIGH);
TIMER1_COMPA_setValue(7); // starting 1mhz clock
digitalWrite(RST, HIGH);
digitalWrite(RST, LOW);
delayMicroseconds(5400);
digitalWrite(RST, HIGH);
}
после горячего сброса получаю байты:
3B 68 00 07 3C 84 00 09 00
при парсинге на сайте получаю сообщение что atr не полон и 3 байта потерялось любые идеи?