BASIC4MCU | 질문게시판 | 답변 : Atmega128 도움이 필요함니다 잘모르겠어요
페이지 정보
작성자 master 작성일2022-12-18 19:59 조회612회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=22223
본문
1-1
DDRC&=~0xF0; // 스위치 상위4비트 입력으로 설정
DDRB|=0x43; // 모터드라이버 PB0,PB1,PB6 출력으로 설정
1-2
8채널
ADC0(PF0)~ADC7(PF7)
1-3
5V/1024=0.0048828125V=4.8828125mV
1-4
변환시간동안 기다릴 필요가 없고, 그 시간에 다른 처리를 할 수 있다.
1-5#include//ISR(ADC_vect){int i;i=ADCW; // i=ADC;ADCSRA|=0x40;}1-616000000Hz/250000Hz=64(분주비 6)ADCSRA=0xCE;1-7ADLAR=0인 경우 : ADCH=하위2비트에 변환결과(비트8,비트9)저장, ADCL=변환결과(비트0~비트7)저장ADLAR=1인 경우 : ADCH=변환결과(비트2~비트9)저장, ADCL=상위2비트에 변환결과(비트0~비트1)저장2-1DDRD&=~0x04; // PD2 INPUTEICRA=0x20; EIMSK=0x04; // INT2 falling edgeSREG|=0x80;2-2#include//volatile int cnt=0,count=0;float RPM=0;//ISR(INT2_vect){cnt++;}2-3TCCR2=0x0D; OCR2=124; TIMSK=0x80; //16000000Hz/1024/(1+124)=125Hz,8msSREG|=0x80;2-4#include//volatile int cnt=0,count=0;float RPM=0;//ISR(TIMER0_COMP_vect){ // 8msstatic unsigned char t=0;if(++t>=125){ t=0; // 8ms*125=1000mscount=cnt; cnt=0;RPM=count*60.0/100.0; // RPM=count*60초/100ppr(ppr 회전당 펄스 수)}}2-5RPM=count*60.0/100.0; // RPM=count*60초/100ppr(ppr 회전당 펄스 수)2-6DDRA=0xFF; DDRC=0x0F;2-7unsigned char fng[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};3번은 아래 게시판 글을 참고하세요앞쪽에 설명글도 있습니다.3-1
듀티비=100* Ton/T [%]
3-2
회로구성이 간단하고, 오차가 적다.
3-3
OC0, OC1A, OC1B, OC1C(OC2), OC3A, OC3B, OC3C
7개, 이 중 OC1C는 OC2와 중복
3-4
0x03FF
3-5
COM1B1=1, COM1B0=0
3-6
TCCR1A=0x83; TCCR1B=0x03;
// 주기=16000000/64/2/1023=122.18963831867057673509286412512Hz=8.184ms
댓글 0
조회수 612등록된 댓글이 없습니다.