続・RC6502 Apple1 SBCをつくってみた

ロジアナの波形を改めて確認していたら、修正前では取りこぼしていたタイミングと同じ感じの場所を見つけたので比較してみた。
修正前
修正後
思った通りの波形になっていることを確認できた。

Arduinoのほうも少し手直ししている。
RC6502 Apple1 SBCからPCへの送信速度を少し早めるためにdelayをdelayMicrosecondsに変更して前後を入れ替えている。
前後の入れ替えはあまり意味はないかもだが。
また、「CR」を「CR」「LF」に変換する場所に不足があり、「CR」「LF」「CR」になっていたので、一文追加してある。

pia_communicator.ino 修正前

void serial_transmit() {
  digitalWrite(VIDEO_RDA, HIGH);

  if (digitalRead(VIDEO_DA) == HIGH) {
    char c = bridge.readPort(IO_VIDEO) & 127;
    debug_value("PIA TX", c, 10);
    digitalWrite(VIDEO_RDA, LOW);

    delay(12);
    send_ascii(c);
  }
}

void send_ascii(char c) {
  if (DEBUG >= 5) Serial.print("[");
  switch (c) {
    case 0x0d: Serial.println(); /* Replace CR with LF */
    default:
      Serial.print(c);
  }
  if (DEBUG >= 5) Serial.print("]");
}

pia_communicator.ino 修正後

void serial_transmit() {
  digitalWrite(VIDEO_RDA, HIGH);

  if (digitalRead(VIDEO_DA) == HIGH) {
    char c = bridge.readPort(IO_VIDEO) & 127;
    debug_value("PIA TX", c, 10);
    digitalWrite(VIDEO_RDA, LOW);

    send_ascii(c);
    delayMicroseconds(1500);
  }
}

void send_ascii(char c) {
  if (DEBUG >= 5) Serial.print("[");
  switch (c) {
    case 0x0d: 
      Serial.println(); /* Replace CR with LF */
      break;
    default:
      Serial.print(c);
  }
  Serial.flush();
  if (DEBUG >= 5) Serial.print("]");
}

カテゴリー: Arduino, 電子工作 タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。