BASIC4MCU | 질문게시판 | 답변 : 인터럽트 활성화시 LCD 오류 발생
페이지 정보
작성자 master 작성일2022-11-17 08:29 조회1,435회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=21625
본문
ISR(TIMER0_COMP_vect){
인터럽트는 비교매치 인터럽트를 사용해야 합니다.
//
while(1){
str=Ptr1; LCD_Pos(0,0); LCD_Str(str);
}딜레이 없이 연속으로 lcd를 출력하면 제대로 표시하지 못합니다.//#define F_CPU 14745600UL#include <avr/io.h>#include <util/delay.h>#include <avr/interrupt.h>#include <stdio.h>#include "lcd.h"#include "TWI.h"//volatile char ti_Cnt_1ms=0,*str,Ptr1[]="Hello";//void Timer0_Init(){TCCR0=(1<<WGM01)|(1<<CS00)|(1<<CS01)|(1<<CS02); //CTC모드,1024 분주OCR0=14; //14.7456MHz / 1024 분주 / 14단계=1.028kHzTIMSK=(1<<OCIE0); //비교 일치 인터럽트 허가}//void LCD_print1(void){ LCD_Pos(0,0); LCD_Str(str); LCD_Delay(5); }//ISR(TIMER0_COMP_vect){ ti_Cnt_1ms++; }//void main(void){char Sonar_addr=0xE0,Message[40]; unsigned int Sonar_range=0;//PORTB=0xFF; DDRB=0xFF; // LED offLCD_Init();Timer0_Init(); // 1msI2C_Init();sei();startRanging(Sonar_addr);str=Ptr1; LCD_Pos(0,0); LCD_Str(str);while(1){if(ti_Cnt_1ms>66){ // 66ms 마다Sonar_range=getRange(Sonar_addr); // 초음파 센서 거리 측정 데이터 얻기LCD_Pos(0,0); LCD_Str("Hello2"); // LCD_Str("Measured Dist.="); //측정된 거리 LCD화면에 출력sprintf(Message,"%03d cm",Sonar_range);LCD_Pos(1,10); LCD_Str(Message);//startRanging(Sonar_addr); // 초음파 센서 거리 측정 시작 명령어ti_Cnt_1ms=0;}}}초음파센서가 문제가 되는 것 같다면 주석으로 막고서 돌려보면 되겠죠//I2C_Init();sei();//startRanging(Sonar_addr);str=Ptr1; LCD_Pos(0,0); LCD_Str(str);while(1){if(ti_Cnt_1ms>66){ // 66ms 마다//Sonar_range=getRange(Sonar_addr); // 초음파 센서 거리 측정 데이터 얻기lcd나 초음파센서나 일반적인 모델을 사용하지 않고 있네요?아두이노용 초음파센서 hc-sr04를 사용하면 편하지 않나요?
댓글 0
조회수 1,435등록된 댓글이 없습니다.