atmega128 twi 예제

atmega128 twi 예제

ATmega TWI 하드웨어는 마스터 및 슬레이브 작업을 모두 지원합니다. 이 예제에서는 AVR 마이크로 컨트롤러를 TWI 마스터로 사용하는 방법만 보여 줍니다. TWI 슬레이브와 대화하는 데 필요한 단계에 집중하기 위해 구현이 간단하게 유지되므로 모든 처리가 폴링 모드에서 수행되므로 다음 처리 단계가 예정되어 있음을 나타내기 위해 TWI 인터페이스가 대기합니다(TWINT 인터럽트 비트를 설정). 전체 TWI 통신이 "백그라운드"에서 발생하도록 하려면 이 모든 것을 인터럽트 제어 방식으로 구현할 수 있으며, 여기서 시작 조건만 인터럽트 루틴 외부에서 트리거되어야 합니다. 이제 I2C 버스를 사용하여 I/O 포트 익스팬더를 읽고 쓰는 방법을 배웠으니, RAM과 EEPROM 모두 I2C 메모리를 사용하도록 진행해 보겠습니다. 주요 차이점은 단일 I2C 명령으로 여러 바이트를 읽거나 추억에서 쓸 수 있다는 것입니다. 이러한 실험을 준비하려면 하드웨어를 약간 수정하고 브레드보드에 몇 개의 새 회로를 만들어야 합니다. 일부 메모리 값을 표시하는 데 사용할 수 있으므로 포트 익스팬더 회로를 유지합니다. PCA8574A에서 DIP 스위치를 제거하고 해당 핀에 깜박임을 넣습니다. 당신은 충분한 깜박임이없는 경우, P3를 통해 P0을 통해 P4를 통해 P4에 있는 것들을 이동합니다. 표시할 값은 충분히 작습니다. 이제 회로도 I2C Ram.pdf를 보고 브레드 보드에 PCF8570후크. 그림도 보세요.

PCA8574A에서 SDA 및 SCL용 와이어를 Vcc에 7번 연결해야 합니다. 추가 풀업 저항이 필요하지 않습니다. EEPROM에도 관심이 있다면 24C16에 I2C EEPROM.pdf를 사용하여 해당 회로를 빌드하지만 예제에서는 ATmega168을 사용한다는 경고를 받을 수 있습니다. 이 회로는 정말 간단합니다. 위에서 설명한 대로 주소 비트는 무시해야 합니다. 그냥 전원과 접지를 연결합니다. 우리가 Ram.We PCA8574A 포트 익스팬더와 PCF8570 램에 연결 된 ATtiny2313우리의 메모리 실험을 시작 합니다 때문에 아직 SDA와 SCL을 연결 하지 마십시오. 이 프로그램은 램에 몇 가지 숫자를 작성한 다음 다시 읽고 포트 Expander.에 표시합니다 USI I2C에서 RAM으로 작업 디렉토리를 변경합니다. 확인 파일을 사용하여 USI_I2C_RAM.c를 컴파일하고 다운로드합니다. I2C 드라이버 파일은 이전에 사용했던 파일과 동일합니다.

전원을 연결하면 LED 1 (PD6)에서 한 번깜박임이 표시됩니다. 데이터는 처음 4바이트의 메모리에 기록됩니다. 버튼을 누르면 두 바이트가 다시 읽고 표시됩니다. 포트 익스팬더(P0)에 하나의 LED 표시등이 표시되고 2초 동안 일시 중지한 다음 두 개의 LED 표시등(P0 및 P1)이 표시됩니다. 또 다른 두 번째 일시 중지 및 LED를 해제 해야 합니다. 단추를 다시 눌러 시퀀스를 다시 시작합니다. 디버깅은 위에서 설명한 방법과 유사합니다. 코드를 살펴보겠습니다. USI_I2C_RAM.c를 엽니다. 이전 코드와 매우 유사하게 보입니다. 주요 차이점은 읽기와 쓰기 메모리의 세부 사항입니다.

실제로 쓰기를 수행하는 호출 전에 메시지 버퍼가 로드되는 방식을 살펴봅니다. 첫 번째 바이트는 읽기/쓰기 비트가 적절하게 설정된 슬레이브 주소입니다. 그러나 다음 바이트는 데이터 쓰기를 시작하는 메모리 주소입니다.

אין תגובות

מצטער, טופס התגובה סגור בשלב זה.