gpio.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include <Arduino.h>
  2. #include "gpio.h"
  3. #include "blacksasi.h"
  4. extern void sdCardInsert();
  5. extern void switchImage();
  6. bool gpioInit(void){
  7. // PIN initialization
  8. pinMode(BOARD_LED1_PIN , OUTPUT);
  9. pinMode(BOARD_LED2_PIN , OUTPUT);
  10. pinMode(BOARD_LED3_PIN , OUTPUT);
  11. pinMode(BOARD_SDCARD_INSERT, INPUT_PULLUP);
  12. pinMode(BOARD_SWITCH1_PIN , INPUT_PULLUP);
  13. pinMode(BOARD_SWITCH2_PIN , INPUT_PULLUP);
  14. pinMode(BOARD_SWITCH3_PIN , INPUT_PULLUP);
  15. pinMode(BOARD_SWITCH4_PIN , INPUT_PULLUP);
  16. pinMode(BOARD_REV_PIN0, INPUT_PULLDOWN);
  17. pinMode(BOARD_REV_PIN1, INPUT_PULLDOWN);
  18. pinMode(BOARD_REV_PIN2, INPUT_PULLDOWN);
  19. pinMode(BOARD_SCSI_TERM_HIGH, OUTPUT);
  20. pinMode(BOARD_SCSI_TERM_LOW, OUTPUT);
  21. pinMode(BOARD_SCSI_DBX, OUTPUT);
  22. pinMode(BOARD_SCSI_TERM_POWER, INPUT); //Check if external termination power is provided
  23. attachInterrupt(BOARD_SDCARD_INSERT,sdCardInsert, CHANGE);
  24. attachInterrupt(BOARD_SWITCH1_PIN,switchImage, CHANGE);
  25. attachInterrupt(BOARD_SWITCH2_PIN,switchImage, CHANGE);
  26. attachInterrupt(BOARD_SWITCH3_PIN,switchImage, CHANGE);
  27. attachInterrupt(BOARD_SWITCH4_PIN,switchImage, CHANGE);
  28. // Control SCSI drivers
  29. pinMode(BOARD_SCSI_DTD, OUTPUT);
  30. pinMode(BOARD_SCSI_IND, OUTPUT);
  31. pinMode(BOARD_SCSI_TAD, OUTPUT);
  32. pinMode(BOARD_TRANS_OE, OUTPUT);
  33. pinMode(PB8, OUTPUT);
  34. pinMode(PB9, OUTPUT);
  35. digitalWrite(PB8, LOW);
  36. digitalWrite(PB9, LOW);
  37. digitalWrite(BOARD_TRANS_OE, LOW);
  38. SCSI_SET_PULL() ;
  39. TRANSCEIVER_IO_SET(vDTD,DB_INPUT);
  40. // Initiator port
  41. pinMode(BOARD_SCSI_ATN, INPUT_PULLUP);
  42. pinMode(BOARD_SCSI_BSY, INPUT_PULLUP);
  43. pinMode(BOARD_SCSI_ACK, INPUT_PULLUP);
  44. pinMode(BOARD_SCSI_RST, INPUT_PULLUP);
  45. pinMode(BOARD_SCSI_SEL, INPUT_PULLUP);
  46. TRANSCEIVER_IO_SET(vIND,TR_INPUT);
  47. // Target port
  48. pinMode(BOARD_SCSI_MSG, INPUT_PULLUP);
  49. pinMode(BOARD_SCSI_CD, INPUT_PULLUP);
  50. pinMode(BOARD_SCSI_REQ, INPUT_PULLUP);
  51. pinMode(BOARD_SCSI_IO, INPUT_PULLUP);
  52. TRANSCEIVER_IO_SET(vTAD,TR_INPUT);
  53. SCSI_DB_INPUT()
  54. SCSI_TARGET_INACTIVE()
  55. }