아트메가 57

ATMEGA128 SPI통신 알아보기 1편

안녕하세요. 오늘은 ATMEGA128로 SPI통신에대해 알아보겠습니다. 이 글에서는 SPI통신 WRITE만 알아보고 실제로 8*8 dot matrix(MAX7219사용)을 제어해보겠습니다 기본적인 SPI개념은 아래 글 참조바랍니다 https://wowon.tistory.com/231 SPI통신 아두이노와 오실로스코프로 확인해보기 1편 안녕하세요. 오늘은 SPI통신에 대해 알아보겠습니다. SPI란 Serial Peripheral Interface의 약자입니다. 특징으로는 데이터를 동시에 보내고 받을 수 있는 전이중 모드를 지원하는 동기식 직렬 통신 인터 wowon.tistory.com https://wowon.tistory.com/276 SPI통신 아두이노와 오실로스코프로 확인해보기 2편 안녕하세요. 오늘..

아트메가/이론 2023.02.05

ATMEGA128 UART 수신인터럽트 발생하는 시점

안녕하세요. 오늘은 ATMEGA128 UART 수신 인터럽트 함수가 호출되는 시점이 언제인지 알아보겠습니다. RX 핀이 HIGH로 유지하고 있다가 UART를 수신하면 인터럽트가 뜨는데 수신 인터럽트가 뜨는 시점이 HIGH -> LOW 될 때 바로인지, STOP bit 수신했을 때인지 알아보는 내용입니다. 수신인터럽트는 아래의 함수입니다. ISR(USART0_RX_vect) 테스트방법은 수신인터럽트가 발생하면 포트1개를 LOW->HIGH로 바꾸는 시간을 측정하겠습니다 UART 세팅은 115200bps, 8bit, 1stop bit, no parity입니다. 그러므로 총 10비트이고 1비트당 8.68us고 10비트면 86.8입니다. 데이터를 보내고나서 87.664us후에 수신인터럽트가 발생했습니다. 10비트..

아트메가/이론 2023.01.08

아트메가 디버깅하기(AVR, ATMEL ICE, JTAG)

안녕하세요. 오늘은 아트메가128을 디버깅해보겠습니다. (JTAG) (Microchip studio 7.0사용) 먼저 디버깅 제품이 필요합니다. 저는 ATMEL ICE(정품)를 구매해서 사용했습니다. 먼저 ATMEL ICE는 커넥터가 엄청 특별합니다. 정품인 커넥터도 파는데 비싸긴 하지만 사서 쓰는 게 편합니다. 아니면 알리익스프레스 같은 곳에서 호환되는 커넥터를 사면 될 거 같습니다 저는 이중에 위의 커넥터를 사용했습니다. 커넥터에 번호가 적혀있는데 아래처럼 연결해줘야합니다. 7,8번핀은 옵션이므로 연결안해줘도 상관없습니다. TCK,TDO,TMS,TDI는 각 MCU 데이터시트에 나와있습니다 프로그램 넣는방법은 ISP와 같습니다. TOOL -> Device Programming가서 넣으면 됩니다. * 정..

아트메가/기타 2022.10.05

CLCD ATMEGA128로 제어하기 3편(I2C)

안녕하세요. 오늘은 I2C(TWI)통신을 통해서 ATMEGA로 LCD를 제어해보겠습니다. 일단은 ATMEGA128로 I2C통신을통해 LCD를 제어하려면 여러가지 알아야 합니다. 1. CLCD 사용방법 1) CLCD MCU없이 제어하기(ADM1602) 1편 2) CLCD MCU없이 제어하기 (ADM1602) 2편 3) CLCD MCU없이 제어하기 (ADM1602) 3편 4) CLCD ATMEGA128로 제어하기 1편 5) CLCD ATMEGA128로 제어하기 2편 2. ATMEGA128로 TWI통신하는방법 1) ATMEGA128 TWI(I2C)통신 알아보기 1편 2) ATMEGA128 TWI(I2C)통신 알아보기 2편 3) ATMEGA128 TWI(I2C)통신 알아보기 3편 3. PCF8574 사용방법 1..

아트메가/활용 2022.10.03

ATMEGA128 TWI(I2C)통신 알아보기 3편

안녕하세요. 오늘은 ATMEGA128 TWI READ를 해보겠습니다 READ를 알아보기전에 먼저 알아야 할게 있습니다. 어떤 모듈에게 데이터를 WRITE/READ를 하려면 먼저 그 모듈의 메모리주소에 접근해야하고 접근하려면 WRITE를 해야합니다. 그래서 WRITE를 하고 READ를 하면 데이터를 읽을 수 있습니다. *READ하기 Read통신하는 순서가 있습니다. 순서를 크게보면 슬레이브 주소를 전송하고 슬레이브가 응답했으면 데이터를 Read하고 통신을 끝냅니다. - 순서 0) WRITE과정하기(ATMEGA128 TWI(I2C)통신 알아보기 2편 참고) 1) START신호 전송 2) START신호 전송완료했나 확인 3) 슬레이브 주소 전송(7bit) + READ전송( Write : 0, Read : 1)..

아트메가/이론 2022.09.13

ATMEGA128 TWI(I2C)통신 알아보기 2편

안녕하세요. 오늘은 TWI통신의 Write에 대해 알아보겠습니다. * 초기세팅하기 - 통신속도설정 일단 초기세팅으로 통신속도를 설정해줘야 합니다. 통신속도는 일반적으로 100kHz로 설정을 하고 10us입니다 위의 파형은 클럭 파형이고 100kHz로 설정한 모습입니다. 주기가 10us인것을 볼 수 있습니다. 속도를 구하는 공식인데 CPU Clock frequency는 16mHz이고 TWBR과 TWPS는 아트메가 레지스터입니다 TWBR = 0x48;, TWSR = 0x00;을 넣으면 100kHz가 나옵니다 - 풀업저항설정 SDA,SCL라인에 풀업저항을 연결해줘야 합니다. 데이터시트에 풀업저항권장 사양이 나와있는 경우도 있습니다. 일반적으로 10k옴을 연결합니다. 풀업저항에 따라서 파형의 기울기가 변합니다...

아트메가/이론 2022.09.11

ATMEGA128 TWI(I2C)통신 알아보기 1편

안녕하세요. 오늘은 TWI 통신에 대해 알아보겠습니다. *TWI통신이란 TWI통신이란 Two Wire Interface이고 I2C통신과 같습니다. 선 2개로 통신을 하므로 편리하고 많이 사용됩니다. 선2개의 이름은 각각 SDA, SCL이라고 부릅니다. *SDA/SCL 데이터 읽는방법 SDA는 Serial Data이고 SCL은 Serial Clock입니다. SDA가 실제 데이터이고 SCL은 클럭입니다. HIGH와 LOW로 데이터를 전달합니다. 기본적으로 SDA는 SCL이 LOW일때 상태를 변경하고 SCL이 HIGH일때는 SDA이 변하지 않습니다. 그래서 SCL이 HIGH일때 값을 읽습니다 위의 그림처럼 데이터가 0b10001이 됩니다 이러한 과정은 출력을 HIGH/LOW를 계속 변경해가면서 만들수도 있는데..

아트메가/이론 2022.09.10

CLCD ATMEGA128로 제어하기 2편

안녕하세요. ATMEGA로 CLCD를 제어하는 2편 해보겠습니다. 여기서는 1편에서 올렸던 코드를 사용하기쉽게 수정하고 CGRAM에 대해서 알아보겠습니다 CGRAM이란 사용자가 문자를 만들어서 저장할수있는 장소입니다. 사용자가 문자 8개를 만들어서 저장 가능합니다. CGRAM Address를 보면 b5~b3가 3비트이므로 문자 8개 저장 가능합니다. 첫번째 CGRAM 주소의 000000부터 시작해서 000111까지 데이터를 한줄씩 저장 가능합니다. CGRAM의 주소는 DDRAM의 데이터와 대응이 됩니다. 그래서 데이터를 저장하고 사용할때는 0x00부터 0x07까지 사용하면 됩니다.(총8개) 그리고 CGRAM에서 주의할점은 CGRAM Address은 b5~b3가 주소 기준이므로 첫번째 주소는 0x00이고 ..

아트메가/활용 2022.08.21

CLCD ATMEGA128로 제어하기 1편

안녕하세요. 오늘은 MCU로 CLCD를 제어해 보겠습니다. 이전 글에서는 MCU 없이 CLCD를 버튼으로 제어를 했었는데, 버튼으로 했던 동작들을 MCU로 해보겠습니다. 사용하는 MCU는 ATMEGA128입니다. 기본 개념들은 이전글 참고 바랍니다 CLCD MCU없이 제어하기 (ADM1602) 1편 => CLCD 기초설명 CLCD MCU없이 제어하기 (ADM1602) 2편 => 여러기능 테스트 CLCD MCU없이 제어하기 (ADM1602) 3편 => DDRAM,CGROM,CGRAM,AC설명 회로 코드 코드를 작성하기전에 고려해야 할 사항이 있습니다. CLCD 타이밍입니다. 위의 파형과 비슷하게 MCU 포트를 제어하면 됩니다. MIN값으로 가장 큰게 500ns이므로 코드에서 1ms로 통일했습니다. 그리고 ..

아트메가/활용 2022.08.14

ATMEGA128 - USART(UART) 통신 코드

안녕하세요. 오늘은 ATMEGA128 - USART(UART)통신 코드를 올리겠습니다. 사용IDE : atmel studio(microchip studio)입니다. 사용MCU : ATMEGA128 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 #define F_CPU 16000000UL #include #include #include #include char receive_buf = 0; /* UART0 */ ISR(USART0_RX_vect) { receive_buf = UDR0; } void ..