aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hwdef-BLF_Q8-T1616.h5
-rw-r--r--hwdef-gchart-fet1-t16.h6
-rw-r--r--spaghetti-monster/anduril/version.h2
-rw-r--r--spaghetti-monster/fsm-misc.c63
4 files changed, 47 insertions, 29 deletions
diff --git a/hwdef-BLF_Q8-T1616.h b/hwdef-BLF_Q8-T1616.h
index a838655..6dfb4ab 100644
--- a/hwdef-BLF_Q8-T1616.h
+++ b/hwdef-BLF_Q8-T1616.h
@@ -24,7 +24,7 @@ Driver pinout:
#define PWM_CHANNELS 2
#ifndef SWITCH_PIN
-#define SWITCH_PIN 5
+#define SWITCH_PIN PIN5_bp
#define SWITCH_PORT VPORTA.IN
#define SWITCH_ISC_REG PORTA.PIN2CTRL
#define SWITCH_VECT PORTA_PORT_vect
@@ -52,9 +52,8 @@ Driver pinout:
// lighted button
#ifndef AUXLED_PIN
-#define AUXLED_PIN PIN5_bm
+#define AUXLED_PIN PIN5_bp
#define AUXLED_PORT PORTB
-#define AUXLED_CTRL PIN5CTRL
#endif
diff --git a/hwdef-gchart-fet1-t16.h b/hwdef-gchart-fet1-t16.h
index 3a79586..e8fd11c 100644
--- a/hwdef-gchart-fet1-t16.h
+++ b/hwdef-gchart-fet1-t16.h
@@ -23,12 +23,11 @@ Read voltage from VCC pin, has diode with ~0.4v drop
#define PWM_CHANNELS 2
#ifndef SWITCH_PIN
-#define SWITCH_PIN 2
+#define SWITCH_PIN PIN2_bp
#define SWITCH_PORT VPORTB.IN
#define SWITCH_ISC_REG PORTB.PIN2CTRL
#define SWITCH_VECT PORTB_PORT_vect
#define SWITCH_INTFLG VPORTB.INTFLAGS
-//#define SWITCH_ISC_REG _SFR_MEM8(&PORTB + 0x10 + SWITCH_PIN)
#endif
@@ -52,9 +51,8 @@ Read voltage from VCC pin, has diode with ~0.4v drop
// lighted button
#ifndef AUXLED_PIN
-#define AUXLED_PIN PIN3_bm
+#define AUXLED_PIN PIN3_bp
#define AUXLED_PORT PORTB
-#define AUXLED_CTRL PIN3CTRL
#endif
diff --git a/spaghetti-monster/anduril/version.h b/spaghetti-monster/anduril/version.h
index e896823..14502aa 100644
--- a/spaghetti-monster/anduril/version.h
+++ b/spaghetti-monster/anduril/version.h
@@ -1 +1 @@
-#define VERSION_NUMBER "20210117"
+#define VERSION_NUMBER "20210201"
diff --git a/spaghetti-monster/fsm-misc.c b/spaghetti-monster/fsm-misc.c
index 7ba9b45..edd982a 100644
--- a/spaghetti-monster/fsm-misc.c
+++ b/spaghetti-monster/fsm-misc.c
@@ -112,27 +112,29 @@ void indicator_led(uint8_t lvl) {
switch (lvl) {
#ifdef AVRXMEGA3 // ATTINY816, 817, etc
case 0: // indicator off
- AUXLED_PORT.DIRSET = AUXLED_PIN; // set as output
- AUXLED_PORT.OUTCLR = AUXLED_PIN; // set output low
+ AUXLED_PORT.DIRSET = (1 << AUXLED_PIN); // set as output
+ AUXLED_PORT.OUTCLR = (1 << AUXLED_PIN); // set output low
#ifdef AUXLED2_PIN // second LED mirrors the first
- AUXLED2_PORT.DIRSET = AUXLED2_PIN; // set as output
- AUXLED2_PORT.OUTCLR = AUXLED2_PIN; // set output low
+ AUXLED2_PORT.DIRSET = (1 << AUXLED2_PIN); // set as output
+ AUXLED2_PORT.OUTCLR = (1 << AUXLED2_PIN); // set output low
#endif
break;
case 1: // indicator low
- AUXLED_PORT.DIRCLR = AUXLED_PIN; // set as input
- AUXLED_PORT.AUXLED_CTRL = PORT_PULLUPEN_bm; // enable internal pull-up
+ AUXLED_PORT.DIRCLR = (1 << AUXLED_PIN); // set as input
+ // this resolves to PORTx.PINxCTRL = PORT_PULLUPEN_bm;
+ *((uint8_t *)&AUXLED_PORT + 0x10 + AUXLED_PIN) = PORT_PULLUPEN_bm; // enable internal pull-up
#ifdef AUXLED2_PIN // second LED mirrors the first
- AUXLED2_PORT.DIRCLR = AUXLE2D_PIN; // set as input
- AUXLED2_PORT.AUXLED2_CTRL = PORT_PULLUPEN_bm; // enable internal pull-up
+ AUXLED2_PORT.DIRCLR = (1 << AUXLED2_PIN); // set as input
+ // this resolves to PORTx.PINxCTRL = PORT_PULLUPEN_bm;
+ *((uint8_t *)&AUXLED2_PORT + 0x10 + AUXLED2_PIN) = PORT_PULLUPEN_bm; // enable internal pull-up
#endif
break;
default: // indicator high
- AUXLED_PORT.DIRSET = AUXLED_PIN; // set as output
- AUXLED_PORT.OUTSET = AUXLED_PIN; // set as high
+ AUXLED_PORT.DIRSET = (1 << AUXLED_PIN); // set as output
+ AUXLED_PORT.OUTSET = (1 << AUXLED_PIN); // set as high
#ifdef AUXLED2_PIN // second LED mirrors the first
- AUXLED2_PORT.DIRSET = AUXLED2_PIN; // set as output
- AUXLED2_PORT.OUTSET = AUXLED2_PIN; // set as high
+ AUXLED2_PORT.DIRSET = (1 << AUXLED2_PIN); // set as output
+ AUXLED2_PORT.OUTSET = (1 << AUXLED2_PIN); // set as high
#endif
break;
@@ -182,16 +184,17 @@ void button_led_set(uint8_t lvl) {
#ifdef AVRXMEGA3 // ATTINY816, 817, etc
case 0: // LED off
- BUTTON_LED_PORT.DIRSET = BUTTON_LED_PIN; // set as output
- BUTTON_LED_PORT.OUTCLR = BUTTON_LED_PIN; // set output low
+ BUTTON_LED_PORT.DIRSET = (1 << BUTTON_LED_PIN); // set as output
+ BUTTON_LED_PORT.OUTCLR = (1 << BUTTON_LED_PIN); // set output low
break;
case 1: // LED low
- BUTTON_LED_PORT.DIRCLR = BUTTON_LED_PIN; // set as input
- BUTTON_LED_PORT.BUTTON_LED_CTRL = PORT_PULLUPEN_bm; // enable internal pull-up
+ BUTTON_LED_PORT.DIRCLR = (1 << BUTTON_LED_PIN); // set as input
+ // this resolves to PORTx.PINxCTRL = PORT_PULLUPEN_bm;
+ *((uint8_t *)&BUTTON_LED_PORT + 0x10 + BUTTON_LED_PIN) = PORT_PULLUPEN_bm; // enable internal pull-up
break;
default: // LED high
- BUTTON_LED_PORT.DIRSET = BUTTON_LED_PIN; // set as output
- BUTTON_LED_PORT.OUTSET = BUTTON_LED_PIN; // set as high
+ BUTTON_LED_PORT.DIRSET = (1 << BUTTON_LED_PIN); // set as output
+ BUTTON_LED_PORT.OUTSET = (1 << BUTTON_LED_PIN); // set as high
break;
#else
@@ -218,9 +221,6 @@ void button_led_set(uint8_t lvl) {
#endif
#ifdef USE_AUX_RGB_LEDS
-#ifdef AVRXMEGA3 // ATTINY816, 817, etc
-#error Function rgb_led_set in fsm-misc is currently not set up for the AVR 1-Series
-#endif
void rgb_led_set(uint8_t value) {
// value: 0b00BBGGRR
uint8_t pins[] = { AUXLED_R_PIN, AUXLED_G_PIN, AUXLED_B_PIN };
@@ -228,6 +228,24 @@ void rgb_led_set(uint8_t value) {
uint8_t lvl = (value >> (i<<1)) & 0x03;
uint8_t pin = pins[i];
switch (lvl) {
+
+ #ifdef AVRXMEGA3 // ATTINY816, 817, etc
+ case 0: // LED off
+ AUXLED_RGB_PORT.DIRSET = (1 << pin); // set as output
+ AUXLED_RGB_PORT.OUTCLR = (1 << pin); // set output low
+ break;
+ case 1: // LED low
+ AUXLED_RGB_PORT.DIRCLR = (1 << pin); // set as input
+ // this resolves to PORTx.PINxCTRL = PORT_PULLUPEN_bm;
+ *((uint8_t *)&AUXLED_RGB_PORT + 0x10 + pin) = PORT_PULLUPEN_bm; // enable internal pull-up
+ break;
+ default: // LED high
+ AUXLED_RGB_PORT.DIRSET = (1 << pin); // set as output
+ AUXLED_RGB_PORT.OUTSET = (1 << pin); // set as high
+ break;
+
+ #else
+
case 0: // LED off
AUXLED_RGB_DDR &= 0xff ^ (1 << pin);
AUXLED_RGB_PUE &= 0xff ^ (1 << pin);
@@ -243,6 +261,9 @@ void rgb_led_set(uint8_t value) {
AUXLED_RGB_PUE |= (1 << pin);
AUXLED_RGB_PORT |= (1 << pin);
break;
+
+ #endif
+
}
}
}
If you find this content useful please consider a small donation via bitcoin: bitcoin:1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2?amount=0.001&message=Donation Scraping git contents via cgit is very resource intensive. The continued hosting of these git repositories is entirely financed by your bitcoin contributions. For donations of a least 1 mBTC you include your IP address in the message of your bitcoin donation. This will remove this message in the future for requests from your IP, which will significantly reduce token usage. In any case, any contributions to bitcoin address 1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2 are very welcome. Thanks in advance for you contribution to a self-sustaining ecosystem.