Vector name | Vector definition |
---|---|
INT0_vect |
External Interrupt Request 0 |
INT1_vect |
External Interrupt Request 1 |
PCINT0_vect |
Pin Change Interrupt Request 0 |
PCINT1_vect |
Pin Change Interrupt Request 0 |
PCINT2_vect |
Pin Change Interrupt Request 1 |
WDT_vect |
Watchdog Time-out Interrupt |
TIMER2_COMPA_vect |
Timer/Counter2 Compare Match A |
TIMER2_COMPB_vect |
Timer/Counter2 Compare Match A |
TIMER2_OVF_vect |
Timer/Counter2 Overflow |
TIMER1_CAPT_vect |
Timer/Counter1 Capture Event |
TIMER1_COMPA_vect |
Timer/Counter1 Compare Match A |
TIMER1_COMPB_vect |
Timer/Counter1 Compare Match B |
TIMER1_OVF_vect |
Timer/Counter1 Overflow |
TIMER0_COMPA_vect |
TimerCounter0 Compare Match A |
TIMER0_COMPB_vect |
TimerCounter0 Compare Match B |
TIMER0_OVF_vect |
Timer/Couner0 Overflow |
SPI_STC_vect |
SPI Serial Transfer Complete |
USART_RX_vect |
USART Rx Complete |
USART_UDRE_vect |
USART, Data Register Empty |
USART_TX_vect |
USART Tx Complete |
ADC_vect |
ADC Conversion Complete |
EE_READY_vect |
EEPROM Ready |
ANALOG_COMP_vect |
Analog Comparator |
TWI_vect |
Two-wire Serial Interface |
SPM_READY_vect |
Store Program Memory Read |
Last active
December 15, 2021 22:17
-
-
Save BanksySan/790126fe71f128d54e9792a3f3031b49 to your computer and use it in GitHub Desktop.
Arduino/ATMega328 Snippets
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Serial.println("SCHAR_MIN = " + String(SCHAR_MIN, DEC) + ", " + String(SCHAR_MIN, HEX)); // minimum value for a signed char | |
Serial.println("SCHAR_MAX = " + String(SCHAR_MAX, DEC) + ", " + String(SCHAR_MAX, HEX)); // maximum value for a signed char | |
Serial.println("UCHAR_MAX = " + String(UCHAR_MAX, DEC) + ", " + String(UCHAR_MAX, HEX)); // maximum value for an unsigned char | |
Serial.println("CHAR_MIN = " + String(CHAR_MIN, DEC) + ", " + String(CHAR_MIN, HEX)); // minimum value for a char | |
Serial.println("CHAR_MAX = " + String(CHAR_MAX, DEC) + ", " + String(CHAR_MAX, HEX)); // maximum value for a char | |
Serial.println("SHRT_MIN = " + String(SHRT_MIN, DEC) + ", " + String(SHRT_MIN, HEX)); // minimum value for a short | |
Serial.println("SHRT_MAX = " + String(SHRT_MAX, DEC) + ", " + String(SHRT_MAX, HEX)); // maximum value for a short | |
Serial.println("USHRT_MAX = " + String(USHRT_MAX, DEC) + ", " + String(USHRT_MAX, HEX)); // maximum value for an unsigned short | |
Serial.println("INT_MIN = " + String(INT_MIN, DEC) + ", " + String(INT_MIN, HEX)); // minimum value for an int | |
Serial.println("INT_MAX = " + String(INT_MAX, DEC) + ", " + String(INT_MAX, HEX)); // maximum value for an int | |
Serial.println("UINT_MAX = " + String(UINT_MAX, DEC) + ", " + String(UINT_MAX, HEX)); // maximum value for an unsigned int | |
Serial.println("LONG_MIN = " + String(LONG_MIN, DEC) + ", " + String(LONG_MIN, HEX)); // minimum value for a long | |
Serial.println("LONG_MAX = " + String(LONG_MAX, DEC) + ", " + String(LONG_MAX, HEX)); // maximum value for a long | |
Serial.println("ULONG_MAX = " + String(ULONG_MAX, DEC) + ", " + String(ULONG_MAX, HEX)); // maximum value for an unsigned long | |
Serial.println("LLONG_MIN = " + String(LLONG_MIN, DEC) + ", " + String(LLONG_MIN, HEX)); // minimum value for a long long | |
Serial.println("LLONG_MAX = " + String(LLONG_MAX, DEC) + ", " + String(LLONG_MAX, HEX)); // maximum value for a long long | |
Serial.println("ULLONG_MAX = " + String(ULLONG_MAX, DEC) + ", " + String(ULLONG_MAX, HEX)); // maximum value for an unsigned long long | |
Serial.println("PTRDIFF_MIN = " + String(PTRDIFF_MIN, DEC) + ", " + String(PTRDIFF_MIN, HEX)); // minimum value of ptrdiff_t | |
Serial.println("PTRDIFF_MAX = " + String(PTRDIFF_MAX, DEC) + ", " + String(PTRDIFF_MAX, HEX)); // maximum value of ptrdiff_t | |
Serial.println("SIZE_MAX = " + String(SIZE_MAX, DEC) + ", " + String(SIZE_MAX, HEX)); // maximum value of size_t | |
Serial.println("SIG_ATOMIC_MIN = " + String(SIG_ATOMIC_MIN, DEC) + ", " + String(SIG_ATOMIC_MIN, HEX)); // minimum value of sig_atomic_t | |
Serial.println("SIG_ATOMIC_MAX = " + String(SIG_ATOMIC_MAX, DEC) + ", " + String(SIG_ATOMIC_MAX, HEX)); // maximum value of sig_atomic_t | |
Serial.println("WINT_MIN = " + String(WINT_MIN, DEC) + ", " + String(WINT_MIN, HEX)); // minimum value of wint_t | |
Serial.println("WINT_MAX = " + String(WINT_MAX, DEC) + ", " + String(WINT_MAX, HEX)); // maximum value of wint_t | |
Serial.println("WCHAR_MIN = " + String(WCHAR_MIN, DEC) + ", " + String(WCHAR_MIN, HEX)); // minimum value of wchar_t | |
Serial.println("WCHAR_MAX = " + String(WCHAR_MAX, DEC) + ", " + String(WCHAR_MAX, HEX)); // maximum value of wchar_t | |
Serial.println("CHAR_BIT = " + String(CHAR_BIT, DEC) + ", " + String(CHAR_BIT, HEX)); // number of bits in a char | |
Serial.println("MB_LEN_MAX = " + String(MB_LEN_MAX, DEC) + ", " + String(MB_LEN_MAX, HEX)); // maximum length of a multibyte character in bytes | |
Serial.println("FLT_MIN = " + String(FLT_MIN, DEC) + ", " + String(FLT_MIN, HEX)); // smallest normalised positive value of a float | |
Serial.println("FLT_MAX = " + String(FLT_MAX, DEC) + ", " + String(FLT_MAX, HEX)); // largest positive finite value of a float | |
Serial.println("DBL_MIN = " + String(DBL_MIN, DEC) + ", " + String(DBL_MIN, HEX)); // smallest normalised positive value of a double | |
Serial.println("DBL_MAX = " + String(DBL_MAX, DEC) + ", " + String(DBL_MAX, HEX)); // largest positive finite value of a double | |
Serial.println("LDBL_MIN = " + String(LDBL_MIN, DEC) + ", " + String(LDBL_MIN, HEX)); // smallest normalised positive value of a long double | |
Serial.println("LDBL_MAX = " + String(LDBL_MAX, DEC) + ", " + String(LDBL_MAX, HEX)); // largest positive finite value of a long double | |
Serial.println("FLT_DIG = " + String(FLT_DIG, DEC) + ", " + String(FLT_DIG, HEX)); // the number of decimal digits guaranteed to be preserved converting from text to float and back to text | |
Serial.println("DBL_DIG = " + String(DBL_DIG, DEC) + ", " + String(DBL_DIG, HEX)); // the number of decimal digits guaranteed to be preserved converting from text to double and back to text | |
Serial.println("LDBL_DIG = " + String(LDBL_DIG, DEC) + ", " + String(LDBL_DIG, HEX)); // the number of decimal digits guaranteed to be preserved converting from text to long double and back to text |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Arduino.h> | |
void resetTimerRegisters(); | |
void initialisePrescalerBits(); | |
void initialiseControlBits(); | |
void initialiseTriggerBits(); | |
void initialiseComparisonValues(); | |
void setPrescaler(word scaleFactor); | |
__attribute__((unused)) | |
void setup() { | |
Serial.begin(9600); | |
while (!Serial) { } | |
Serial.println(); | |
Serial.println("================"); | |
Serial.println("Fun With Timers"); | |
Serial.println("================"); | |
pinMode(2, OUTPUT); | |
noInterrupts(); | |
resetTimerRegisters(); | |
initialiseControlBits(); | |
initialisePrescalerBits(); | |
initialiseTriggerBits(); | |
initialiseComparisonValues(); | |
interrupts(); | |
} | |
void initialiseComparisonValues() { | |
OCR2A = 200; | |
OCR2B = 50; | |
} | |
void initialiseTriggerBits() { | |
TIMSK2 |= _BV(OCIE2A); | |
TIMSK2 |= _BV(OCIE2B); | |
} | |
void initialiseControlBits() { | |
TCCR2A |= _BV(WGM20); | |
TCCR2A |= _BV(WGM21); | |
TCCR2A |= _BV(COM2A0); | |
} | |
void initialisePrescalerBits() { | |
setPrescaler(0); | |
} | |
void resetTimerRegisters() { | |
TCCR2A &= B00001100; | |
TCCR2B &= B00110000; | |
TIMSK2 &= B11111000; | |
} | |
__attribute__((unused)) | |
void loop() { | |
} | |
__attribute__((unused)) | |
void serialEvent() { | |
if (Serial.available()) { | |
String input = Serial.readString(); | |
Serial.println("Received: \"" + input + "\""); | |
char command = input[0]; | |
switch (command) { | |
case 'p': | |
case 'P': { | |
word scaleFactor = input.substring(1).toInt(); | |
setPrescaler(scaleFactor); | |
break; | |
} | |
default: { | |
Serial.println("Unknown command."); | |
break; | |
} | |
} | |
} | |
} | |
ISR(TIMER2_COMPA_vect) { | |
digitalWrite(2, LOW); | |
} | |
ISR(TIMER2_COMPB_vect) { | |
digitalWrite(2, HIGH); | |
} | |
void setPrescaler(word scaleFactor) { | |
Serial.println("Set Prescaler: " + String(scaleFactor)); | |
TCCR2B &= B1111000; | |
switch (scaleFactor) { | |
case 0: | |
Serial.println("case 0 (" + String(scaleFactor) + "). Timer disabled."); | |
break; | |
case 1: | |
Serial.println("case 1 (" + String(scaleFactor) + ")."); | |
TCCR2B |= _BV(CS20); | |
break; | |
case 8: | |
Serial.println("case 8 (" + String(scaleFactor) + ")."); | |
TCCR2B |= _BV(CS21); | |
break; | |
case 64: | |
Serial.println("case 64 (" + String(scaleFactor) + ")."); | |
TCCR2B |= _BV(CS20); | |
TCCR2B |= _BV(CS21); | |
break; | |
case 256: | |
Serial.println("case 256 (" + String(scaleFactor) + ")."); | |
TCCR2B |= _BV(CS22); | |
break; | |
case 1024: | |
Serial.println("case 1024 (" + String(scaleFactor) + ")."); | |
TCCR2B |= _BV(CS20); | |
TCCR2B |= _BV(CS22); | |
break; | |
default: | |
Serial.println("ERROR: Invalid prescaler factor (" + String(scaleFactor) + ")"); | |
break; | |
} | |
Serial.println( "TCCR2B = " + String(TCCR2B, BIN)); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ISR(INT0_vect) { /* External Interrupt Request 0 */ | |
Serial.println("INT0_vect"); | |
} | |
ISR(INT1_vect) { /* External Interrupt Request 1 */ | |
Serial.println("INT1_vect"); | |
} | |
ISR(PCINT0_vect) { /* Pin Change Interrupt Request 0 */ | |
Serial.println("PCINT0_vect"); | |
} | |
ISR(PCINT1_vect) { /* Pin Change Interrupt Request 0 */ | |
Serial.println("PCINT1_vect"); | |
} | |
ISR(PCINT2_vect) { /* Pin Change Interrupt Request 1 */ | |
Serial.println("PCINT2_vect"); | |
} | |
ISR(WDT_vect) { /* Watchdog Time-out Interrupt */ | |
Serial.println("WDT_vect"); | |
} | |
ISR(TIMER2_COMPA_vect) { /* Timer/Counter2 Compare Match A */ | |
Serial.println("TIMER2_COMPA_vect"); | |
} | |
ISR(TIMER2_COMPB_vect) { /* Timer/Counter2 Compare Match A */ | |
Serial.println("TIMER2_COMPB_vect"); | |
} | |
ISR(TIMER2_OVF_vect) { /* Timer/Counter2 Overflow */ | |
Serial.println("TIMER2_OVF_vect"); | |
} | |
ISR(TIMER1_CAPT_vect) { /* Timer/Counter1 Capture Event */ | |
Serial.println("TIMER1_CAPT_vect"); | |
} | |
ISR(TIMER1_COMPA_vect) { /* Timer/Counter1 Compare Match A */ | |
Serial.println("TIMER1_COMPA_vect"); | |
} | |
ISR(TIMER1_COMPB_vect) { /* Timer/Counter1 Compare Match B */ | |
Serial.println("TIMER1_COMPB_vect"); | |
} | |
ISR(TIMER1_OVF_vect) { /* Timer/Counter1 Overflow */ | |
Serial.println("TIMER1_OVF_vect"); | |
} | |
ISR(TIMER0_COMPA_vect) { /* TimerCounter0 Compare Match A */ | |
Serial.println("TIMER0_COMPA_vect"); | |
} | |
ISR(TIMER0_COMPB_vect) { /* TimerCounter0 Compare Match B */ | |
Serial.println("TIMER0_COMPB_vect"); | |
} | |
ISR(TIMER0_OVF_vect) { /* Timer/Couner0 Overflow */ | |
Serial.println("TIMER0_OVF_vect"); | |
} | |
ISR(SPI_STC_vect) { /* SPI Serial Transfer Complete */ | |
Serial.println("SPI_STC_vect"); | |
} | |
//ISR(USART_RX_vect) { /* USART Rx Complete */ | |
// Serial.println("USART_RX_vect"); | |
//} | |
//ISR(USART_UDRE_vect) { /* USART, Data Register Empty */ | |
// Serial.println("USART_UDRE_vect"); | |
//} | |
ISR(USART_TX_vect) { /* USART Tx Complete */ | |
Serial.println("USART_TX_vect"); | |
} | |
ISR(ADC_vect) { /* ADC Conversion Complete */ | |
Serial.println("ADC_vect"); | |
} | |
ISR(EE_READY_vect) { /* EEPROM Ready */ | |
Serial.println("EE_READY_vect"); | |
} | |
ISR(ANALOG_COMP_vect) { /* Analog Comparator */ | |
Serial.println("ANALOG_COMP_vect"); | |
} | |
ISR(TWI_vect) { /* Two-wire Serial Interface */ | |
Serial.println("TWI_vect"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment