at90can128 can 통신 예제

컨트롤러 영역 네트워크(CAN) 프로토콜은 자동차 및 산업 응용 분야에서 일반적으로 사용되는 강력한 직렬 통신 프로토콜입니다. CAN 네트워크는 공유 버스를 사용하여 네트워크의 모든 노드를 연결합니다. CAN 프로토콜에는 마스터-슬레이브 관계가 없습니다. 대신 모든 노드가 동일한 버스에 액세스할 수 있으며 각 메시지의 비트 별 중재를 사용하여 우선 순위를 결정하고 버스 충돌을 방지합니다. 각 메시지에는 우선 순위 수준과 함께 고유 식별자가 포함되어 있습니다. 두 노드가 동시에 버스를 사용하려고 하면 우선 순위가 높은 메시지가 버스 액세스를 “성공”하고 우선 순위가 낮은 메시지는 중단됩니다. CAN 통신은 상대적으로 낮은 데이터 속도(1Mbps 이하)를 필요로 하지만 EMI 및 온도 효과에 대한 내성이 매우 높은 네트워크에서 적용 가능합니다. 아래 다이어그램은 여러 노드가 CAN 네트워크의 공유 버스에 연결되는 방법을 보여 줍니다. 또 다른 질문 : 나는 AVRISP mkII 프로그래머를 가지고있다. 프로그래머.txt에서 다음을 정의하기에 충분하다: avrispmkii.name=AVRISP mkII avrispmkii.communication=usb avrispmkii.protocol=stk500v2 안녕하세요 lincomatic, 당신이 슈퍼 코우의 작업을 계속 기뻐. 나는 리포지토리를 다운로드하고 아두 이노 설치의 하드웨어 하위 폴더에 at90can 디르를 복사. 나는 드라이 테스트를 시도 (아직 하드웨어가 없지만 컴파일은 성공해야한다). 그래서 USBtinyISP 및 해당 보드 항목을 선택하지만 컴파일은 깜박임 예제에 실패 : C : 프로그램 파일 Arduino하드웨어 at90can main.cpp: 기능 `int main()`에서: C:프로그램 파일Arduinohardwareat90cancores at90canmain.cpp:5: 오류: `init`이 이 범위 C:프로그램 파일Arduinohardwareat90canmain.cpp:7: 오류: `설정`이 이 범위에서 선언되지 않았습니다 C:프로그램 파일Arduinohardwareat90cancoresat90cankr.c.kr :10 : 오류 : `루프`가이 범위에서 선언되지 않은 당신은 내가 잘못 한 것을 상상할 수 있습니까? 이 페이지의 목적은 마이크로 컨트롤러의 ATmegaxxM1 제품군의 내장 CAN 컨트롤러의 사용을 설명하는 것입니다.

이 프로젝트는 STK600 개발 보드를 사용하여 여러 ATmega32M1 장치 간의 CAN 통신을 달성합니다. 스튜디오 6의 ATmegaxxM1 장치에 대한 CAN 라이브러리도 제공됩니다. 이 WinAVR보다 설정하는 것이 훨씬 쉽기 때문에 나는 아두 이노와 함께 작업이 보드를 얻기위해 노력하기로 결정했다. 해결해야 할 첫 번째 문제는 AT90CAN128 및 USBtinyISP와 함께 작동하도록 Arduino IDE를 조정하는 방법입니다. 많은 인터넷 검색 후, 나는 SuperCow가 이미 더러운 일을하고 아두 이노 포럼에 게시 한 것을 발견했다. 그는 핵심 파일, 부트 로더 및 몇 가지 예제를 편리한 zip 파일로 패키징했습니다 (이후 오프라인으로 전환되었습니다). 그는 알 수없는 JTAG 프로그래머를 사용했기 때문에, 나는 USBtinyISP와 JTAG ICE mk1와 함께 작동하도록 자신의 파일을 적응했다. 또한 Arduino 1.x+와 함께 작동하도록 수정했습니다. CAN 통신을 새로 접하는 독자의 경우 하드웨어에서 CAN 네트워크를 실현하기 전에 CAN 통신 프로토콜을 연구하는 것이 좋습니다. 그리고 alla 명령에 대한 예제를 표시하지 않고, 단지 몇 가지 예를 확인합니다.

at90can / 코어 / at90can에서 can_lib.h 및 can_lib.cpp를 발견했는데, 이는 CAN 버스에 인터페이스하는 데 필요한 모든 것으로 보입니다.