Commit 6208012510ae5c6464441f98ed2beede7f4b59e1
receivedWed, 11. Sep 2024, 12:49:20 (by user sx)
Wed, 11 Sep 2024 10:49:20 +0000 (12:49 +0200)
authorManfred Steiner <sx@htl-kaindorf.at>
Wed, 11 Sep 2024 10:49:17 +0000 (12:49 +0200)
committerManfred Steiner <sx@htl-kaindorf.at>
Wed, 11 Sep 2024 10:49:17 +0000 (12:49 +0200)
software/nano-644/test_2024-07-23/src/units/r2r.cpp

index 87fb822b20264a3cf336ad78d446a85dde51d5b1..54664b18cf545c59d61e2a403fd8fae93ba86357 100644 (file)
 
 #ifdef __AVR_ATmega328P__
    // AVCC=4.7V, POTI Vmax=3.3V
-   #define K (1023.0 / 738.0)
+   #define K 1.32
 #endif
 
 void R2r::init () {
-   ADMUX = (1 << REFS0) | 2; // ADC2, VREF=AVCC=3.3V
+   ADMUX = (1 << REFS0) | 2; // ADC2, VREF=AVCC (=3.3V for Nano-644/1284, =5V for Arduino Nano)
    ADCSRA = (1 << ADEN) | 7; // ADC Enable, Prescaler 128
 }
 
@@ -33,8 +33,10 @@ int8_t R2r::run (uint8_t subtest) {
             ADCSRA |= (1 << ADSC); // start ADC
             while (ADCSRA & (1 << ADSC)) {} // wait for result
             printf_P(PSTR("%4d (0x%03x)"), ADC, ADC);
-            uint8_t sw = (uint8_t)( ((float)(ADC) + 32.0) / 64.0 * K );
-            printf_P(PSTR("  SW9:6 = %d %d% d %d  "), sw >> 3, (sw >> 2) & 0x01, (sw >> 1) & 0x01, sw & 0x01 );
+            // uint8_t sw = (uint8_t)( ((float)(ADC) + 4.0) / 64.0 * K );
+            float swf = ((float)(ADC) * K) / 64.8 + 0.55;
+            uint8_t sw = (uint8_t)swf ;
+            printf_P(PSTR(" %3.1f => SW9:6 = %d %d% d %d  "), swf, sw >> 3, (sw >> 2) & 0x01, (sw >> 1) & 0x01, sw & 0x01 );
          }
          return 0;
       }