Общение с смарткартой на ардуино. Не получается прочитать весь 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 байта потерялось любые идеи?


Ответы (0 шт):