Adc Read API Adc Read unsigned int Adc
- Slides: 20
Adc. Read API 함수 – Adc. Read unsigned int Adc. Read(unsigned char port) { unsigned int value = 0; ADMUX = port&7; ADCSR |= ADC_START_CONVERSION; while(!(ADCSR & ADC_COMPLETE)); value = ADCL; value = (ADCH<<8) | value; if(m_Adc. Resolution == ADC_8)(value=value>>2); return value; } #define ADC_START_CONVERSION 0 x 40 #define ADC_COMPLETE 0 x 10 unsigned char m_Adc. Resolution = ADC_10; 2
Adc. Read API 함수 – Adc. Read unsigned int Adc. Read(unsigned char port) { unsigned int value = 0; ADMUX = port&7; ADCSR |= ADC_START_CONVERSION; while(!(ADCSR & ADC_COMPLETE)); value = ADCL; value = (ADCH<<8) | value; if(m_Adc. Resolution == ADC_8)(value=value>>2); return value; } #define ADC_START_CONVERSION 0 x 40 #define ADC_COMPLETE 0 x 10 unsigned char m_Adc. Resolution = ADC_10; 4
Serial API 함수 – Adc. Read ADMUX = port&7; port 값의 하위 3비트만 ADMUX에 저장 (포트 지정) port 7 6 5 4 3 2 1 0 x x x x & 7 0 0 0 1 1 1 ADMUX 0 0 0 x x x 5
Adc. Read API 함수 – Adc. Read unsigned int Adc. Read(unsigned char port) { unsigned int value = 0; ADMUX = port&7; ADCSR |= ADC_START_CONVERSION; while(!(ADCSR & ADC_COMPLETE)); value = ADCL; value = (ADCH<<8) | value; if(m_Adc. Resolution == ADC_8)(value=value>>2); return value; } #define ADC_START_CONVERSION 0 x 40 #define ADC_COMPLETE 0 x 10 unsigned char m_Adc. Resolution = ADC_10; 6
Serial API 함수 – Adc. Read ADCSR |= 0 x 40; ADCSR의 6번 비트를 1로 set (A/D변환 시작) ADCSR 7 6 5 4 3 2 1 0 x x x x or 0 x 40 0 1 0 0 0 ADCSR x 1 x x x 7
Adc. Read API 함수 – Adc. Read unsigned int Adc. Read(unsigned char port) { unsigned int value = 0; ADMUX = port&7; ADCSR |= ADC_START_CONVERSION; while(!(ADCSR & ADC_COMPLETE)); value = ADCL; value = (ADCH<<8) | value; if(m_Adc. Resolution == ADC_8)(value=value>>2); return value; } #define ADC_START_CONVERSION 0 x 40 #define ADC_COMPLETE 0 x 10 unsigned char m_Adc. Resolution = ADC_10; 8
Serial API 함수 – Adc. Read while(!(ADCSR & 0 x 10)); ADCSR의 4번 비트가 1이 될 때까지 대기 (A/D변환 완료 대기) ADCSR 7 6 5 4 3 2 1 0 x x x x & 0 x 10 0 1 0 0 ADCSR 0 0 0 x 0 0 9
Adc. Read API 함수 – Adc. Read unsigned int Adc. Read(unsigned char port) { unsigned int value = 0; ADMUX = port&7; ADCSR |= ADC_START_CONVERSION; while(!(ADCSR & ADC_COMPLETE)); value = ADCL; value = (ADCH<<8) | value; if(m_Adc. Resolution == ADC_8)(value=value>>2); return value; } #define ADC_START_CONVERSION 0 x 40 #define ADC_COMPLETE 0 x 10 unsigned char m_Adc. Resolution = ADC_10; 10
Serial API 함수 – Adc. Read value = ADCL; value = (ADCH<<8) | value; ADCL과 ADCH 값을 결합 (value는 0~1023) ADCH ADCL x x x x value x x x x 11
Adc. Read API 함수 – Adc. Read unsigned int Adc. Read(unsigned char port) { unsigned int value = 0; ADMUX = port&7; ADCSR |= ADC_START_CONVERSION; while(!(ADCSR & ADC_COMPLETE)); value = ADCL; value = (ADCH<<8) | value; if(m_Adc. Resolution == ADC_8)(value=value>>2); return value; } #define ADC_START_CONVERSION 0 x 40 #define ADC_COMPLETE 0 x 10 unsigned char m_Adc. Resolution = ADC_10; 12
Serial API 함수 – Adc. Read if(m_Adc. Resolution == ADC_8)(value=value>>2); Adc. Resolution 값이 ADC_8과 같으면 value 값을 나누기 4 value x x x x value 0 0 x x x x 13
Adc. Read API 함수 – Adc. Read unsigned int Adc. Read(unsigned char port) { unsigned int value = 0; ADMUX = port&7; // port 값의 하위 3비트만 ADMUX에 저장 (포트 지정) ADCSR |= ADC_START_CONVERSION; // ADCSR의 6번 비트를 1로 set (A/D변환 시작) while(!(ADCSR & ADC_COMPLETE)); // ADCSR의 4번 비트가 1이 될 때까지 대기 (A/D 변환 완료 대기) value = ADCL; value = (ADCH<<8) | value; // ADCL과 ADCH 값을 결합 if(m_Adc. Resolution == ADC_8)(value=value>>2); // Adc. Resolution 값이 ADC_8과 같으면 value 값을 나누기 4 return value; } 14
Adc. Read API 함수 – ADC_Initialize void ADC_Initialize(void) { ADMUX = PORT_A 0; ADCSR = ADC_ENABLE | ADC_PRESCALE_DIV 32; } #define ADC_ENABLE #define ADC_PRESCALE_DIV 32 0 x 80 5 ADMUX에 port를 A 0로 초기화 ADCSR 값 초기화 ADCSR 7 6 5 4 3 2 1 0 0 0 0 1 15
Adc. Read API 함수 – Lgs. Set. Type ERROR Lgs. Set. Type(unsigned char port, unsigned char type) { if(type>MAX_LGS_TYPE)return UNKNOWN_LGS_TYPE; switch(port) { case PORT_A 6: m_Sensor. Type 1 = type; break; case PORT_A 7: m_Sensor. Type 2 = type; break; default: return UNKNOWN_LGS_PORT; break; } return ERROR_NONE; } 16
Adc. Read API 함수 – Lgs. Read unsigned int Lgs. Read(unsigned char port) { if((port == PORT_A 6)||(port == PORT_A 7)) { return get_lego_sen(port); } else return Adc. Read(port); } 17
Adc. Read API 함수 – get_lego_sen uint 16_t get_lego_sen(uint 8_t Channel) { uint 16_t ret =0; if(Channel == PORT_A 6) { Channel = 6; sbi(LEGO_SEN 0_PORT, LEGO_SEN 0_BIT); micro_delay(100); cbi(LEGO_SEN 0_PORT, LEGO_SEN 0_BIT); } else if(Channel == PORT_A 7) { Channel = 7; sbi(LEGO_SEN 0_PORT, LEGO_SEN 1_BIT); micro_delay(100); cbi(LEGO_SEN 0_PORT, LEGO_SEN 1_BIT); } else return 0; micro_delay(5); ret = Adc. Read(Channel); return ret; //PORTG, BIT_ 18
Adc. Read API 함수 – micro_delay void micro_delay(unsigned int Time) { uint 8_t time_500 us = 0; char i = 0; while(Time--) { for(time_500 us=0; time_500 us<100; time_500 us++) { i = i + time_500 us; } } } 19
Adc. Read API 함수 – Lgs. Read. Type unsigned int Lgs. Read. Type(unsigned char port, unsigned char type) { unsigned int value = get_lego_sen(port); switch(type) { case LGS_TYPE_LIGHT: value = 120 - value/10; break; case LGS_TYPE_TOUCH: if(value > 100) value = FALSE; else value = TRUE; } } return value; 20
- Int sum(int a int n) int sum=0 i
- Public void drawsquare(int x, int y, int len)
- Divideint
- Int max(int x int y)
- Interface calculator public int add(int a int b)
- Typedef int element
- Unsigned representation
- Long unsigned int c
- Signed vs unsigned int
- Short int
- Unsigned int c++
- Short 자료형 크기
- Voidswap
- 7팩토리얼
- Nnxn com
- Int f (int n)
- Arduino constant int
- Max int
- Interface myinterface int foo(int x)
- Int main() int num=4
- Mainint