방금 설치하고 사용하기 시작한 Atmel Studio 7에 프로그램을 작성하고 있습니다. Arduino 용 스튜디오를 설치하고 Atmega128을 지원되는 칩 라이브러리에 추가했습니다. 모두 거기서 좋다. SoftwareSerial 라이브러리를 사용하여 컴파일하려고하면 Atmega128 및 Atmega64가 SoftwareSerial을 지원하지 않는다는 오류가 발생합니다. 왜 이런거야? atmega328 등에서이 AVR과 다른 점은 라이브러리를 지원하지 않는다는 것입니다. atmega128에서 SoftwareSerial 또는 SoftUart를 사용하는 더 좋은 방법이 있습니까? 감사합니다SoftwareSerial이 Atmega128에서 작동하지 않는 이유
답변
이 컴파일 오류를 실행 했습니까 : This version of NewSoftSerial supports only 20, 16 and 8MHz processors
?
이것은 cpp 파일에 정의되어 있습니다. F_CPU를 8000000으로 정의하고 실제로 클럭 속도를 만들기 위해 레지스터를 실제로 설정했는지 확인하는 것이 좋습니다. 일부 프로세서는 기본적으로 느린 클럭 속도를 사용합니다. 하드웨어 설명서를 참조하십시오.
F_CPU는 NewSoftwareSerial.cpp 파일을 처리하기 전에 정의해야합니다. D 스위치를 사용하여 명령 줄에서 정의를 만들 수 있습니다. 아두 이노 라이브러리를 사용하고 설정하는 동안 내 연구를 통해
#if F_CPU == 16000000
[snip]
#elif F_CPU == 8000000
[snip]
#elif F_CPU == 20000000
[snip]
#else
#error This version of NewSoftSerial supports only 20, 16 and 8MHz processors
#endif
안녕하세요, 답장을 보내 주셔서 감사합니다. 컴파일 할 때 F_CPU 오류가 발생하지 않았습니다. 그리고 네, F_CPU를 16MHz로 설정했습니다. 유일한 오류는 "ATmega64 및 ATmega128이 SoftSerial을 지원하지 않습니다!"라는 것입니다. SoftwareSerial.h 파일을 보면 실제로 44 행에 코딩되어 있습니다. – Eddie
는, 그들의 포함 SoftwareSerial 라이브러리 때문에 PIN의 차이의 atMega64 및 ATMEGA128을 지원하고 이러한 칩에 방해가되지 않습니다. 나는 this example을 수정하여 atMega128의 다른 GPIO 핀에 softserial을 성공적으로 설정했습니다. 이 예는 송신 전용입니다. 인터럽트 설정 및 클로킹과 관련되어 있기 때문에 수신 부분에서 계속 작업하고 있습니다. 기억해야 할 핵심 사항은 프로젝트 전체에서 시계 설정이 일치하고 직렬 보드가 올바르게 설정되어 있는지 확인하는 것입니다. 몇 가지 다른 전송 속도를 사용하여 코드를 테스트했습니다.
초보자를위한 참고서로서, 나는 Arduino로 테스트하는 것이 훌륭하다는 것을 알았습니다. 그러나 사용자 정의 빌드 C 프로젝트로 이동하려고 할 때 Arduino 프로젝트에서 클린 C 프로젝트로 마이그레이션하는 것은 매우 어렵습니다. 제 생각에는 C를 배우고 Atmel Studio 환경에서 테스트를 시작하고 Arduino를 멀리하는 것이 더 쉽습니다. 나는 이것이 누군가 프로그래밍을 시작하는 데 도움이된다고 생각한다.
정확한 오류 메시지는 무엇인가요? –