검색결과 리스트
글
[Tiva] I2CMasterControl()
void I2CMasterControl(uint32_t ui32Base, uint32_t ui32Cmd)
설명 : I2C 통신시 Master의 동작을 설정하는 함수입니다.
uint32_t ui32Base
I2C 통신을 하게 될 Master의 Base Address를 설정합니다.
uint32_t ui32Cmd
I2C 통신을 하게 될 Master가 하게 될 동작을 설정합니다. 이 인자의 경우 다음과 같은 값들을 입력하실 수 있습니다.
I2C_MASTER_CMD_SINGLE_SEND
I2C_MASTER_CMD_SINGLE_RECEIVE
I2C_MASTER_CMD_BURST_SEND_START
I2C_MASTER_CMD_BURST_SEND_CONT
I2C_MASTER_CMD_BURST_SEND_FINISH
I2C_MASTER_CMD_BURST_SEND_ERROR_STOP
I2C_MASTER_CMD_BURST_RECEIVE_START
I2C_MASTER_CMD_BURST_RECEIVE_CONT
I2C_MASTER_CMD_BURST_RECEIVE_FINISH
I2C_MASTER_CMD_BURST_RECEIVE_ERROR_STOP
I2C_MASTER_CMD_QUICK_COMMAND
I2C_MASTER_CMD_HS_MASTER_CODE_SEND
이들 중 빈번하게 사옹되는 것으로 다음과 같은 값들이 있습니다.
I2C_MASTER_CMD_SINGLE_SEND
Master가 Slave에게 명령어를 전달하는 모드입니다.
I2C_MASTER_CMD_SINGLE_RECEIVE
Master가 Slave로부터 명령어를 전달받는 모드입니다.
I2C_MASTER_CMD_BURST_SEND_START
Master가 Slave에게 명령어를 전달하는 모드입니다. 위의 I2C_MASTER_CMD_SINGLE_SEND와 달리 바로 명령어를 전달하지 않고 일단 Slave에게 명령어를 전달하겠다는 설정만 합니다.
I2C_MASTER_CMD_BURST_SEND_CONT
위의 I2C_MASTER_CMD_BURST_SEND_START를 실행한 후 Slave에게 입력할 명령어를 전달합니다.
I2C_MASTER_CMD_BURST_SEND_FINISH
Slave에게 마지막 명령어를 전달한 후 I2C 통신을 종료합니다.
I2C_MASTER_CMD_BURST_RECEIVE_START
I2C_MASTER_CMD_BURST_RECEIVE_CONT
I2C_MASTER_CMD_BURST_RECEIVE_FINISH
Master가 Slave로부터 명령어를 전달받는 모드로 SINGLE모드와 BURST 모드의 차이는 위의 SEND와 유사합니다.
다음은 SINGLE 모드와 BURST 모드로 I2C통신시 파형을 나타냅니다.
SINGLE_SEND
ROM_I2CMasterSlaveAddrSet(I2C0_BASE, 0xE0 / 2, false);
ROM_I2CMasterDataPut(I2C0_BASE, 0x7E);
ROM_I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_SEND);
while (ROM_I2CMasterBusy(I2C0_BASE)) {
}
BURST_SEND
ROM_I2CMasterSlaveAddrSet(I2C0_BASE, 0xE0 / 2, true);
ROM_I2CMasterDataPut(I2C0_BASE, 0x02);
ROM_I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_START);
while (ROM_I2CMasterBusy(I2C0_BASE)) {
}
ROM_I2CMasterDataPut(I2C0_BASE, 0xFF);
ROM_I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH);
while (ROM_I2CMasterBusy(I2C0_BASE)) {
}
'임베디드 > TI' 카테고리의 다른 글
| [Tiva] TM4C MCU와 ECHO UART 통신 (2) | 2014.08.27 |
|---|---|
| [Tiva] I2CMasterDataGet() (0) | 2014.08.26 |
| [Tiva] tm4c 시리즈 MCU로 TextLCD(CLCD) 동작 (0) | 2014.08.21 |
| [Tiva]startup_ccs.c 파일에 외부 인터럽트 추가하기 (0) | 2014.08.09 |
| [Tiva] I2CMasterSlaveAddrSet() (0) | 2014.08.01 |
설정
트랙백
댓글
글
Didn't find class "android.support.v4.view.ViewPager"
넷상에 업로드된 안드로이드 패키지를 다운받아 빌드를 한 후 안드로이드에 실행하였을 경우 다음과 같은 오류가 발생하는 경우가 있습니다.
Didn't find class "android.support.v4.view.ViewPager"
android.support.v4 패키지는 안드로이드가 새로운 버전에 추가된 기능(클래스)들을 이전 버전에서도 사용할 수 있도록 해주는 패키지입니다. 최근에는 안드로이드 프로젝트를 새로 만들 때 해당 프로젝트에 자동으로 로딩이 될 수 있게 해주기 때문에 따로 추가하는 등의 번거로운 과정을 덜 수 있었습니다.
그렇다면 android.support.v4를 적용하는 방법을 알아보도록 하겠습니다.
1. Android SDK Manager를 실행하여 Extra(가장 아랫쪽 목록)에서 Android Support Library를 설치합니다.
2. 이클립스를 실행한 후 android.support.v4 패키지를 추가할 프로젝트를 클릭한 후 Project->Properties-> Java build Path->Libraries 를 선택합니다.
3. 위와 같은 화면이 나올 경우 오른쪽 메뉴에서 Add External JARs를 선택하여 android.support.v4 패키지를 추가합니다.
android.support.v4 패키지는 Android SDK Tool을 설치한 폴더에 있으며 Windows 기준으로 다음 경로에서 확인하실 수 있습니다.
C:\Program Files\Android\android-sdk\extras\android\support\v4
4.android.support.v4 패키지를 추가한 후 Order and Export 탭으로 들어간 후 android-support-v4.jar를 체크한 후 맨 위로 옮겨놓습니다.
다음과 같이 설정하시면 android.support.v4 패키지가 적용된 프로그램이 정상적으로 동작하는 것을 확인하실 수 있습니다.
'안드로이드 > 애플리케이션 제작' 카테고리의 다른 글
| 안드로이드 SDK 업데이트 후 이클립스에서 실행이 안될 때(Android ADT 재설치) (0) | 2014.09.27 |
|---|---|
| 숨겨진 Activity 혹은 Fragment의 Thread를 종료시키는 방법 (1) | 2014.09.11 |
| URL을 통해 안드로이드로 xml 파일 다운로드 (0) | 2014.08.17 |
| (JSON) 기상청으로부터 지역코드 받아오기 (2) | 2014.08.15 |
| 좌표값 위도와 경도로 위치주소 구하기 (3) | 2014.08.10 |
설정
트랙백
댓글
글
[Tiva] tm4c 시리즈 MCU로 TextLCD(CLCD) 동작
MCU로 프로그램을 실행할 때 자신이 확인하고 싶은 값을 보기 위해서 주로 UART통신 또는 TextLCD에 값을 띄워보는 방법이 있습니다.
MCU가 컴퓨터와 항상 연결되어 있을 때엔 당연히 UART를 통해 원하는 값을 모니터에 출력하는 것이 가능합니다. 그러나 일반적으로 MCU를 응용하시는 분들께서는 컴퓨터와 연결하여 사용하는 경우는 많지 않으실 겁니다. 이럴 때 가장 좋은 방법이 TextLCD를 활용하는 것이지요.
자신이 원하는 값이 숫자와 같은 수치라면 FND를 사용하는 방법또한 있습니다만 FND의 경우 원하는 값을 얻기애 연결해야 하는 핀의 수가 TextLCD보다 상대적으로 많이 사용되는 편이기도 합니다. 심지어 TextLCD는 텍스트 값 또한 출력이 가능하기 때문에 간단한 수치를 확인하는 목적 이상을 원한다면 TextLCD를 사용하는 쪽이 바람직할 듯 합니다.
가장 많이 사용되는 TextLCD는 2 X 16일 겁니다. 인터넷 상에서도 Atmega128을 기반으로 한 소스코드도 쉽게 구할 수 있어 생각보다 번거롭지 않게 TextLCD에 값을 출력하실 수 있을 것입니다.
아래의 코드는 Atmega128에서 많이 사용되는 코드를 TivaWare를 활용하는 MCU에서 바로 사용할 수 있게 작성되었습니다.
참고로 회로는 다음과 같이 연결하시면 되겠습니다.
RS = A6, RW = GND, EN = A7
데이터0~7 = B0 ~ B7
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | #include <stdint.h> #include <stdbool.h> #include "inc/hw_types.h" #include "inc/hw_memmap.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" void EnablePulse(void) { GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_7, GPIO_PIN_7); SysCtlDelay(SysCtlClockGet() / 1200); GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_7, 0); } void sendLCDcommand(unsigned char command) { GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_6, 0); GPIOPinWrite(GPIO_PORTB_BASE, 0xFF, command); EnablePulse(); SysCtlDelay(SysCtlClockGet() / 1200); } void InitLcd(void) { SysCtlDelay(SysCtlClockGet() / 10); sendLCDcommand(0x38); sendLCDcommand(0x0C); sendLCDcommand(0x01); SysCtlDelay(SysCtlClockGet() / 1200); } void sendLCDdata(unsigned char data) { GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_6, GPIO_PIN_6); GPIOPinWrite(GPIO_PORTB_BASE, 0xFF, data); EnablePulse(); SysCtlDelay(SysCtlClockGet() / 1200); } void displayStr(char *str){ while(*str){ sendLCDdata(*str); str++; } } void setLocate(int x, int y){ unsigned char addr; if(x==0) addr = 0x80+y; else addr = 0xC0+y; sendLCDcommand(addr); } void setLcdShift(char a){ unsigned char shift; //0 == Left 1 == Right if(a==0) shift = 0x18; else if(a==1) shift = 0x1C; sendLCDcommand(shift); SysCtlDelay(SysCtlClockGet() / 10); } int main(void) { SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7); GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7); GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7, 0x00); GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7, 0x00); InitLcd(); setLocate(0,1); displayStr("Hello, World!"); setLocate(1,0); displayStr("http://elecs.tistory.com/"); while (1) { setLcdShift(0); } } |
해당 코드를 런치패드에 실행시키면 CLCD에 다음과 같은 값이 출력됨을 확인하실 수 있습니다.
'임베디드 > TI' 카테고리의 다른 글
| [Tiva] I2CMasterDataGet() (0) | 2014.08.26 |
|---|---|
| [Tiva] I2CMasterControl() (0) | 2014.08.25 |
| [Tiva]startup_ccs.c 파일에 외부 인터럽트 추가하기 (0) | 2014.08.09 |
| [Tiva] I2CMasterSlaveAddrSet() (0) | 2014.08.01 |
| [Tiva] TM4C의 I2C 통신 파형 보는 방법 (4) | 2014.07.28 |