diff --git a/build-number.txt b/build-number.txt index c0556fb..08f851b 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -511 +519 diff --git a/src/ltp1245.c b/src/ltp1245.c index 9d373f5..56cb301 100644 --- a/src/ltp1245.c +++ b/src/ltp1245.c @@ -18,7 +18,6 @@ static State_t State_Idle(void); static State_t State_PaperLoad(void); static State_t State_Printing(void); static State_t State_PaperFeed(void); -static State_t State_Cutting(void); static volatile State_t State = {State_Idle}; static void InitStepper(void) @@ -139,27 +138,6 @@ static void InitThermistor(void) ADC1->CR2 |= ADC_CR2_ADON; } -static void InitCutter(void) -{ - RCC->APB1ENR |= RCC_APB1ENR_TIM4EN; - RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; - - GPIOB->CRL = (GPIOB->CRL - & ~(0xf << (4 * PIN_PAPER_CUT))) - | (0x09 << (4 * PIN_PAPER_CUT)) // Output in AF mode, max. 10 MHz - ; - - // Servo pulse length should be between 1 and 2 ms with a period of 20 ms - TIM4->PSC = 48 - 1; // Divide to one microsecond - TIM4->ARR = 20000; // 50 Hz frequency - TIM4->CCR2 = 1000; // 1 millisecond - TIM4->CCMR1 = TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; - TIM4->CR1 = TIM_CR1_CEN; - TIM4->CCER = TIM_CCER_CC2E; - - NVIC_EnableIRQ(TIM4_IRQn); -} - static bool HasPaper(void) { return !(GPIOB->IDR & (1 << PIN_PAPER)); @@ -274,17 +252,6 @@ static State_t State_PaperFeed(void) return (State_t){State_PaperFeed}; } -static State_t State_Cutting(void) -{ - // The timer interrupt is deactived once a sufficient number of pulses is - // generated - if(~TIM4->DIER & TIM_DIER_UIE) - { - return (State_t){State_Idle}; - } - return (State_t){State_Cutting}; -} - static State_t State_Idle(void) { if(!HasPaper()) @@ -341,30 +308,8 @@ LTP1245_Result_t LTP1245_FeedPaper(int lines) return LTP1245_OK; } -LTP1245_Result_t LTP1245_Cut(void) -{ - do - { - if(!HasPaper()) - { - return LTP1245_NO_PAPER; - } - if(!HeadDown()) - { - return LTP1245_HEAD_UP; - } - } while(State.fn != State_Idle); - - TIM4->CCR2 = 2000; - TIM4->DIER = TIM_DIER_UIE; - State = (State_t){State_Cutting}; - - return LTP1245_OK; -} - void LTP1245_Init(void) { - InitCutter(); InitDataLines(); InitSensors(); InitStepper(); @@ -500,33 +445,6 @@ void ADC1_2_IRQHandler(void) } } -void TIM4_IRQHandler(void) -{ - if(TIM4->SR & TIM_SR_UIF) - { - static int ct = 0; - - if(ct == 0) - { - ct = LTP1245_CUT_DURATION; - } - else - { - ct--; - if(ct == 0) - { - TIM4->DIER &= ~TIM_DIER_UIE; - } - else if(ct == LTP1245_CUT_DURATION / 2) - { - TIM4->CCR2 = 1000; // Back to -90 deg - } - } - - TIM4->SR &= ~TIM_SR_UIF; - } -} - void DMA1_Channel5_IRQHandler(void) { DMA1->IFCR = DMA_IFCR_CTCIF5; @@ -535,4 +453,4 @@ void DMA1_Channel5_IRQHandler(void) GPIOB->BSRR = (1 << PIN_LATCH); for(volatile int i = 0; i < 1000; i++); GPIOB->BRR = (1 << PIN_LATCH); -} \ No newline at end of file +} diff --git a/src/ltp1245.h b/src/ltp1245.h index 8f6edf2..8b4b903 100644 --- a/src/ltp1245.h +++ b/src/ltp1245.h @@ -13,7 +13,6 @@ typedef enum } LTP1245_Result_t; #define LTP1245_MAX_DRIVE_FREQ 473 // In Hz -#define LTP1245_CUT_DURATION 50 // In steps of 20 ms #define LTP1245_BUFFER_LINES 64 #define LTP1245_LINEWIDTH 384 // In pixels #define LTP1245_LINE_BYTES (LTP1245_LINEWIDTH / 8) @@ -23,4 +22,3 @@ typedef enum void LTP1245_Init(void); LTP1245_Result_t LTP1245_FeedPaper(int lines); LTP1245_Result_t LTP1245_Print(uint8_t *data, int lines); -LTP1245_Result_t LTP1245_Cut(void); diff --git a/src/main.c b/src/main.c index a21e05d..c5d924a 100644 --- a/src/main.c +++ b/src/main.c @@ -18,7 +18,6 @@ int main(void) LTP1245_FeedPaper(100); LTP1245_FeedPaper(10); - // LTP1245_Cut(); while(!Camera_Captured); diff --git a/src/pinning.h b/src/pinning.h index 9a44990..4f2b300 100644 --- a/src/pinning.h +++ b/src/pinning.h @@ -23,7 +23,6 @@ #define PIN_CAMERA_PCLK 4 // PB4 - Camera pixel clock (TIM3_CH1) #define PIN_CAMERA_HSYNC 5 // PB5 - Camera VSYNC (TIM3_CH2) #define PIN_HEAD 6 // PB6 - Head up sensor -#define PIN_PAPER_CUT 7 // PB7 - Paper cutter servo (TIM4_CH2) #define PIN_CAMERA_SCL 8 // PB8 - Camera control I2C (I2C1_SCL) #define PIN_CAMERA_SDA 9 // PB9 - Camera control I2C (I2C1_SDA) #define PIN_DST1 10 // PB10 - Head drive signal 1 (TIM2_CH3)