|
|
|
@ -25,6 +25,8 @@
|
|
|
|
|
#include "uart.h"
|
|
|
|
|
#include "hcs12ss59t/hcs12ss59t.h"
|
|
|
|
|
|
|
|
|
|
void vu_meter();
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
SEND_ENCAPSULATED_COMMAND = 0,
|
|
|
|
|
GET_ENCAPSULATED_RESPONSE,
|
|
|
|
@ -292,6 +294,7 @@ void waitboot()
|
|
|
|
|
int main(void)
|
|
|
|
|
{
|
|
|
|
|
waitboot();
|
|
|
|
|
vu_meter(); // For debugging only
|
|
|
|
|
wdt_enable(WDTO_1S);
|
|
|
|
|
odDebugInit();
|
|
|
|
|
hardwareInit();
|
|
|
|
@ -342,3 +345,95 @@ int main(void)
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#define ADC_NOISE 15 // ADC RAW value
|
|
|
|
|
#define BAR_SPEED 22 // In application cycles
|
|
|
|
|
#define PK_SPEED 40 // In application cycles
|
|
|
|
|
#define PK_DELAY 36 // In PKBAR cycles
|
|
|
|
|
|
|
|
|
|
void vu_meter()
|
|
|
|
|
{
|
|
|
|
|
uint16_t vu_new;
|
|
|
|
|
uint8_t vu[2] = {0, 0};
|
|
|
|
|
uint8_t pk[2] = {0, 0};
|
|
|
|
|
uint8_t pk_del[2] = {0, 0};
|
|
|
|
|
uint16_t adc_val[2];
|
|
|
|
|
int cnt = 0;
|
|
|
|
|
uint16_t adc_max = 175;
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
cli();
|
|
|
|
|
|
|
|
|
|
/* Config ADC */
|
|
|
|
|
ADCSRA = (1 << ADEN) | (1 << ADPS1);
|
|
|
|
|
|
|
|
|
|
hcs12ss59t_init();
|
|
|
|
|
DDRD |= (1 << PD0);
|
|
|
|
|
FILAMENT_EN;
|
|
|
|
|
hcs12ss59t_set_brightness(8);
|
|
|
|
|
hcs12ss59t_set_text(" HCS12SS59T ");
|
|
|
|
|
hcs12ss59t_en_progress();
|
|
|
|
|
|
|
|
|
|
/* main event loop */
|
|
|
|
|
for(;;){
|
|
|
|
|
if (!(PIND & (1 << PD7))) {
|
|
|
|
|
cli();
|
|
|
|
|
hcs12ss59t_set_text("-BOOTLOADER-");
|
|
|
|
|
FILAMENT_DIS;
|
|
|
|
|
wdt_enable(WDTO_15MS);
|
|
|
|
|
while (1); // WD Timeout -> CPU reset
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Acquire data */
|
|
|
|
|
ADMUX = (4) | (1 << REFS0) | (1 << REFS1) | (1 << REFS1);
|
|
|
|
|
ADCSRA |= (1 << ADSC);
|
|
|
|
|
while (!(ADCSRA & (1 << ADIF)));
|
|
|
|
|
ADCSRA |= (1 << ADIF);
|
|
|
|
|
ADMUX = (5) | (1 << REFS0) | (1 << REFS1) | (1 << REFS1);
|
|
|
|
|
ADCSRA |= (1 << ADSC);
|
|
|
|
|
adc_val[0] = ADC;
|
|
|
|
|
while (!(ADCSRA & (1 << ADIF)));
|
|
|
|
|
ADCSRA |= (1 << ADIF);
|
|
|
|
|
adc_val[1] = ADC;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 2; ++i) {
|
|
|
|
|
if (adc_val[i] < ADC_NOISE)
|
|
|
|
|
adc_val[i] = 0;
|
|
|
|
|
else
|
|
|
|
|
adc_val[i] -= ADC_NOISE;
|
|
|
|
|
vu_new = adc_val[i] * 60 / adc_max;
|
|
|
|
|
if (vu_new >= vu[i]) {
|
|
|
|
|
vu[i] = vu_new;
|
|
|
|
|
} else {
|
|
|
|
|
if ((cnt % BAR_SPEED) == 0) {
|
|
|
|
|
if (vu[i] > 0) {
|
|
|
|
|
vu[i] -= 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (vu_new > pk[i]) {
|
|
|
|
|
pk[i] = vu_new;
|
|
|
|
|
pk_del[i] = PK_DELAY;
|
|
|
|
|
} else {
|
|
|
|
|
if (pk_del[i] == 0) {
|
|
|
|
|
if ((cnt % PK_SPEED) == 0) {
|
|
|
|
|
if (pk[i] > 0) {
|
|
|
|
|
pk[i]--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if ((cnt % PK_SPEED) == 0) {
|
|
|
|
|
pk_del[i]--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hcs12ss59t_set_progress_peak(vu[0], vu[1], pk[0], pk[1]);
|
|
|
|
|
|
|
|
|
|
if (cnt == 209)
|
|
|
|
|
cnt = 0;
|
|
|
|
|
else
|
|
|
|
|
cnt++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|