From 3c84665f50e4238956956d2d1465bf42d3ec1169 Mon Sep 17 00:00:00 2001 From: fruchti Date: Thu, 23 Aug 2018 13:27:08 +0200 Subject: [PATCH] Make actually decent images --- build-number.txt | 2 +- src/main.c | 5 ----- src/ov7670.c | 29 +++++++++-------------------- 3 files changed, 10 insertions(+), 26 deletions(-) diff --git a/build-number.txt b/build-number.txt index 1e6fd03..3bb8a49 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -444 +464 diff --git a/src/main.c b/src/main.c index 837f523..c355ecf 100755 --- a/src/main.c +++ b/src/main.c @@ -18,11 +18,6 @@ int main(void) Print_Text(buff, &Messe_Duesseldorf_39); LTP1245_FeedPaper(2); - - strcpy(buff, "Line count: "); - extern int LineCount; - itoa(LineCount, buff + strlen(buff), 10); - Print_Text(buff, &Hannover_Messe_Serif_26); LTP1245_FeedPaper(10); // LTP1245_FeedPaper(10); diff --git a/src/ov7670.c b/src/ov7670.c index 9b1adb0..3d1e6aa 100644 --- a/src/ov7670.c +++ b/src/ov7670.c @@ -150,8 +150,7 @@ uint8_t ImageBuffer[CAMERA_IMAGE_WIDTH * CAMERA_IMAGE_HEIGHT / 8]; static volatile int CurrentLine = 0; -uint8_t LineBuffer1[CAMERA_IMAGE_WIDTH + 40]; -uint8_t LineBuffer2[CAMERA_IMAGE_WIDTH + 40]; +uint8_t LineBuffer[CAMERA_IMAGE_WIDTH + 40]; int LineCount = 0; static int FrameCount = 0; volatile int Camera_Captured = 0; @@ -265,7 +264,7 @@ void Camera_Init(void) // pixel clock and should trigger DMA transfers TIM3->PSC = 0; TIM3->ARR = 1; - TIM3->CCMR1 = TIM_CCMR1_CC2S_0 | TIM_CCMR1_CC1S_0 | TIM_CCMR1_IC1PSC_0; + TIM3->CCMR1 = TIM_CCMR1_CC2S_0 | TIM_CCMR1_CC1S_0 | TIM_CCMR1_IC1PSC_1; TIM3->CCER = TIM_CCER_CC2P | TIM_CCER_CC2E | TIM_CCER_CC1E | TIM_CCER_CC1P; TIM3->DIER = TIM_DIER_CC2IE; TIM3->CR1 = TIM_CR1_CEN; @@ -332,39 +331,29 @@ void TIM3_IRQHandler(void) TIM3->DIER &= ~TIM_DIER_CC1DE; TIM3->SR &= ~TIM_SR_CC1IF; - uint8_t *filledbuffer; - DMA1_Channel6->CCR = 0; - DMA1_Channel6->CNDTR = sizeof(LineBuffer1); - if(CurrentLine & 1) - { - DMA1_Channel6->CMAR = (uint32_t)LineBuffer1; - filledbuffer = LineBuffer2; - } - else - { - DMA1_Channel6->CMAR = (uint32_t)LineBuffer2; - filledbuffer = LineBuffer1; - } + DMA1_Channel6->CNDTR = sizeof(LineBuffer); + DMA1_Channel6->CMAR = (uint32_t)LineBuffer; DMA1_Channel6->CCR = DMA_CCR_PL | DMA_CCR_MINC | DMA_CCR_EN; TIM3->DIER |= TIM_DIER_CC1DE; - if(!Camera_Captured) + if(!Camera_Captured && (~CurrentLine & 1)) { int error = 0; for(int i = 0; i < CAMERA_IMAGE_WIDTH; i++) { - int pixel = filledbuffer[i + 15] + error; + int pixel = LineBuffer[i + 15] + error; + int line = CurrentLine / 2; if(pixel < 127) { error = pixel; - ImageBuffer[(CurrentLine * CAMERA_IMAGE_WIDTH + i) / 8] |= + ImageBuffer[(line * CAMERA_IMAGE_WIDTH + i) / 8] |= 0x80 >> (i % 8); } else { error = pixel - 255; - ImageBuffer[(CurrentLine * CAMERA_IMAGE_WIDTH + i) / 8] &= + ImageBuffer[(line * CAMERA_IMAGE_WIDTH + i) / 8] &= ~(0x80 >> (i % 8)); } }