본문 바로가기
코스웨어/16년 스마트컨트롤러

20160323_김도관_업무일지_시리얼통신3_저항연결

by 알 수 없는 사용자 2016. 4. 3.
728x90
반응형

팩스 - (손실압축)아날로그 형태의 전화선 라인으로 통신을 함


Red - 256 -> 1byte

Green - 256 -> 1byte

Blue - 256 -> 1byte


RGB는 총 3byte의 값을 가짐



하드웨어 디코딩 - ex) 아이폰 : 아이폰의 경우 mp3,mp4의 자체 하드웨어 코덱 회로를 가지고 있음


소프트웨어 디코딩 - 하드웨어가 지원되지 않을때 cpu만으로 연산을 해서 소프트웨어적으로 처리하는 디코딩



ADC 저항 측정



아날로그 형태의 저항값을 디지털인 데이터 로 표현








adc.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "adc.h"
 
void adc_Init(void)
{
    ADMUX  = (0 << REFS1)|(0 <<  REFS0)|(0 <<  ADLAR)|(0 <<  MUX4)|(0 <<  MUX3)|(0 <<  MUX2)|(0 <<  MUX1)|(0 <<  MUX0);
    ADCSRA = (1 << ADEN )|(0 <<  ADSC) |(0 <<  ADATE)|(0 <<  ADIF)|(0 <<  ADIE)|(1 << ADPS2)|(1 << ADPS1)|(0 << ADPS0);
    ADCSRB = (0 << ACME )|(0 <<  MUX5) |(0 <<  ADTS2)|(0 << ADTS1)|(0 << ADTS0); // 설정 없음
    return;
}
 
unsigned int adc_Run0(void)
{
    adc_Init();
    ADCSRA = ADCSRA |(1 <<  ADSC); // high
    while0 != (ADCSRA &(1 <<  ADSC))); //중지되면 data 출력
    
    return ADC;
}
cs


main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "main.h"
#include "lcd.h"
#include "usart.h"
#include "adc.h"
 
int main(void)
{
    //volatile unsigned int uiSec;
    unsigned char ucData;
    char caVal[] = "0000";
    unsigned int uiVal;
        
    LCD_Init(); //
    usart0_Init();
    adc_Init();
    sei();
      
    while(1)
    {
        uiVal = adc_Run0();
        caVal[0= '0' + (uiVal/1000);
        caVal[1= '0' + (uiVal%1000)/100;
        caVal[2= '0' + (uiVal%1000)%100/10;
        caVal[3= '0' + (uiVal%1000)%100%10// uival%10
 
        LCD_Str(caVal);
        usart0_Str(caVal);
    }
    return 0;
}
cs


22일에 했던것에 adc추가

15번 : adc_Init() 으로 adc 초기화

20번 : adc_Run0를 실행하여 값을 읽어옴

21~24 번 : 값을 하나하나 씩 비트단위로 잘라서 배열에 넣음

26~17 번 : LCD와 usart0에 각각 caVal의 데이터를 넘김




728x90