|
@@ -44,8 +44,6 @@
|
|
|
#include "Timer.h"
|
|
|
#include "Configuration_prusa.h"
|
|
|
|
|
|
-
|
|
|
-
|
|
|
//===========================================================================
|
|
|
//=============================public variables============================
|
|
|
//===========================================================================
|
|
@@ -1130,18 +1128,9 @@ void tp_init()
|
|
|
|
|
|
adc_init();
|
|
|
|
|
|
-#ifdef SYSTEM_TIMER_2
|
|
|
- timer02_init();
|
|
|
+ timer0_init();
|
|
|
OCR2B = 128;
|
|
|
TIMSK2 |= (1<<OCIE2B);
|
|
|
-#else //SYSTEM_TIMER_2
|
|
|
- // Use timer0 for temperature measurement
|
|
|
- // Interleave temperature interrupt with millies interrupt
|
|
|
- OCR0B = 128;
|
|
|
- TIMSK0 |= (1<<OCIE0B);
|
|
|
-#endif //SYSTEM_TIMER_2
|
|
|
-
|
|
|
-
|
|
|
|
|
|
// Wait for temperature measurement to settle
|
|
|
_delay(250);
|
|
@@ -1472,8 +1461,8 @@ void disable_heater()
|
|
|
target_temperature_bed=0;
|
|
|
soft_pwm_bed=0;
|
|
|
timer02_set_pwm0(soft_pwm_bed << 1);
|
|
|
- #if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
|
|
|
- WRITE(HEATER_BED_PIN,LOW);
|
|
|
+ #if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
|
|
|
+ //WRITE(HEATER_BED_PIN,LOW);
|
|
|
#endif
|
|
|
#endif
|
|
|
}
|
|
@@ -1544,7 +1533,7 @@ void min_temp_error(uint8_t e) {
|
|
|
|
|
|
void bed_max_temp_error(void) {
|
|
|
#if HEATER_BED_PIN > -1
|
|
|
- WRITE(HEATER_BED_PIN, 0);
|
|
|
+ //WRITE(HEATER_BED_PIN, 0);
|
|
|
#endif
|
|
|
if(IsStopped() == false) {
|
|
|
SERIAL_ERROR_START;
|
|
@@ -1563,7 +1552,7 @@ void bed_min_temp_error(void) {
|
|
|
#endif
|
|
|
//if (current_temperature_ambient < MINTEMP_MINAMBIENT) return;
|
|
|
#if HEATER_BED_PIN > -1
|
|
|
- WRITE(HEATER_BED_PIN, 0);
|
|
|
+ //WRITE(HEATER_BED_PIN, 0);
|
|
|
#endif
|
|
|
static const char err[] PROGMEM = "Err: MINTEMP BED";
|
|
|
if(IsStopped() == false) {
|
|
@@ -1660,7 +1649,6 @@ void adc_ready(void) //callback from adc when sampling finished
|
|
|
|
|
|
} // extern "C"
|
|
|
|
|
|
-
|
|
|
// Timer2 (originaly timer0) is shared with millies
|
|
|
#ifdef SYSTEM_TIMER_2
|
|
|
ISR(TIMER2_COMPB_vect)
|
|
@@ -1676,8 +1664,8 @@ ISR(TIMER0_COMPB_vect)
|
|
|
if (!temp_meas_ready) adc_cycle();
|
|
|
lcd_buttons_update();
|
|
|
|
|
|
- static unsigned char pwm_count = (1 << SOFT_PWM_SCALE);
|
|
|
- static unsigned char soft_pwm_0;
|
|
|
+ static uint8_t pwm_count = (1 << SOFT_PWM_SCALE);
|
|
|
+ static uint8_t soft_pwm_0;
|
|
|
#ifdef SLOW_PWM_HEATERS
|
|
|
static unsigned char slow_pwm_count = 0;
|
|
|
static unsigned char state_heater_0 = 0;
|
|
@@ -1698,7 +1686,7 @@ ISR(TIMER0_COMPB_vect)
|
|
|
#endif
|
|
|
#endif
|
|
|
#if HEATER_BED_PIN > -1
|
|
|
- static unsigned char soft_pwm_b;
|
|
|
+ // @@DR static unsigned char soft_pwm_b;
|
|
|
#ifdef SLOW_PWM_HEATERS
|
|
|
static unsigned char state_heater_b = 0;
|
|
|
static unsigned char state_timer_heater_b = 0;
|
|
@@ -1733,14 +1721,25 @@ ISR(TIMER0_COMPB_vect)
|
|
|
#endif
|
|
|
}
|
|
|
#if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
|
|
|
+
|
|
|
+#if 0 // @@DR vypnuto pro hw pwm bedu
|
|
|
+ // tuhle prasarnu bude potreba poustet ve stanovenych intervalech, jinak nemam moc sanci zareagovat
|
|
|
+ // teoreticky by se tato cast uz vubec nemusela poustet
|
|
|
if ((pwm_count & ((1 << HEATER_BED_SOFT_PWM_BITS) - 1)) == 0)
|
|
|
{
|
|
|
soft_pwm_b = soft_pwm_bed >> (7 - HEATER_BED_SOFT_PWM_BITS);
|
|
|
-#ifndef SYSTEM_TIMER_2
|
|
|
- if(soft_pwm_b > 0) WRITE(HEATER_BED_PIN,1); else WRITE(HEATER_BED_PIN,0);
|
|
|
-#endif //SYSTEM_TIMER_2
|
|
|
+# ifndef SYSTEM_TIMER_2
|
|
|
+ // tady budu krokovat pomalou frekvenci na automatu - tohle je rizeni spinani a rozepinani
|
|
|
+ // jako ridici frekvenci mam 2khz, jako vystupni frekvenci mam 30hz
|
|
|
+ // 2kHz jsou ovsem ve slysitelnem pasmu, mozna bude potreba jit s frekvenci nahoru (a tomu taky prizpusobit ostatni veci)
|
|
|
+ // Teoreticky bych mohl stahnout OCR0B citac na 6, cimz bych se dostal nekam ke 40khz a tady potom honit PWM rychleji nebo i pomaleji
|
|
|
+ // to nicemu nevadi. Soft PWM scale by se 20x zvetsilo (no dobre, 16x), cimz by se to posunulo k puvodnimu 30Hz PWM
|
|
|
+ //if(soft_pwm_b > 0) WRITE(HEATER_BED_PIN,1); else WRITE(HEATER_BED_PIN,0);
|
|
|
+# endif //SYSTEM_TIMER_2
|
|
|
}
|
|
|
#endif
|
|
|
+#endif
|
|
|
+
|
|
|
#ifdef FAN_SOFT_PWM
|
|
|
if ((pwm_count & ((1 << FAN_SOFT_PWM_BITS) - 1)) == 0)
|
|
|
{
|
|
@@ -1762,8 +1761,14 @@ ISR(TIMER0_COMPB_vect)
|
|
|
#if EXTRUDERS > 2
|
|
|
if(soft_pwm_2 < pwm_count) WRITE(HEATER_2_PIN,0);
|
|
|
#endif
|
|
|
+
|
|
|
+#if 0 // @@DR
|
|
|
#if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
|
|
|
- if (soft_pwm_b < (pwm_count & ((1 << HEATER_BED_SOFT_PWM_BITS) - 1))) WRITE(HEATER_BED_PIN,0);
|
|
|
+ if (soft_pwm_b < (pwm_count & ((1 << HEATER_BED_SOFT_PWM_BITS) - 1))){
|
|
|
+ //WRITE(HEATER_BED_PIN,0);
|
|
|
+ }
|
|
|
+ //WRITE(HEATER_BED_PIN, pwm_count & 1 );
|
|
|
+#endif
|
|
|
#endif
|
|
|
#ifdef FAN_SOFT_PWM
|
|
|
if (soft_pwm_fan < (pwm_count & ((1 << FAN_SOFT_PWM_BITS) - 1))) WRITE(FAN_PIN,0);
|