From 2f02dcff5103d6466523678a8fafb385530406d2 Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Wed, 29 Aug 2012 00:26:52 +0200 Subject: [PATCH] pwm clock highspeed mode --- pwm.c | 5 ++++- pwmled.c | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/pwm.c b/pwm.c index af4e4fa..0c4f3d0 100644 --- a/pwm.c +++ b/pwm.c @@ -7,7 +7,7 @@ void init_pwm() { /* Async clock */ - PLLCSR = _BV(LSM) | _BV(PLLE); + PLLCSR = _BV(PLLE); /* Synchronize to the phase lock */ _delay_ms(1); @@ -20,8 +20,10 @@ void init_pwm() TCCR1B = _BV(7) // PWM1X: PWM inversion mode | _BV(CS10) // no clock prescaling ; + TC1H = 0x01; OCR1C = 0xFF; // TOP value + TC1H = 0x00; OCR1D = OCR1B = OCR1A = 0; // initial stride is 0 DDRB &= ~(_BV( PB1 ) | _BV( PB3 ) | _BV( PB5 )); // tristate it @@ -48,6 +50,7 @@ void pwm_off(unsigned char n) void pwm_set(unsigned char n, unsigned char stride) { + TC1H = 0x00; switch (n) { case 0: OCR1A = stride; break; case 1: OCR1B = stride; break; diff --git a/pwmled.c b/pwmled.c index 4861793..ac0e444 100644 --- a/pwmled.c +++ b/pwmled.c @@ -59,8 +59,8 @@ static void inline probing_adc(unsigned char n, uint16_t adcval) unsigned char pwm = pwm_probes[n]; #if 0 - log_byte(n); log_byte(0xF4); + log_byte(n); log_word(adcval); #endif @@ -95,17 +95,17 @@ static void inline probing_adc(unsigned char n, uint16_t adcval) pwm_off(n); // pwm_set(n, 0); pwmled_state[n] = ST_OFF; - log_byte(n); log_byte(0xF1); + log_byte(n); return; } - if (pwm >= 0x60) { // over the maximum! + if (pwm >= 0x70) { // over the maximum! + pwm_off(n); pwmled_state[n] = ST_DISABLED; - log_byte(n); log_byte(0xF2); - pwm_off(n); + log_byte(n); // pwm_set(n, 0); return; } -- 2.39.3