Bladeren bron

Added switch for termination on switch4

Per Mårtensson 2 jaren geleden
bovenliggende
commit
bf46d83ae5
4 gewijzigde bestanden met toevoegingen van 33 en 12 verwijderingen
  1. 1 0
      sw/include/sdcard.h
  2. 3 2
      sw/src/gpio.cpp
  3. 6 4
      sw/src/main.cpp
  4. 23 6
      sw/src/sdcard.cpp

+ 1 - 0
sw/include/sdcard.h

@@ -7,4 +7,5 @@ void readSDCardInfo();
 void readSDCardInfo2();
 void sdCardInsert();
 void switchImage();
+void switchTerm();
 #endif // __BLACKSASI_SDCARD_H__

+ 3 - 2
sw/src/gpio.cpp

@@ -3,6 +3,7 @@
 #include "blacksasi.h"
 extern void sdCardInsert();
 extern void switchImage();
+extern void switchTerm();
 bool gpioInit(void){
     // PIN initialization
     pinMode(BOARD_LED1_PIN , OUTPUT);
@@ -27,14 +28,14 @@ bool gpioInit(void){
     attachInterrupt(BOARD_SWITCH1_PIN,switchImage, CHANGE);
     attachInterrupt(BOARD_SWITCH2_PIN,switchImage, CHANGE);
     attachInterrupt(BOARD_SWITCH3_PIN,switchImage, CHANGE);
-    attachInterrupt(BOARD_SWITCH4_PIN,switchImage, CHANGE);
+    attachInterrupt(BOARD_SWITCH4_PIN,switchTerm, CHANGE);
 
     // Control SCSI drivers
     pinMode(BOARD_SCSI_DTD, OUTPUT);
     pinMode(BOARD_SCSI_IND, OUTPUT);
     pinMode(BOARD_SCSI_TAD, OUTPUT);
     pinMode(BOARD_TRANS_OE, OUTPUT);
-    digitalWrite(BOARD_SCSI_TERM_HIGH, LOW);
+    digitalWrite(BOARD_SCSI_TERM_HIGH, HIGH);
     digitalWrite(BOARD_SCSI_TERM_LOW, HIGH);
     digitalWrite(BOARD_TRANS_OE, LOW);
     SCSI_SET_PULL() ;

+ 6 - 4
sw/src/main.cpp

@@ -43,7 +43,7 @@
 #include <setjmp.h>
 #include <libmaple/exti.h>
 
-#define DEBUG            1      // 0:No debug information output
+#define DEBUG            0      // 0:No debug information output
                                 // 1: Debug information output to USB Serial
                                 // 2: Debug information output to LOG.txt (slow)
 
@@ -88,6 +88,8 @@ SCSI_INQUIRY_DATA default_hdd, default_optical;
 byte (*scsi_command_table[MAX_SCSI_COMMAND])(SCSI_DEVICE *dev, const byte *cdb);
 uint32_t db_bsrr[256];
 uint32_t test=0;
+uint8_t imageSelect=0;
+uint8_t termSelect=0;
 // scsi command functions
 SCSI_COMMAND_HANDLER(onUnimplemented);
 SCSI_COMMAND_HANDLER(onNOP);
@@ -293,6 +295,7 @@ void setup()
   //while (!Serial);
 #endif
   gpioInit();
+  switchTerm();
   board_revsion =  (digitalRead(BOARD_REV_PIN0) == HIGH) | 
                    (digitalRead(BOARD_REV_PIN1) == HIGH) << 1 | 
                    (digitalRead(BOARD_REV_PIN2) ==  HIGH) << 2;
@@ -363,12 +366,11 @@ void setup()
 
   int image_file_set =  ((digitalRead(BOARD_SWITCH1_PIN) == LOW) ) | 
                         ((digitalRead(BOARD_SWITCH2_PIN) == LOW) ) << 1 | 
-                        ((digitalRead(BOARD_SWITCH3_PIN) == LOW) ) << 2 | 
-                        ((digitalRead(BOARD_SWITCH4_PIN) == LOW) ) << 3;
+                        ((digitalRead(BOARD_SWITCH3_PIN) == LOW) ) << 2 ;
 
   TRANSCEIVER_IO_SET(vIND,TR_INPUT);
   TRANSCEIVER_IO_SET(vTAD,TR_INPUT);
-  TERMINATION_LOW();
+  TERMINATION_HIGH();
 
 
   

+ 23 - 6
sw/src/sdcard.cpp

@@ -1,7 +1,8 @@
 #include "sdcard.h"
 extern SdFs SD;
 extern FsFile LOG_FILE;
-extern uint16_t imageSelect;
+extern uint8_t imageSelect;
+extern uint8_t termSelect;
 // read SD information and print to logfile
 void readSDCardInfo()
 {
@@ -75,15 +76,31 @@ void sdCardInsert(void){
 
 void switchImage(void){
 
-    uint8_t oldimageSelect = imageSelect;
+    uint16_t oldimageSelect = imageSelect;
+    delay(1);
     imageSelect = (~(digitalRead(BOARD_SWITCH1_PIN) | 
                   digitalRead(BOARD_SWITCH2_PIN) << 1 |  
-                  digitalRead(BOARD_SWITCH3_PIN) << 2 |  
-                  digitalRead(BOARD_SWITCH4_PIN) << 3)) & 0x0F;
+                  digitalRead(BOARD_SWITCH3_PIN) << 2)) & 0x07;
     if ( oldimageSelect!=imageSelect){
-    LOG("Image: ");
-    LOGN(imageSelect);
+      LOG("Image: ");
+      LOGN(imageSelect);
+    }
+
 
+}
+void switchTerm(void){
+
+    uint16_t oldtermSelect = termSelect;
+    delay(1);
+    termSelect = (~(digitalRead(BOARD_SWITCH4_PIN))) & 0x01;
+    if ( oldtermSelect!=termSelect){
+      LOG("Termination: ");
+      LOGN(termSelect);
+      if (termSelect){
+        TERMINATION_HIGH();
+      }else{
+        TERMINATION_OFF()  ;
+      }
     }