75 lines
1.7 KiB
C++
75 lines
1.7 KiB
C++
#include <avr/io.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "serial.h"
|
|
#include "writepin.h"
|
|
#include "WirelessRelay.h"
|
|
#include "pwm.h"
|
|
|
|
bool serialDispatch(Serial* serial , WirelessRelay* relayOne, WirelessRelay* relayTow, WirelessRelay* relayThree, WirelessRelay* relayFour)
|
|
{
|
|
|
|
if(serial->dataIsWaiting())
|
|
{
|
|
char buffer[20];
|
|
const int length = serial->getString(buffer, 7);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
DDRB = 0xFF;//= (1 << PB5) | ( 1 << PB1);
|
|
DDRD = 0xFF;//= (1 << PD3) | (1 << PD5);
|
|
|
|
PORTB = 0x00;
|
|
sei();
|
|
|
|
Serial serial;
|
|
|
|
|
|
/* Pwm16b pwmA;
|
|
pwmA.setDuty(10);
|
|
pwmA.on();*/
|
|
|
|
|
|
Pwm8b pwmTc0( &TCCR0A, &TCCR0B, &OCR0A, &OCR0B );
|
|
//pwmB.on();
|
|
|
|
Pwm8b pwmTc2( &TCCR2A, &TCCR2B, &OCR2A, &OCR2B, 0b00000101, false, true );
|
|
|
|
//pwmTc0.setDutyA(10);
|
|
//pwmTc0.setDutyB(10);
|
|
pwmTc2.setDutyB(128);
|
|
|
|
|
|
/*
|
|
//fast 8 bit PWM pwm A
|
|
TCCR0A|= (1<<COM0A1) | (1<<COM0B1);
|
|
TCCR0A|=(1<<WGM01) | (1<<WGM00);
|
|
|
|
//start with /1024 prescaller
|
|
TCCR0B =(1 << CS00) | (1 << CS01);*/
|
|
|
|
WirelessRelay relayOne(&PORTB, PB5, 0b1001110000000000);
|
|
WirelessRelay relayTow(&PORTB, PB5, 0b1001101000000000);
|
|
WirelessRelay relayThree(&PORTB, PB5, 0b1001100100000000);
|
|
WirelessRelay relayFour(&PORTB, PB5, 0b1001100010000000);
|
|
|
|
serial.putString("RGBController v0.1 starting\n");
|
|
|
|
uint8_t duty = 0;
|
|
while(true)
|
|
{
|
|
serialDispatch(&serial, &relayOne, &relayTow, &relayThree, &relayFour);
|
|
pwmTc0.setDutyA(duty);
|
|
pwmTc0.setDutyB(duty);
|
|
pwmTc2.setDutyB(duty);
|
|
duty++;
|
|
_delay_us(50000);
|
|
}
|
|
|
|
return 0; //master interupt.
|
|
}
|