From 8b82adc3414419668463ed3124ea0a6d9d664301 Mon Sep 17 00:00:00 2001 From: QuintusJoyal Date: Fri, 19 Apr 2024 18:21:32 +0530 Subject: [PATCH] init --- .github/workflows/main.yml | 25 ++ .gitignore | 55 ++++ Diagram.png | Bin 0 -> 190179 bytes Makefile | 70 +++++ README.md | 70 +++++ dockerfile | 9 + main.c | 144 +++++++++ src/libs/IRremote.h | 619 +++++++++++++++++++++++++++++++++++++ src/libs/softwarePWM.h | 499 ++++++++++++++++++++++++++++++ src/libs/uart.h | 169 ++++++++++ 10 files changed, 1660 insertions(+) create mode 100644 .github/workflows/main.yml create mode 100644 .gitignore create mode 100644 Diagram.png create mode 100644 Makefile create mode 100644 README.md create mode 100644 dockerfile create mode 100644 main.c create mode 100644 src/libs/IRremote.h create mode 100644 src/libs/softwarePWM.h create mode 100644 src/libs/uart.h diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..ba3e424 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,25 @@ +on: + workflow_dispatch: + push: + pull_request: + +permissions: + contents: read + pull-requests: read + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: install avr tool chain + run: | + sudo apt-get update \ + && sudo apt-get install -y \ + avrdude \ + gcc-avr \ + gdb-avr \ + avr-libc \ + binutils-avr + - name: make + run: make all diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0c15080 --- /dev/null +++ b/.gitignore @@ -0,0 +1,55 @@ +build/ +.vscode/ + +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf diff --git a/Diagram.png b/Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..54a2e92a33ee37195304dc0708401a424f52ec37 GIT binary patch literal 190179 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 z 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 literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..733ec55 --- /dev/null +++ b/Makefile @@ -0,0 +1,70 @@ +# AVR project Makefile + +# Microcontroller +MCU = atmega328p + +# F_CPU (in Hz) +F_CPU = 16000000UL + +# Programmer +PROGRAMMER = -c arduino -P /dev/ttyACM0 -b 115200 + +# Compiler +CC = avr-gcc +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump +SIZE = avr-size +AVRDUDE = avrdude + +# Compiler flags +CFLAGS = -g -Wall -Os -mmcu=$(MCU) -DF_CPU=$(F_CPU) -fexceptions + +# Source directory +SRC_DIR = src + +# Build directory +BUILD_DIR = build + +# Source files +SRCS = main.c $(wildcard $(SRC_DIR)/libs/**/*.c) + +# Object files +OBJS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SRCS)) + +# Output files +TARGET = main +ELF = $(TARGET).elf +HEX = $(TARGET).hex +MAP = $(TARGET).map +EEP = $(TARGET).eep + +# Rules +all: $(HEX) + +$(HEX): $(ELF) + $(OBJCOPY) -O ihex -R .eeprom $(ELF) $(HEX) + +$(ELF): $(OBJS) + $(CC) $(CFLAGS) $(OBJS) -o $(ELF) + $(OBJDUMP) -h -S $(ELF) > $(MAP) + $(SIZE) --format=avr --mcu=$(MCU) $(ELF) + +$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR) $(dir $(OBJS)) + $(CC) $(CFLAGS) -c $< -o $@ + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(dir $(OBJS)): + mkdir -p $@ + +flash: $(HEX) + $(AVRDUDE) $(PROGRAMMER) -p $(MCU) -U flash:w:$(HEX):i + +eeprom: $(EEP) + $(AVRDUDE) $(PROGRAMMER) -p $(MCU) -U eeprom:w:$(EEP):i + +clean: + rm -rf $(BUILD_DIR) $(ELF) $(HEX) $(MAP) $(EEP) + +.PHONY: all flash eeprom clean diff --git a/README.md b/README.md new file mode 100644 index 0000000..2aa8267 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# AVR IR remote LED lamp + +This project implements an infrared (IR) remote-controlled LED system using an AVR microcontroller. It allows users to adjust LED brightness and toggle RGB LED colors using a compatible IR remote control. + +## Features + +- Adjust RGB LED colors with volume up and down commands. +- Control LED brightness with channel up and down commands. +- Turn off all LEDs with the power command. +- Smooth LED dimming achieved through software PWM. + +## Hardware Requirements + +- AVR microcontroller (e.g., ATmega328P or Arduino uno) +- 1x IR receiver module +- 5x LEDs + - 4x single-color + - 1x RKGB +- 7x 330 Ohm resistors +- 1x IR remote control +- 1x Power supply (9V) + +## Diagram + +![Diagram](Diagram.png) + +## Software Requirements + +- AVR-GCC toolchain +- AVRDUDE (for flashing the microcontroller) +- Required AVR libraries (included in the [`./src/libs`](./src/libs) directory) + - [IRremote.h](./src/libs/IRremote.h) + - [softwarePWM.h](./src/libs/softwarePWM.h) + - [uart.h](./src/libs/uart.h) (Optional) + +## Installation + +1. Connect the hardware components according to the schematic. +2. Clone this repository to your local machine. +3. Compile the source code using the AVR-GCC toolchain. +```bash +make all +``` +4. Flash the compiled binary onto the AVR microcontroller using AVRDUDE. +```bash +make flash +``` + +## Usage + +1. Power on the system. +2. Point the IR remote control towards the IR receiver module. +3. Press the appropriate buttons on the remote control to control the LEDs: + - Volume up/down: Change RGB LED colors. + - Channel up/down: Adjust LED brightness. + - Power: Turn off all LEDs. +4. LED status updates will be displayed via UART communication (if needed). + +## Notes +- Uncomment uart if needed. +- You may need to change command codes according to your IR remote, use uart to find your codes. +- Changing ports have to be changed in [softwarePWM.h](./src/libs/softwarePWM.h)'s channel sections. + +## References +- [IRremote.h](https://www.programming-electronics-diy.xyz/2022/08/ir-remote-control-library-for-avr.html) - Liviu Istrate +- [softwarePWM.h](https://www.programming-electronics-diy.xyz/2021/02/multi-channel-software-pwm-library-for.html) - Liviu Istrate + +## Contributions + +Contributions are welcome! Feel free to submit bug reports, feature requests, or pull requests. diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..86ac848 --- /dev/null +++ b/dockerfile @@ -0,0 +1,9 @@ +FROM ubuntu + +RUN apt update +RUN apt install \ + avrdude \ + gcc-avr \ + gdb-avr \ + avr-libc \ + binutils-avr \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..73aae3a --- /dev/null +++ b/main.c @@ -0,0 +1,144 @@ +/*___________________________________________________________________________________________________ + +Title: + AVR LED IR remote lamp + +Description: + This code is designed for controlling LED brightness and color using an IR remote control. + It utilizes software PWM for smooth LED dimming and toggling of RGB LEDs. + +Author: + QuintusJoyal +_____________________________________________________________________________________________________*/ + +#include // AVR standard I/O definitions +#include // Functions to create time delays +#include // AVR interrupt handling functions +// #include "./src/libs/uart.h" // UART communication library +#include "./src/libs/IRremote.h" // IR remote control library +#include "./src/libs/softwarePWM.h" // Software PWM library + +#define F_CPU 16000000UL // Define CPU frequency +#define BAUDRATE 9600 // Define baud rate for UART communication + +#define VOL_UP 25 // IR command code for volume up +#define VOL_DOWN 22 // IR command code for volume down +#define CH_UP 21 // IR command code for channel up +#define CH_DOWN 7 // IR command code for channel down +#define POWER 69 // IR command code for power + +#define BRIGHTNESS_STEP (uint8_t) 15 // Step size for adjusting brightness + +uint8_t brightness = 20; // Initial brightness level +uint8_t level = 0; // Initial LED level + +// Function to set LED brightness according to level +void LED_brightness() { + for (uint8_t i = 0; i < level; i++) { + softwarePWM_Set(i, brightness); + } +} + +// Function to turn on a specific LED +void LED_turn_on(uint8_t led) { + softwarePWM_Set(led, brightness); +} + +// Function to turn off a specific LED +void LED_turn_off(uint8_t led) { + softwarePWM_Set(led, 0); +} + +// Function to toggle RGB LEDs based on level +void RGB_toggle() { + uint8_t m = (level - 1) % 3; + softwarePWM_Set(4, brightness * (m == 0)); + softwarePWM_Set(5, brightness * (m == 1)); + softwarePWM_Set(6, brightness * (m == 2)); +} + +// Function to increase volume level +void vol_up() { + if (level > 6) { + RGB_toggle(); // Toggle RGB LEDs + level = (level <= 9) ? level + 1 : 7; // Increment level, limit at 7 + return; + } + LED_turn_on(level++); // Turn on LED at current level +} + +// Function to decrease volume level +void vol_down() { + if (level > 7) { + --level; + RGB_toggle(); // Toggle RGB LEDs + return; + } + if (level == 7) { + // Turn on RGB LEDs at level 7 + LED_turn_on(4); + LED_turn_on(5); + LED_turn_on(6); + --level; + return; + } + LED_turn_off(level--); // Turn off LED at current level + if (level == UINT8_MAX) level = 0; // Wrap level around if overflow +} + +// Function to increase brightness +void ch_up() { + brightness = (brightness + BRIGHTNESS_STEP < UINT8_MAX) ? + brightness + (level > 0) * BRIGHTNESS_STEP : UINT8_MAX; // Increase brightness, limit at maximum + LED_brightness(); // Adjust LED brightness +} + +// Function to decrease brightness +void ch_down() { + brightness = (brightness - BRIGHTNESS_STEP > 0) ? + brightness - (level > 0) * BRIGHTNESS_STEP : 0; // Decrease brightness, limit at minimum + LED_brightness(); // Adjust LED brightness +} + +// Function to turn off all LEDs +void power() { + for (uint8_t i = 6; i >= 0; i--) LED_turn_off(i); // Turn off all LEDs +} + +// Function to control LEDs based on received IR command +void LED_control(uint16_t command) { + switch (command) { + case VOL_UP: vol_up(); break; // Volume up command + case VOL_DOWN: vol_down(); break; // Volume down command + case CH_UP: ch_up(); break; // Channel up command + case CH_DOWN: ch_down(); break; // Channel down command + case POWER: power(); break; // Power command + default: break; + } +} + +int main() +{ + uint16_t address = 0; // Variable to store IR address + uint16_t command = 0; // Variable to store IR command + + IR_init(); // Initialize IR remote control + // uart_init(); // Initialize UART communication + softwarePWM_Init(); // Initialize software PWM + + // uart_puts("Well I'm working here!\r\n"); // Send message indicating successful initialization + while (1) { + if (IR_codeAvailable()) { // Check if IR code is available + if (!IR_isRepeatCode()) { // Check if IR code is not a repeat + IR_getCode(&address, &command); // Get IR address and command + LED_control(command); // Control LEDs based on received command + // uart_putU16(address); // Send IR address over UART + // uart_puts(", "); + // uart_putU16(command); // Send IR command over UART + // uart_puts(", "); + // uart_putU8(level); // Send current LED level over UART + // uart_puts("\r\n"); + } + } + } +} diff --git a/src/libs/IRremote.h b/src/libs/IRremote.h new file mode 100644 index 0000000..14c06d3 --- /dev/null +++ b/src/libs/IRremote.h @@ -0,0 +1,619 @@ +/*___________________________________________________________________________________________________ + +Title: + IRremote.h v1.0 + +Description: + Library for sending and receiving remote controller codes on AVR devices + + For complete details visit: + https://www.programming-electronics-diy.xyz/2022/08/ir-remote-control-library-for-avr.html + +Author: + Liviu Istrate + istrateliviu24@yahoo.com + www.programming-electronics-diy.xyz + +Donate: + Software development takes time and effort so if you find this useful consider a small donation at: + paypal.me/alientransducer +_____________________________________________________________________________________________________*/ + + +/* ----------------------------- LICENSE - GNU GPL v3 ----------------------------------------------- + +* This license must be included in any redistribution. + +* Copyright (c) 2022 Liviu Istrate, www.programming-electronics-diy.xyz (istrateliviu24@yahoo.com) + +* Project URL: https://www.programming-electronics-diy.xyz/2022/08/ir-remote-control-library-for-avr.html + +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. + +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. + +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . + +--------------------------------- END OF LICENSE --------------------------------------------------*/ + +#ifndef IRREMOTE_H_ +#define IRREMOTE_H_ + +//----------------------------------------------------------------------------- +// Includes +//----------------------------------------------------------------------------- +#include +#include +#include +#include + +//----------------------------------------------------------------------------- +// Macros User SETUP +//----------------------------------------------------------------------------- +// Input Capture Pin (must be an ICP) +#define ICP_DDR DDRB +#define ICP_PORT PORTB +#define ICP_PIN PB0 + +// OCRA pin used for transmitting +#define IR_CARRIER_DDR DDRB +#define IR_CARRIER_PORT PORTB +#define IR_CARRIER_PIN PB1 + +// Size of the receiver buffer that holds the pulse length in us +//#define IR_RX_BUFFER_SIZE 68 // increase this if the main loop is slow + +//----------------------------------------------------------------------------- +// Macros +//----------------------------------------------------------------------------- +// See the Timer calculator spreadsheet for results based on prescaler selection +#if F_CPU >= 16000000 + #define IR_TIMER_PRESCALER 64 +#elif F_CPU >= 8000000 + #define IR_TIMER_PRESCALER 8 +#else + #define IR_TIMER_PRESCALER 1 +#endif + +// One timer value in microseconds +#define IR_TICK_TIME (1.0 / (F_CPU / (float)IR_TIMER_PRESCALER)) * 1000000 // convert to microseconds +#define IR_TIMER_OVERFLOW IR_TICK_TIME * 65536 // us +#define IR_OCR_38KHZ (F_CPU / (2 * 1 * 38000)) +#define IR_OCR_DUTYCYCLE IR_OCR_38KHZ / 4 // 0.25% duty cycle + +// Minimum and maximum time in microseconds +// NEC +#define IR_NEC_AGC_MIN_TIME 9000 +#define IR_NEC_AGC_MAX_TIME 9300 +#define IR_NEC_LONG_PAUSE_MIN_TIME 4300 +#define IR_NEC_LONG_PAUSE_MAX_TIME 4600 +#define IR_NEC_SHORT_PAUSE_MIN_TIME 2000 +#define IR_NEC_SHORT_PAUSE_MAX_TIME 2300 + +// RC-5 +#define IR_RC5_MIN_TIME 880 +#define IR_RC5_MAX_TIME 980 +#define IR_RC5_JOINED_BITS_TIME 1500 + +// IR protocols +#define IR_PROTOCOL_NONE 0 +#define IR_PROTOCOL_NEC 1 +#define IR_PROTOCOL_NEC_EXTENDED 2 +#define IR_PROTOCOL_RC5 3 +#define IR_PROTOCOL_RC5_EXTENDED 4 + +typedef uint8_t bool; +#define true 1 +#define false 0 + +// Timer 1 +#define TCCRnA TCCR1A +#define TCCRnB TCCR1B +#define COMnA1 COM1A1 +#define WGMn3 WGM13 +#define ICNCn ICNC1 +#define CSn1 CS11 +#define CSn0 CS10 +#define TIMSKn TIMSK1 +#define ICIEn ICIE1 +#define TOIEn TOIE1 +#define ICRn ICR1 +#define OCRnA OCR1A +#define ICESn ICES1 +#define TIMERn_CAPT_vect TIMER1_CAPT_vect +#define TIMERn_OVF_vect TIMER1_OVF_vect + + +// By default the output of IR receiver is high. +// When the carrier frequency is detected, the output will go low. +// So to make the IR receiver output low, the carrier must be on. +#define IR_OUTPUT_LOW(){\ + TCCRnA |= (1 << COMnA1);\ + TCNT1 = 0;\ +} + +#define IR_OUTPUT_HIGH(){\ + TCCRnA &= ~(1 << COMnA1);\ + TCNT1 = 0;\ +} + +//----------------------------------------------------------------------------- +// Global VARIABLES +//----------------------------------------------------------------------------- +typedef enum { + IR_STAGE_PULSE_1, + IR_STAGE_PULSE_2, + IR_STAGE_PULSE_3, + IR_STAGE_PULSE_4, + IR_STAGE_PULSE_5, + IR_STAGE_PULSE_6, + IR_STAGE_ADDRESS, + IR_STAGE_DATA_BITS, + IR_STAGE_STOP_BIT, + IR_STAGE_END +} IR_Stage; + +// Receiver +static uint32_t IR_dataRX; +static uint16_t IR_address; +static uint16_t IR_command; +static uint8_t IR_protocolType; +static uint8_t IR_protocolTypeExt; +static uint8_t IR_RXexpectedBits; +static uint8_t IR_stageRX; +static uint8_t IR_ToggleBit; +static uint8_t IR_waitNextPulse; +static bool IR_RepeatCode; +static bool IR_frameStart; +volatile static uint16_t IR_Timestamp; +volatile static uint8_t IR_TimerOverflows; + +//----------------------------------------------------------------------------- +// Function PROTOTYPES +//----------------------------------------------------------------------------- +void IR_init(void); +bool IR_codeAvailable(void); +bool IR_isRepeatCode(void); +uint8_t IR_getToggleBit(void); +uint8_t IR_getProtocol(void); +void IR_getCode(uint16_t* address, uint16_t* command); +void IR_sendCode(uint16_t address, uint16_t command, uint8_t toggle, uint8_t protocol); +void IR_disable(void); + +static void IR_resetRX(void); + + +//----------------------------------------------------------------------------- +// Functions +//----------------------------------------------------------------------------- + +/*----------------------------------------------------------------------------- + +------------------------------------------------------------------------------*/ +void IR_init(void){ + // Set Input Capture pin as input + ICP_DDR &= ~(1 << ICP_PIN); + + // Pin used to generate the 38kHz carrier signal + IR_CARRIER_PORT &= ~(1 << IR_CARRIER_PIN); + IR_CARRIER_DDR |= (1 << IR_CARRIER_PIN); + + /* Set Input Capture Pin */ + // Input Capture Noise Canceler + // Input Capture Edge Select Falling Edge + TCCRnB = (1 << ICNCn); + + // Set prescaler + #if IR_TIMER_PRESCALER == 64 + TCCRnB |= (1 << CSn1) | (1 << CSn0); + #elif IR_TIMER_PRESCALER == 8 + TCCRnB |= (1 << CSn1); + #elif IR_TIMER_PRESCALER == 1 + TCCRnB |= (1 << CSn0); + #endif + + // Timer/Counter 1, Input Capture Interrupt Enable + // Timer/Counter 1, Overflow Interrupt Enable + TIMSKn = (1 << ICIEn) | (1 << TOIEn); + + sei(); +} + + +/*----------------------------------------------------------------------------- + Returns true when new code is available. The decoding is also done here. +------------------------------------------------------------------------------*/ +bool IR_codeAvailable(void){ + bool code_received = false; + uint8_t command_inv; + IR_protocolTypeExt = IR_protocolType; + + if(IR_stageRX == IR_STAGE_END){ + if(IR_protocolType == IR_PROTOCOL_NEC){ + if(IR_dataRX == 0){ + // Repeat code received + code_received = true; + goto EXIT; + } + + // Save lower 2 bytes - the address + IR_address = IR_dataRX; + // Save the command + IR_command = IR_dataRX >> 16; + IR_command &= 0x00FF; + command_inv = IR_dataRX >> 24; + command_inv = ~command_inv; + + // Check if extended protocol + if((IR_address & 0x00FF) == ~(IR_address & 0xFF00)){ + IR_address &= 0x00FF; + }else{ + IR_protocolTypeExt = IR_PROTOCOL_NEC_EXTENDED; + } + + // Validate the command + if(IR_command == command_inv){ + code_received = true; + } + + }else if(IR_protocolType == IR_PROTOCOL_RC5){ + code_received = true; + + IR_address = (IR_dataRX >> 6) & 0x1F; + IR_command = IR_dataRX & 0x3F; + IR_ToggleBit = (IR_dataRX >> 11) & 0x01; + + // Second Start bit + if(((IR_dataRX >> 12) & 0x01) == 0){ + IR_protocolTypeExt = IR_PROTOCOL_RC5_EXTENDED; + IR_command |= (1 << 6); + } + } + + EXIT: + IR_stageRX = IR_STAGE_PULSE_1; + IR_resetRX(); + } + + if(code_received) return true; + return false; +} + + +/*----------------------------------------------------------------------------- + When IR_codeAvailable() returns true, this function can be used to + obtain the decoded address and command. + + address, command pointer to variables where to store decoded data +------------------------------------------------------------------------------*/ +void IR_getCode(uint16_t* address, uint16_t* command){ + *address = IR_address; + *command = IR_command; + IR_address = IR_command = 0; +} + + +/*----------------------------------------------------------------------------- + RC-5 protocol only. + Returns the toggle bit: 0 or 1. +------------------------------------------------------------------------------*/ +uint8_t IR_getToggleBit(void){ + return IR_ToggleBit; +} + + +/*----------------------------------------------------------------------------- + Returns the protocol type defined by the following macros: + + IR_PROTOCOL_NONE 0 + IR_PROTOCOL_NEC 1 + IR_PROTOCOL_NEC_EXTENDED 2 + IR_PROTOCOL_RC5 3 + IR_PROTOCOL_RC5_EXTENDED 4 +------------------------------------------------------------------------------*/ +uint8_t IR_getProtocol(void){ + return IR_protocolTypeExt; +} + + +/*----------------------------------------------------------------------------- + NEC protocol only. + Returns true if a repeat code is received. +------------------------------------------------------------------------------*/ +bool IR_isRepeatCode(void){ + bool buff = IR_RepeatCode; + IR_RepeatCode = false; + return buff; +} + + +/*----------------------------------------------------------------------------- + Encodes and sends data using delays. The input capture pin interrupt + is disabled during this time and the timer is used to generate the carrier + on a particular pin. The modulation is done by disabling the timer. + + toggle The toggle bit, 0 or 1 (for RC-5 only). + For NEC a 1 means a repeat code. + protocol One of the defined protocols +------------------------------------------------------------------------------*/ +void IR_sendCode(uint16_t address, uint16_t command, uint8_t toggle, uint8_t protocol){ + uint32_t frame = 0; + + // Block ICP ISR + IR_stageRX = IR_STAGE_END; + + // Generate 38kHz carrier + // PWM, Phase and Frequency Correct, Mode 8 + // Clear OC1A/OC1B on Compare Match when up-counting. + // Set OC1A/OC1B on Compare Match when down-counting. + // Prescaler 1 + TCCRnA = (1 << COMnA1); + TCCRnB = (1 << WGMn3) | (1 << CSn0); + TIMSKn = 0; + ICRn = IR_OCR_38KHZ; // 38kHz + OCRnA = IR_OCR_DUTYCYCLE; + + if((protocol == IR_PROTOCOL_NEC) || (protocol == IR_PROTOCOL_NEC_EXTENDED)){ + frame = (uint32_t)command << 16; + frame |= (uint32_t)(~command) << 24; + frame |= address; // extended 16-bits address + + if(protocol == IR_PROTOCOL_NEC) frame |= (~address) << 8; + + // Send leader code + // AGC pulse - low for x ms + IR_OUTPUT_LOW(); + _delay_ms(9); + + // Long or short pause - high x ms + IR_OUTPUT_HIGH(); + + if(toggle){ + _delay_us(2250); + goto END_CODE; + }else{ + _delay_us(4500); + } + + // Send code - LSB first + for(uint8_t i = 0; i < 32; i++){ + if(((uint32_t)1 << i) & frame){ + // Send 1 + IR_OUTPUT_LOW(); + _delay_us(562); // low pulse + IR_OUTPUT_HIGH(); + _delay_us(1687); // high pulse + }else{ + // Send 0 + IR_OUTPUT_LOW(); + _delay_us(562); // low pulse + IR_OUTPUT_HIGH(); + _delay_us(562); // high pulse + } + } + + END_CODE: + + // Stop bit + IR_OUTPUT_LOW(); + _delay_us(562); // low pulse + IR_OUTPUT_HIGH(); // idle high + + }else if((protocol == IR_PROTOCOL_RC5) || (protocol == IR_PROTOCOL_RC5_EXTENDED)){ + // Set Start bit 1 to 1 + frame = (1 << 13); + + // Set Start bit 2 + frame |= (1 << 12); // set bit to 1 + + if(protocol == IR_PROTOCOL_RC5_EXTENDED){ + // Set bit to 0 that represents a 1 but inverted + if(command & (1 << 6)) frame &= ~(1 << 12); + } + + // Set toggle bit + if(toggle) frame |= (1 << 11); + + // Address + frame |= address << 6; + + // Command + frame |= command; + + // Send code - MSB first + for(uint8_t i = 0; i < 14; i++){ + if(((uint16_t)1 << (13 - i)) & frame){ + // Send 1 + IR_OUTPUT_HIGH(); + _delay_us(889); // low pulse + IR_OUTPUT_LOW(); + _delay_us(889); // high pulse + }else{ + // Send 0 + IR_OUTPUT_LOW(); + _delay_us(889); // low pulse + IR_OUTPUT_HIGH(); + _delay_us(889); // high pulse + } + } + } + + // Restore Timer for Receive mode + TCCRnA = 0; + IR_init(); + IR_stageRX = IR_STAGE_PULSE_1; +} + + +/*----------------------------------------------------------------------------- + Disable the Timer and associated interrupts. +------------------------------------------------------------------------------*/ +void IR_disable(void){ + TIMSKn = 0; + TCCRnB = 0; +} + + +static void IR_resetRX(void){ + IR_dataRX = 0; + IR_RXexpectedBits = 0; + IR_waitNextPulse = 0; + IR_stageRX = IR_STAGE_PULSE_1; +} + + +//----------------------------------------------------------------------------- +// ISR Handlers +//----------------------------------------------------------------------------- +// Timer/Counter Capture Event +// ~35us @ 16MHz + +/*----------------------------------------------------------------------------- + The protocol type is defined here but not the extended ones. + If the protocol is extended is decided in the decoder function. + This ISR triggers on every pulse then the pulses are converted to bits + that are stored in a 32-bit variable used by the decoder function. +------------------------------------------------------------------------------*/ +ISR(TIMERn_CAPT_vect){ + uint16_t pulse_length; + uint16_t IR_TimestampPrev; + uint8_t pulse_level; + + if(IR_stageRX == IR_STAGE_END) return; + + // Save previous timestamp + IR_TimestampPrev = IR_Timestamp; + + // Read TCNT1 timestamp + IR_Timestamp = ICRn; + + // Select the opposite edge to trigger + TCCRnB ^= (1 << ICESn); + pulse_level = TCCRnB & (1< 15000){ + // This prevents collecting data in the middle of the frame + IR_frameStart = true; + IR_resetRX(); + return; + } + + + // Detect protocol type by checking leader code + switch(IR_stageRX){ + case IR_STAGE_PULSE_1: + IR_frameStart = false; + IR_protocolType = 0; + IR_stageRX = IR_STAGE_PULSE_2; + + if(pulse_length < IR_NEC_AGC_MAX_TIME && pulse_length > IR_NEC_AGC_MIN_TIME){ + // NEC protocol, AGC pulse + IR_protocolType = IR_PROTOCOL_NEC; + }else if(pulse_level == 0 && pulse_length > IR_RC5_MIN_TIME && pulse_length < IR_RC5_MAX_TIME){ + // RC-5 protocol + // Second half of the Start Bit 1 + IR_protocolType = IR_PROTOCOL_RC5; + IR_stageRX = IR_STAGE_DATA_BITS; + IR_RXexpectedBits = 13; + + if(pulse_length > IR_RC5_JOINED_BITS_TIME){ + IR_waitNextPulse++; + } + } + break; + + case IR_STAGE_PULSE_2: + if(IR_protocolType == IR_PROTOCOL_NEC){ + if(pulse_length < IR_NEC_LONG_PAUSE_MAX_TIME && pulse_length > IR_NEC_LONG_PAUSE_MIN_TIME){ + // Check for long pause + IR_stageRX = IR_STAGE_DATA_BITS; + + }else if(pulse_length < IR_NEC_SHORT_PAUSE_MAX_TIME && pulse_length > IR_NEC_SHORT_PAUSE_MIN_TIME){ + // Check for short pause + IR_RepeatCode = true; + IR_stageRX = IR_STAGE_END; + } + + } + break; + + case IR_STAGE_DATA_BITS: + // Collect NEC data bits - LSB is sent first + if(IR_protocolType == IR_PROTOCOL_NEC){ + // Wait for two pulses to form a bit + if(pulse_level){ + if(pulse_level && pulse_length > 1500){ + IR_dataRX |= ((uint32_t)1 << IR_RXexpectedBits); + } + + IR_RXexpectedBits++; + + // All bits received. Wait for STOP bit. + if(IR_RXexpectedBits > 31){ + IR_stageRX = IR_STAGE_STOP_BIT; + } + } + + // Collect RC-5 data bits - MSB is sent first + }else if(IR_protocolType == IR_PROTOCOL_RC5){ + IR_waitNextPulse++; + + // Wait for two pulses to form a bit + if(IR_waitNextPulse > 1){ + IR_waitNextPulse = 0; + IR_RXexpectedBits--; + + if(pulse_level == 0){ + IR_dataRX |= ((uint32_t)1 << IR_RXexpectedBits); + } + } + + // Received half of the next bit + if(pulse_length > IR_RC5_JOINED_BITS_TIME){ + IR_waitNextPulse++; + } + + // All bits received + if(IR_RXexpectedBits == 1 && IR_waitNextPulse == 1 && pulse_level == 0){ + // The case when bit 0 is at the end + IR_stageRX = IR_STAGE_END; + } + + if(IR_RXexpectedBits == 0){ + // The case when bit 1 is at the end + IR_stageRX = IR_STAGE_END; + } + } + break; + + case IR_STAGE_STOP_BIT: + IR_stageRX = IR_STAGE_END; + } +} + + +// Timer/Counter Overflow +ISR(TIMERn_OVF_vect){ + IR_TimerOverflows++; +} + +#endif /* IRREMOTE_H_ */ \ No newline at end of file diff --git a/src/libs/softwarePWM.h b/src/libs/softwarePWM.h new file mode 100644 index 0000000..bd74749 --- /dev/null +++ b/src/libs/softwarePWM.h @@ -0,0 +1,499 @@ +/*___________________________________________________________________________________________________ + +Title: + softwarePWM.h v1.0 + +Description: + Multichannel software PWM based on "AVR136: Low-Jitter Multi-Channel Software PWM" + application note. + + For complete details visit: + https://www.programming-electronics-diy.xyz/2021/02/multi-channel-software-pwm-library-for.html + +Author: + Liviu Istrate + istrateliviu24@yahoo.com + www.programming-electronics-diy.xyz + +Donate: + Software development takes time and effort so if you find this useful consider a small donation at: + paypal.me/alientransducer +_____________________________________________________________________________________________________*/ + + +/* ----------------------------- LICENSE - GNU GPL v3 ----------------------------------------------- + +* This license must be included in any redistribution. + +* Copyright (C) 2021 Liviu Istrate, www.programming-electronics-diy.xyz (istrateliviu24@yahoo.com) + +* Project URL: https://www.programming-electronics-diy.xyz/2021/02/multi-channel-software-pwm-library-for.html + +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. + +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. + +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . + +--------------------------------- END OF LICENSE --------------------------------------------------*/ + +#ifndef SOFTWARE_PWM_H +#define SOFTWARE_PWM_H + +/************************************************************* + INCLUDES +**************************************************************/ +#include +#include +#include +#include + +/************************************************************* + SYSTEM SETTINGS +**************************************************************/ +#ifndef PORTE + #define PINE _SFR_IO8(0x0C) + #define DDRE _SFR_IO8(0x0D) + #define PORTE _SFR_IO8(0x0E) +#endif + +#define TRUE 1 +#define FALSE 0 + +#define SOFTPWM_TIMER0 0 // Use timer0 +#define SOFTPWM_TIMER1 1 // Use timer1 +#define SOFTPWM_TIMER2 2 // Use timer2 + +#define SOFTPWM_PWMDEFAULT 0x00 // default PWM value at start up for all channels + + +/************************************************************* + USER SETUP SECTION +**************************************************************/ +#define SOFTPWM_TIMER SOFTPWM_TIMER0 // Which timer to use +#define SOFTPWM_TIMER1_OCR 255 +#define SOFTPWM_CHMAX 7 // maximum number of PWM channels +#define USE_LOGARITHMIC_ARRAY FALSE + +// Mapping channels to pin and ports +#define SOFTPWM_CHANNEL0_DDR DDRD +#define SOFTPWM_CHANNEL0_PORT PORTD +#define SOFTPWM_CHANNEL0_PIN 4 +#define SOFTPWM_CHANNEL0_PIN_STATES pinlevelD + +#define SOFTPWM_CHANNEL1_DDR DDRD +#define SOFTPWM_CHANNEL1_PORT PORTD +#define SOFTPWM_CHANNEL1_PIN 5 +#define SOFTPWM_CHANNEL1_PIN_STATES pinlevelD + +#define SOFTPWM_CHANNEL2_DDR DDRD +#define SOFTPWM_CHANNEL2_PORT PORTD +#define SOFTPWM_CHANNEL2_PIN 6 +#define SOFTPWM_CHANNEL2_PIN_STATES pinlevelD + +#define SOFTPWM_CHANNEL3_DDR DDRD +#define SOFTPWM_CHANNEL3_PORT PORTD +#define SOFTPWM_CHANNEL3_PIN 7 +#define SOFTPWM_CHANNEL3_PIN_STATES pinlevelD + +#define SOFTPWM_CHANNEL4_DDR DDRB +#define SOFTPWM_CHANNEL4_PORT PORTB +#define SOFTPWM_CHANNEL4_PIN 2 +#define SOFTPWM_CHANNEL4_PIN_STATES pinlevelB + +#define SOFTPWM_CHANNEL5_DDR DDRB +#define SOFTPWM_CHANNEL5_PORT PORTB +#define SOFTPWM_CHANNEL5_PIN 3 +#define SOFTPWM_CHANNEL5_PIN_STATES pinlevelB + +#define SOFTPWM_CHANNEL6_DDR DDRB +#define SOFTPWM_CHANNEL6_PORT PORTB +#define SOFTPWM_CHANNEL6_PIN 4 +#define SOFTPWM_CHANNEL6_PIN_STATES pinlevelB + +#define SOFTPWM_CHANNEL7_DDR 0 +#define SOFTPWM_CHANNEL7_PORT 0 +#define SOFTPWM_CHANNEL7_PIN 0 +#define SOFTPWM_CHANNEL7_PIN_STATES 0 + +#define SOFTPWM_CHANNEL8_DDR 0 +#define SOFTPWM_CHANNEL8_PORT 0 +#define SOFTPWM_CHANNEL8_PIN 0 +#define SOFTPWM_CHANNEL8_PIN_STATES 0 + +#define SOFTPWM_CHANNEL9_DDR 0 +#define SOFTPWM_CHANNEL9_PORT 0 +#define SOFTPWM_CHANNEL9_PIN 0 +#define SOFTPWM_CHANNEL9_PIN_STATES 0 + +// Which ports are used +#define SOFTPWM_ON_PORT_B TRUE +#define SOFTPWM_ON_PORT_C FALSE +#define SOFTPWM_ON_PORT_D TRUE +#define SOFTPWM_ON_PORT_E FALSE + +// What pins are on this ports +#define SOFTPWM_PINS_PORTB _BV(2) | _BV(3) | _BV(4) +#define SOFTPWM_PINS_PORTC FALSE +#define SOFTPWM_PINS_PORTD _BV(4) | _BV(5) | _BV(6) | _BV(7) +#define SOFTPWM_PINS_PORTE FALSE + + +/************************************************************* + SYSTEM SETTINGS +**************************************************************/ + +#if SOFTPWM_CHMAX > 0 + #define CH0_CLEAR (SOFTPWM_CHANNEL0_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL0_PIN)) +#endif + +#if SOFTPWM_CHMAX > 1 + #define CH1_CLEAR (SOFTPWM_CHANNEL1_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL1_PIN)) +#endif + +#if SOFTPWM_CHMAX > 2 + #define CH2_CLEAR (SOFTPWM_CHANNEL2_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL2_PIN)) +#endif + +#if SOFTPWM_CHMAX > 3 + #define CH3_CLEAR (SOFTPWM_CHANNEL3_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL3_PIN)) +#endif + +#if SOFTPWM_CHMAX > 4 + #define CH4_CLEAR (SOFTPWM_CHANNEL4_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL4_PIN)) +#endif + +#if SOFTPWM_CHMAX > 5 + #define CH5_CLEAR (SOFTPWM_CHANNEL5_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL5_PIN)) +#endif + +#if SOFTPWM_CHMAX > 6 + #define CH6_CLEAR (SOFTPWM_CHANNEL6_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL6_PIN)) +#endif + +#if SOFTPWM_CHMAX > 7 + #define CH7_CLEAR (SOFTPWM_CHANNEL7_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL7_PIN)) +#endif + +#if SOFTPWM_CHMAX > 8 + #define CH8_CLEAR (SOFTPWM_CHANNEL8_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL8_PIN)) +#endif + +#if SOFTPWM_CHMAX > 9 + #define CH9_CLEAR (SOFTPWM_CHANNEL9_PIN_STATES &= ~(1 << SOFTPWM_CHANNEL9_PIN)) +#endif + + +/************************************************************* + GLOBAL VARIABLES +**************************************************************/ +static unsigned char compare[SOFTPWM_CHMAX]; +static volatile unsigned char compbuff[SOFTPWM_CHMAX]; + +#if USE_LOGARITHMIC_ARRAY == TRUE +static const uint8_t LogBrightness[] PROGMEM = { + 8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,12,12,12,12,13,13,13,14,14,14, + 15,15,15,16,16,17,17,17,18,18,19,19,19,20,20,21,21,22,22, + 23,23,24,25,25,26,26,27,28,28,29,30,30,31,32,32,33,34,35, + 35,36,37,38,39,40,41,42,42,43,44,45,46,48,49,50,51,52,53, + 54,56,57,58,59,61,62,64,65,66,68,69,71,73,74,76,78,79,81, + 83,85,87,89,91,93,95,97,99,101,103,106,108,110,113,115,118, + 121,123,126,129,132,135,138,141,144,147,150,154,157,161,164, + 168,171,175,179,183,187,191,196,200,204,209,213,218,223,228, + 233,238,243,249,255 +}; +#endif + + +/************************************************************* + FUNCTION PROTOTYPES +**************************************************************/ +void softwarePWM_Init(void); +void softwarePWM_Set(unsigned char channel, unsigned char value); +void softwarePWM_Resume(void); +void softwarePWM_Pause(void); + +#if USE_LOGARITHMIC_ARRAY == TRUE +uint8_t softwarePWM_LineartoLog(uint8_t dutyCycle); +#endif + + +/************************************************************* + FUNCTIONS +**************************************************************/ +void softwarePWM_Init(void){ + unsigned char i; + unsigned char pwm = SOFTPWM_PWMDEFAULT; + + // Set port pins to output + #if SOFTPWM_ON_PORT_B == TRUE + DDRB |= SOFTPWM_PINS_PORTB; + #endif + + #if SOFTPWM_ON_PORT_C == TRUE + DDRC |= SOFTPWM_PINS_PORTC; + #endif + + #if SOFTPWM_ON_PORT_D == TRUE + DDRD |= SOFTPWM_PINS_PORTD; + #endif + + #if SOFTPWM_ON_PORT_E == TRUE + DDRE |= SOFTPWM_PINS_PORTE; + #endif + + // Initialise all channels + for(i=0; i < SOFTPWM_CHMAX; i++){ + compare[i] = pwm; + compbuff[i] = pwm; + } + + #if SOFTPWM_TIMER == SOFTPWM_TIMER0 + TIFR0 = (1 << TOV0); // clear interrupt flag + TIMSK0 = (1 << TOIE0); // enable overflow interrupt + TCCR0B = (1 << CS00); // start timer, no prescale + #define SOFTPWM_ISR_VECT TIMER0_OVF_vect + + #elif SOFTPWM_TIMER == SOFTPWM_TIMER1 + TIFR1 = (1 << OCF1A); // clear interrupt flag + TIMSK1 = (1 << OCIE1A); // enable Output Compare A Match interrupt + TCCR1B = (1 << CS10 | 1 << WGM12); // start timer, no prescale + OCR1A = SOFTPWM_TIMER1_OCR; + #define SOFTPWM_ISR_VECT TIMER1_COMPA_vect + + #elif SOFTPWM_TIMER == SOFTPWM_TIMER2 + TIFR2 = (1 << TOV2); // clear interrupt flag + TIMSK2 = (1 << TOIE2); // enable overflow interrupt + TCCR2B = (1 << CS20); // start timer, no prescale + #define SOFTPWM_ISR_VECT TIMER2_OVF_vect + #endif + + sei(); // enable global interrupts +} + + + +void softwarePWM_Set(unsigned char channel, unsigned char value){ + if(channel < SOFTPWM_CHMAX) compbuff[channel] = value; +} + + + +void softwarePWM_Resume(void){ + #if SOFTPWM_TIMER == SOFTPWM_TIMER0 + power_timer0_enable(); + TIMSK0 = (1 << TOIE0); // enable overflow interrupt + TCCR0B = (1 << CS00); // start timer, no prescale + + #elif SOFTPWM_TIMER == SOFTPWM_TIMER1 + power_timer1_enable(); + TIFR1 = (1 << OCF1A); // clear interrupt flag + TIMSK1 = (1 << OCIE1A); // enable Output Compare A Match interrupt + TCCR1B = (1 << CS10 | 1 << WGM12); // start timer, no prescale + OCR1A = SOFTPWM_TIMER1_OCR; + + #elif SOFTPWM_TIMER == SOFTPWM_TIMER2 + power_timer2_enable(); + TIMSK2 = (1 << TOIE2); // enable overflow interrupt + TCCR2B = (1 << CS20); // start timer, no prescale + #endif +} + + + +void softwarePWM_Pause(void){ + #if SOFTPWM_TIMER == SOFTPWM_TIMER0 + TIMSK0 &= ~(1 << TOIE0); // disable overflow interrupt + TCCR0B = 0; // No clock source (Timer/Counter stopped) + power_timer0_disable(); + + #elif SOFTPWM_TIMER == SOFTPWM_TIMER1 + TIMSK1 = (1 << OCIE1A); // disable Output Compare A Match interrupt + TCCR1B = 0; // No clock source (Timer/Counter stopped) + power_timer1_disable(); + + #elif SOFTPWM_TIMER == SOFTPWM_TIMER2 + TIMSK2 &= ~(1 << TOIE2); // disable overflow interrupt + TCCR2B = 0; // No clock source (Timer/Counter stopped) + power_timer2_disable(); + #endif +} + + +#if USE_LOGARITHMIC_ARRAY == TRUE +uint8_t softwarePWM_LineartoLog(uint8_t dutyCycle){ + + if(dutyCycle < 32){ + return 0; + + }else if(dutyCycle < 51){ + return 1; + + }else if(dutyCycle < 64){ + return 2; + + }else if(dutyCycle < 75){ + return 3; + + }else if(dutyCycle < 83){ + return 4; + + }else if(dutyCycle < 90){ + return 5; + + }else if(dutyCycle < 96){ + return 6; + + }else if(dutyCycle < 102){ + return 7; + + } + + if(dutyCycle > 255) dutyCycle = 0; + dutyCycle -= 102; + + return pgm_read_byte(&LogBrightness[dutyCycle]); + +} +#endif + + +/************************************************************* + ISR Handlers +**************************************************************/ + +ISR(SOFTPWM_ISR_VECT){ + static unsigned char softcount = 0xFF; + + #if SOFTPWM_ON_PORT_B == TRUE + static unsigned char pinlevelB = SOFTPWM_PINS_PORTB; + // Update outputs + PORTB = (PORTB & (~(SOFTPWM_PINS_PORTB))) | pinlevelB; + #endif + + #if SOFTPWM_ON_PORT_C == TRUE + static unsigned char pinlevelC = SOFTPWM_PINS_PORTC; + PORTC = (PORTC & (~(SOFTPWM_PINS_PORTC))) | pinlevelC; + #endif + + #if SOFTPWM_ON_PORT_D == TRUE + static unsigned char pinlevelD = SOFTPWM_PINS_PORTD; + PORTD = (PORTD & (~(SOFTPWM_PINS_PORTD))) | pinlevelD; + #endif + + #if SOFTPWM_ON_PORT_E == TRUE + static unsigned char pinlevelE = SOFTPWM_PINS_PORTE; + PORTE = (PORTE & (~(SOFTPWM_PINS_PORTE))) | pinlevelE; + #endif + + if(++softcount == 0){ + #if SOFTPWM_CHMAX > 0 + compare[0] = compbuff[0]; + #endif + + #if SOFTPWM_CHMAX > 1 + compare[1] = compbuff[1]; + #endif + + #if SOFTPWM_CHMAX > 2 + compare[2] = compbuff[2]; + #endif + + #if SOFTPWM_CHMAX > 3 + compare[3] = compbuff[3]; + #endif + + #if SOFTPWM_CHMAX > 4 + compare[4] = compbuff[4]; + #endif + + #if SOFTPWM_CHMAX > 5 + compare[5] = compbuff[5]; + #endif + + #if SOFTPWM_CHMAX > 6 + compare[6] = compbuff[6]; + #endif + + #if SOFTPWM_CHMAX > 7 + compare[7] = compbuff[7]; + #endif + + #if SOFTPWM_CHMAX > 8 + compare[8] = compbuff[8]; + #endif + + #if SOFTPWM_CHMAX > 9 + compare[9] = compbuff[9]; + #endif + + + // Set all port pins high + #if SOFTPWM_ON_PORT_B == TRUE + pinlevelB = SOFTPWM_PINS_PORTB; + #endif + + #if SOFTPWM_ON_PORT_C == TRUE + pinlevelC = SOFTPWM_PINS_PORTC; + #endif + + #if SOFTPWM_ON_PORT_D == TRUE + pinlevelD = SOFTPWM_PINS_PORTD; + #endif + + #if SOFTPWM_ON_PORT_E == TRUE + pinlevelE = SOFTPWM_PINS_PORTE; + #endif + } + + // clear port pin on compare match (executed on next interrupt) + #if SOFTPWM_CHMAX > 0 + if(compare[0] == softcount) CH0_CLEAR; + #endif + + #if SOFTPWM_CHMAX > 1 + if(compare[1] == softcount) CH1_CLEAR; + #endif + + #if SOFTPWM_CHMAX > 2 + if(compare[2] == softcount) CH2_CLEAR; + #endif + + #if SOFTPWM_CHMAX > 3 + if(compare[3] == softcount) CH3_CLEAR; + #endif + + #if SOFTPWM_CHMAX > 4 + if(compare[4] == softcount) CH4_CLEAR; + #endif + + #if SOFTPWM_CHMAX > 5 + if(compare[5] == softcount) CH5_CLEAR; + #endif + + #if SOFTPWM_CHMAX > 6 + if(compare[6] == softcount) CH6_CLEAR; + #endif + + #if SOFTPWM_CHMAX > 7 + if(compare[7] == softcount) CH7_CLEAR; + #endif + + #if SOFTPWM_CHMAX > 8 + if(compare[8] == softcount) CH8_CLEAR; + #endif + + #if SOFTPWM_CHMAX > 9 + if(compare[9] == softcount) CH9_CLEAR; + #endif + +} + +#endif \ No newline at end of file diff --git a/src/libs/uart.h b/src/libs/uart.h new file mode 100644 index 0000000..b6b725c --- /dev/null +++ b/src/libs/uart.h @@ -0,0 +1,169 @@ +// Reference: http://www.rjhcoding.com/avrc-uart.php + +#ifndef F_CPU +#define F_CPU 16000000UL +#endif + +#ifndef BAUDRATE +#define BAUDRATE 9600 +#endif + +#define BAUD_PRESCALLER (((F_CPU / (BAUDRATE * 16UL))) - 1) + +#include +#include + +void uart_init(); +void uart_putc(unsigned char data); +void uart_puts(const char* s); +void uart_putU8(uint8_t val); +void uart_putU16(uint16_t val); +void uart_puthex8(uint8_t val); +void uart_puthex16(uint16_t val); + +void uart_init() +{ + UBRR0H = (uint8_t)(BAUD_PRESCALLER >> 8); + UBRR0L = (uint8_t)(BAUD_PRESCALLER); + + UCSR0B = (1 << RXEN0) | (1 << TXEN0); + UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); +} + +void uart_putc(unsigned char data) +{ + // wait for transmit buffer to be empty + while (!(UCSR0A & (1 << UDRE0))) + ; + + // load data into transmit register + UDR0 = data; +} + +void uart_puts(const char *s) +{ + // transmit character until NULL is reached + while (*s > 0) + uart_putc(*s++); +} + +void uart_putU8(uint8_t val) +{ + uint8_t dig1 = '0', dig2 = '0'; + + // count value in 100s place + while (val >= 100) + { + val -= 100; + dig1++; + } + + // count value in 10s place + while (val >= 10) + { + val -= 10; + dig2++; + } + + // print first digit (or ignore leading zeros) + if (dig1 != '0') + uart_putc(dig1); + + // print second digit (or ignore leading zeros) + if ((dig1 != '0') || (dig2 != '0')) + uart_putc(dig2); + + // print final digit + uart_putc(val + '0'); +} + +void uart_putU16(uint16_t val) +{ + uint8_t dig1 = '0', dig2 = '0', dig3 = '0', dig4 = '0'; + + // count value in 10000s place + while (val >= 10000) + { + val -= 10000; + dig1++; + } + + // count value in 1000s place + while (val >= 1000) + { + val -= 1000; + dig2++; + } + + // count value in 100s place + while (val >= 100) + { + val -= 100; + dig3++; + } + + // count value in 10s place + while (val >= 10) + { + val -= 10; + dig4++; + } + + // was previous value printed? + uint8_t prevPrinted = 0; + + // print first digit (or ignore leading zeros) + if (dig1 != '0') + { + uart_putc(dig1); + prevPrinted = 1; + } + + // print second digit (or ignore leading zeros) + if (prevPrinted || (dig2 != '0')) + { + uart_putc(dig2); + prevPrinted = 1; + } + + // print third digit (or ignore leading zeros) + if (prevPrinted || (dig3 != '0')) + { + uart_putc(dig3); + prevPrinted = 1; + } + + // print third digit (or ignore leading zeros) + if (prevPrinted || (dig4 != '0')) + { + uart_putc(dig4); + prevPrinted = 1; + } + + // print final digit + uart_putc(val + '0'); +} + +void uart_puthex8(uint8_t val) +{ + // extract upper and lower nibbles from input value + uint8_t upperNibble = (val & 0xF0) >> 4; + uint8_t lowerNibble = val & 0x0F; + + // convert nibble to its ASCII hex equivalent + upperNibble += upperNibble > 9 ? 'A' - 10 : '0'; + lowerNibble += lowerNibble > 9 ? 'A' - 10 : '0'; + + // print the characters + uart_putc(upperNibble); + uart_putc(lowerNibble); +} + +void uart_puthex16(uint16_t val) +{ + // transmit upper 8 bits + uart_puthex8((uint8_t)(val >> 8)); + + // transmit lower 8 bits + uart_puthex8((uint8_t)(val & 0x00FF)); +} \ No newline at end of file