2016-12-01 2 views
0

Ich schreibe gerade ein Programm in Atmel Studio 7, das ich gerade installiert und gestartet habe. Ich habe das Studio für Arduino eingerichtet und den Atmega128 in die Bibliothek der unterstützten Chips aufgenommen. Alles ist gut dort. Wenn ich versuche, die SoftwareSerial-Bibliothek zu verwenden und zu kompilieren, erhalte ich den Fehler, dass Atmega128 und Atmega64 SoftwareSerial nicht unterstützen. Warum ist das? Was ist so anders an diesem AVR über die atmega328, etc, dass es die Bibliothek nicht unterstützt. Gibt es einen besseren Ansatz, SoftwareSerial oder SoftUart auf dem atmega128 zu verwenden? DankeWarum SoftwareSerial nicht mit Atmega128 funktioniert

+1

Was ist die genaue Fehlermeldung? –

Antwort

0

Haben Sie diesen Kompilierfehler bekommen: This version of NewSoftSerial supports only 20, 16 and 8MHz processors?

Dies kommt von diesen definiert in der cpp-Datei. Es könnte funktionieren, wenn Sie F_CPU als 8000000 definieren und sicherstellen, dass Sie das Register tatsächlich so einstellen, dass die Taktgeschwindigkeit erreicht wird. Einige Prozessoren verwenden standardmäßig eine langsamere Taktfrequenz. Konsultieren Sie das Hardware-Handbuch.

Beachten Sie, dass F_CPU definiert werden muss, bevor die Datei NewSoftwareSerial.cpp verarbeitet wird. Sie können Definitionen direkt in der Befehlszeile mit einem D-Schalter erstellen.

#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 
+0

Hallo, danke für die Antwort. Ich habe F_CPU Fehler beim Kompilieren nicht bekommen. Und ja, ich habe die F_CPU auf 16 MHz eingestellt. Der einzige Fehler ist, dass "ATmega64 und ATmega128 SoftSerial nicht unterstützt!" Wenn ich in der SoftwareSerial.h-Datei nachschaue, wird das tatsächlich in Zeile 44 codiert. – Eddie

0

Durch meine Forschung, während die Arduino-Bibliotheken und einrichten, die ihre enthalten SoftwareSerial Bibliothek unterstützt nicht die ATMEGA64 und ATMEGA128 wegen der Unterschiede in der PIN und Interrupt auf diesen Chips. Ich habe erfolgreich softserial auf anderen GPIO-Pins auf dem atMega128 eingerichtet, indem ich this example ändere. Dieses Beispiel dient nur zum Senden. Ich arbeite immer noch an dem Empfangsteil, weil es Interrupts und Taktung einrichtet. Eine wichtige Anmerkung, die Sie beachten sollten, ist sicherzustellen, dass Ihre Uhreinstellungen während Ihres gesamten Projekts übereinstimmen und die seriellen Bauds ordnungsgemäß eingestellt sind. Ich habe meinen Code mit verschiedenen Baudraten getestet.

Als eine Randnotiz für Anfänger habe ich festgestellt, dass das Testen mit einem Arduino großartig ist. Wenn Sie jedoch versuchen, zu einem benutzerdefinierten C-Projekt zu wechseln, ist es äußerst schwierig, vom Arduino-Projekt in ein sauberes C-Projekt zu migrieren. Meiner Meinung nach ist es fast einfacher, C einfach zu lernen und in der Atmel Studio-Umgebung zu testen und sich von Arduino fernzuhalten. Ich hoffe, das hilft jemandem, der mit dem Programmieren beginnt.