Почему SoftwareSerial не работает на Atmega128

Я пишу программу в Atmel Studio 7, которую только что установил и начал использовать. Я настроил студию для Arduino и добавил Atmega128 в библиотеку поддерживаемых чипов. Там все хорошо. Когда я пытаюсь использовать библиотеку SoftwareSerial и компилировать, я получаю сообщение об ошибке, что Atmega128 и Atmega64 не поддерживают SoftwareSerial. Почему это? Что такого особенного в этом AVR по сравнению с atmega328 и т. Д., Что он не будет поддерживать библиотеку. Есть ли лучший подход для использования SoftwareSerial или SoftUart на atmega128? Спасибо


person Eddie    schedule 01.12.2016    source источник
comment
Какое точное сообщение об ошибке?   -  person Rev    schedule 02.12.2016


Ответы (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
person uncleO    schedule 02.12.2016
comment
Привет, спасибо за ответ. Я не получил ошибку F_CPU при компиляции. И да, я установил F_CPU на 16 МГц. Единственная ошибка заключается в том, что в одном из них конкретно указано, что ATmega64 и ATmega128 не поддерживают SoftSerial!. Когда я смотрю в файле SoftwareSerial.h, он фактически закодирован таким образом в строке 44. - person Eddie; 03.12.2016

По моим исследованиям, при использовании и настройке библиотек Arduino включенная в них библиотека SoftwareSerial не поддерживает atMega64 и atMega128 из-за различий в PIN-коде и прерывании на этих чипах. Я успешно настроил softserial на другие контакты GPIO на atMega128, изменив этот пример< /а>. Этот пример предназначен только для передачи. Я все еще работаю над приемной частью, потому что она включает в себя настройку прерываний и синхронизацию. Важно помнить, что настройки часов должны совпадать во всем проекте, а последовательные скорости установлены правильно. Я протестировал свой код, используя несколько различных скоростей передачи данных.

В качестве примечания для новичков я обнаружил, что тестирование с помощью Arduino — это здорово. Однако при попытке перейти к специально созданному проекту C чрезвычайно сложно перейти с проекта Arduino на чистый проект C. На мой взгляд, почти проще просто выучить C и начать тестирование в среде Atmel Studio и держаться подальше от Arduino. Надеюсь, это поможет кому-то начать с программирования.

person Eddie    schedule 20.12.2016