Я пишу программу в Atmel Studio 7, которую только что установил и начал использовать. Я настроил студию для Arduino и добавил Atmega128 в библиотеку поддерживаемых чипов. Там все хорошо. Когда я пытаюсь использовать библиотеку SoftwareSerial и компилировать, я получаю сообщение об ошибке, что Atmega128 и Atmega64 не поддерживают SoftwareSerial. Почему это? Что такого особенного в этом AVR по сравнению с atmega328 и т. Д., Что он не будет поддерживать библиотеку. Есть ли лучший подход для использования SoftwareSerial или SoftUart на atmega128? Спасибо
Почему SoftwareSerial не работает на Atmega128
Ответы (2)
Вы столкнулись с этой ошибкой компиляции: 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
По моим исследованиям, при использовании и настройке библиотек Arduino включенная в них библиотека SoftwareSerial не поддерживает atMega64 и atMega128 из-за различий в PIN-коде и прерывании на этих чипах. Я успешно настроил softserial на другие контакты GPIO на atMega128, изменив этот пример< /а>. Этот пример предназначен только для передачи. Я все еще работаю над приемной частью, потому что она включает в себя настройку прерываний и синхронизацию. Важно помнить, что настройки часов должны совпадать во всем проекте, а последовательные скорости установлены правильно. Я протестировал свой код, используя несколько различных скоростей передачи данных.
В качестве примечания для новичков я обнаружил, что тестирование с помощью Arduino — это здорово. Однако при попытке перейти к специально созданному проекту C чрезвычайно сложно перейти с проекта Arduino на чистый проект C. На мой взгляд, почти проще просто выучить C и начать тестирование в среде Atmel Studio и держаться подальше от Arduino. Надеюсь, это поможет кому-то начать с программирования.