SW/Embedded
-
[nuvoton] MCU 120N Firmware & RTOSSW/Embedded 2018. 2. 15. 15:04
사용보드 MCU : nuvoton 컴파일러 : keil NANO120SE3BN MCU사용 Nu-Link 디버거usb CMSIS-core Device-startup Device-driver-CLK Device-driver-SYS 내용 startup은 전기가 들어가면 처음으로 실행되는 부분으로 최종적으로 메인을 실행한다. (노모톤 MCU는 )0x00번지에 처음으로 접근한다. 마이크로프로세서는 리턴을 하지 않는다.(운영체제가 없어서 리턴을 받아줄때가 없다) int main(void) { while(1) { } while(1); // 리턴하지말고 할거없으면 쉬어. } 디버거 설정 option for target클릭 => 디버거 : 오른쪽 use 를NUlink debuger로 설정 후 세팅에서 칩타입(나노100)..
-
[라즈베리파이] 자이로센서SW/Embedded 2018. 2. 4. 21:00
자이로/가속도센서(MPU6050) datasheet datasheet register map 각속도 / 회전속도를 구해준다. I2C를 사용한다.(SPI보다 느림,여러 장치들을 붙칠수있다. 리눅스에서는 /usr/include/linux/i2c.h 헤더 제공) 라즈베리파이에는 2개의 버스가 있다. #include #include #include #include #define MPU6050_ADDRESS (0x68) // i2cdetect -y 1 로 알아볼수잇다. #define MPU6050_REG_PWR_MGMT_1 (0x6b) #define MPU6050_REG_DATA_START (0x3b) int main() { int pi; if((pi = pigpio_start(NULL, NULL))
-
[라즈베리파이] 온도/습도 센서SW/Embedded 2018. 2. 4. 18:00
온/습도 - DHT22/AM2302 data sheet 1번 핀이 + 이다. 마지막 핀이 GND 이다. 데이터 케이블이 하나여서 하나의 핀으로 온도와 습도를 얻어 낼 수 있다. 파이-마스터 / 센서-슬레이브 습도 데이터 보내고 온도 데이터 보내고 페리티비트를 보낸다. 총 40 비트의(습도-16[8,8],온도-16[8,8],페리티비트-8[8]) 데이터를 보낸다. 걸리는 시간에 따라 0,1 구별한다.(데이터시트참조) 처음(초기화) 80마이크로 * 2를 보낸다. 총 43비트(연결 데이터 까지)
-
[라즈베리파이] ADC (아날로그 디지털 컨버터)SW/Embedded 2018. 2. 4. 17:30
ADC(MCP3208) datasheet 2.7~5.5V 가능하지만 클 수록 샘플링 속도가 빠르다. ch0~7 : 아날로글 신호 넣어주는곳이다. SPI : 통신규격 - 라즈베리파이 (라즈베리파이에서는 2개의 핀을 제공) raspi-config 에서 SPI on 확인 : lsmmod | grep spi 확인 : ls /dev/spi* -l 스티트 1, 싱글디프 1 , 채널 설정 #include #include #include #define BAUD_RATE1000000 #define LOOP1000 int main(int argc, char* argv[]) { int pi; int spi; uint16_t value; uint64_t sum = 0; uint16_t avg; int channel = 0; ..
-
[라즈베리파이] 초음파 센서SW/Embedded 2018. 2. 4. 15:08
초음파 센서 data sheet 한쪽은 송신하는 부분 한쪽은 받는부분으로 구별되있다. trig 핀 -쏘는 부분 / echo 핀 - 받는 부분 트리거에 10마이크로초를 주면 초음파(8개) 발생한다. 다시돌아오면 에코에서 받는다. 최대 한텀은 50마이크로 세컨드이다. // 10 마이크로세컨드를 만들자! include include include define TRIG_PINNO 16 define ECHO_PINNO 6 void cb_func_echo(int pi, unsigned gpio, unsigned level, uint32_t tick); //시간값저장(시작,끝) uint32_t start_tick_, dist_tick_; int main() { float distance; int pi; if ((pi..
-
[라즈베리파이] Shift RegisterSW/Embedded 2018. 1. 28. 10:33
74HC595 shift Register 제한된 GPIO핀을 확장하여 더욱 많은 제어를 할수 있다. 직렬,병렬로 변환하여 gpio를 확장 시켜준다. 많은 종류가 있지만 하나만 해도 다른 시프트레지스터도 어렵지 않게할 수 있을것이다. OE : output enable -칩의 온/오프를 담당한다. Ds : serial input data - 실제로 데이터가 들어가는 곳 이다. ST : 0에서 1을 해야 라이징이 발생하여 출력하는 저장소로 보내 출력한다. SH : 0에서 1 을해야 라이징이 발생하여 쉬프트한다. MR : 클리어 한다.(1을해야 쓸수 있다.) 9 번은 아웃풋으로 쉬프트레지스터를 추가 할때 다음 쉬프트레지스터의 인풋으로 들어간다.