22개의 이야기가 있습니다.

AVR에서 AND연산자, OR연산자, XOR연산자 사용 예..

Hardware/AVR
& 연산자 (AND) & 연산자는 둘다 1이어야 1이 되기 때문에 1)특정 비트만 0으로 만들고 싶을때 2)특정 비트만 확인 하고 싶을때 (masking) 로 많이 사용됩니다. 예를 들어 보겠습니다. 1)특정 비트만 0으로 만들고 싶을때 PORTA 에 LED8개가 붙어 있고 모두 켜져 있습니다.(PORTA==0xFF) 그런데 다른 비트는 건드리지 않고 0번 1번 7번 비트의 LED 만 끄고 싶다면??? PORTA=PORTA & 0x7C; 라고 하면 됩니다. 쓰고 보니 PORTA=0x7C; 라고 하면 되지 않느냐? 라고 물으실 분들을 위해 다른 가정을 하나 더 넣겠습니다. 현재 LED 가 어떻게 켜져 있는지 모르는데 0번 1번 7번 비트의 LED 만 끄고 싶다면??? 그렇다면.. PORTA=PORTA & ..

AM-CS2P 로 스텝모터 구동하는 소스.

Hardware/AVR
#include #include int main(){ DDRB=0xFF; char step=0; //STEP을 저장하는 변수 선언. while(1){ switch(step){ //switch문이 1번 돌면 스텝모터가 1.8도 회전한다. case 0x33 : step=0x66; break; case 0x66 : step=0xcc; break; case 0xcc : step=0x99; break; case 0x99 : step=0x33; break; default : step=0x33; break; } PORTB=step; delay_ms(1); //딜레이 값을 적당히 주어 모터 회전속도를 지정한다. } return 0; } 원래는 이렇게 하는게 아니고 PWM을 이용해 모터를 회전시킨다.. 아직은 타이머, ..

[당근보드] ADC로 cds의 값을 받아 FND에 출력하기.

Hardware/AVR
당근보드엔 4개의 FND와 1개의 CDS, 그리고 ATmega32의 PORTA0~PORTA7 까지의 ADC가 있습니다. 당근보드에서의 CDS는 ADC1에 연결되어있습니다. 오늘은 A/D 컨버터로 CDS의 값을 받아 FND에 뿌려보도록 하겠습니다^^ ------------------------------------------------------------------------------------------ #include #include #include #include #include #include #include unsigned char number_array[16]= { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, }; unsigned char fnd_sel_array[4]= { 0..

ATmega ADC 관련 레지스터

Hardware/AVR
ADC 관련 레지스터. ADMUX(ADC Multiplexer Selection Register) Bit 7 6 5 4 3 2 1 0 REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 ▶Bit 7:6-REFS1:0 ( Reference Selection Bits) ADC에서 사용하는 기준전압을 선택한다. REFS1 REFS0 기준전압 0 0 외부의 AREF 단자로 입력된 전압 사용 0 1 외부의 AVCC 단자로 입력된 전압 사용 1 0 Reserved 1 1 내부의 기준전압 2.56V 사용 ▶Bit 5-ADLAR(ADC Left Adjust Resu..
preview

당근보드 V2.0 전체 모습 + 약간의 개조(?)

Hardware/AVR
지난달 초.. (4월달이군요) 갑자기 임베디드쪽에 관심이 생기더니 어느새 ATmega128 KIT를 둘러보고있는 저를 발견했습니다..ㅡㅡ; 디XX스마트에서 열심히 이런저런 키트 들을 구경하고 있었지요... 그러던 어느날.. '당근이의 AVR 갖고놀기'라는 AVR로 아주 유명한 카페를 둘러보던중 '당근보드'를 공동구매한다는 공지가 올라왔습니다. "당근보드가 뭐지?" 하고 정보를 찾아보다가 바로 필 꽂혀서 질렀습니다.(무려 77,000원;;) 입금후 배송까지 약 2주정도 걸리더군요...ㅡㅡ; 암튼 배송받고 너무 좋았는데 핀헤더랑 핀헤더 소켓이 누락되었다는.....;; 또 한참있어야 배송될거라는 생각이 들어 다시 디XX스 마트에서 주문을 했습니다. 그거 주문할때 제가 생각해논 확장보드를 구성할 부품들도 같이 ..

[당근보드] 4개의FND에 숫자 차례로 카운트하고 버튼누르면 잠시 멈추기

Hardware/AVR
이 소스를 당근보드에 적용하면 FND에 0000부터 9999까지 카운트되며, SW1을 누르면 카운트가 잠시 멈췄다가 다시 시작하는 예제입니다. SW2를 누르면 숫자가 초기화 됩니다. ---------------------------------------------------------------------------------------- #include #include #include #include #include #include unsigned char number_array[16]= { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, }; unsigned char fnd_sel_array[4]= { 0,0,0,0,}; int n=0, n10, n100, n1000; void displa..

비트 연산자.

Hardware/AVR
1. 비트연산자의 종류 비트 연산자는 모두 여섯 가지가 있다. ~ 1의 보수 ^ XOR 비트 연산자 | OR 비트 연산자 & AND 비트 연산자 오른쪽 시프트 연산자 2. ~ 비트 연산자 '~'는 단항 연산자이기 때문에 하나의 항을 가지며 어떤 수에 '~' 연산자를 사용하면 결과는 1의 보수가 된다. 사용방법 변경전 변경후 ~5 0000 0000 0000 0101 1111 1111 1111 1010 ~1024 0000 0100 0000 0000 1111 1011 1111 1111간단하게 말하자면.. '~'는 2진수로 표기된 모든 비트의 값에서 0을 1로, 1을 0으로 변경한다. 따라서, '~'를 사용하는 순간 부호가 바뀌고 양수는 음수로 음수는 양수로 변형된다. 3. ^ 비트 연산자 '^'는 이항 연산자..
preview

드디어 도착한 당근보드(CARROTY_Board)와 자작한 5X7 DotMatrix

Hardware/AVR
아기다리 고기다리던 당근보드가 드디어 도착을 했습니다.ㅎㅎㅎ 입금한지 2주만에 도착을 했군요.ㅎㅎ 위에 사진이 디스플레이부, 밑에 부분이 메인부입니다. 참 깔끔하고 크기도 작습니다.ㅋ 그런데!! 디스플레이와 메인부를 연결해주는 핀헤더를 깜빡 하셨다는군요.ㅡㅡ; 그래서 연결도 못하고 메인부에 있는 4개의 LED만 가지고 놀고 있습니다.ㅡㅡ;; 다시 요청을 했으니, 뭐 오겠지요.. 오면 얼른 납땜해서 구동시켜봐야겠습니다.. 하하하하하 그건 그렇고, 당근보드도 왔겠다, 본격적으로 가지고 놀아보기에 앞서 뭘 하면 좋을까 생각을 해봤습니다. 어차피 FND는 4개나 달려있겠다, LED도 부족하지않을만큼 달려있고, 스위치도 9개나 달려있는데.... 게다가 스피커, CDS... 온도센서도 있다그러던데 어떤놈인지 모르겠..