Softwarekompatibilität zwischen ATtiny2313 und ATtiny84

Ich mache und verkaufe eine Variante des USBtiny AVR-Programmierers. Es verwendet einen ATtiny2313, der mit 12 MHz getaktet ist, und macht Bit-Bang-USB mit handabgestimmter Assemblersprache (die jemand anderes geschrieben hat - es ist ein offenes Hardware- / offenes Firmware-Projekt).

Um die Kosten zu senken, möchte ich von der Verwendung des 2313 auf die Verwendung eines ATtiny84 umsteigen.

Ich kann herausfinden, wie man die Firmware für die verschiedenen Pins anpasst. Aber die große (ger) Frage ist, ob diese von Hand abgestimmte Assemblersprache auf der 84 genauso läuft.

Abgesehen von Pins und Registern, ist die gesamte ATtiny-Chip-Reihe ansonsten aus Software-Sicht kreuzkompatibel?

Antworten (2)

Wie im AVR-8-Bit-Befehlssatz- Dokument beschrieben, haben nur "Reduced Core tinyAVR"-Teile ein anderes Timing als die anderen. Teile, die unter diese Bezeichnung fallen, sind ATtiny4, ATtiny5, ATtiny9 und ATtiny10.

Sowohl '2313 als auch '84 sind "avr25"-Architekturen, wie sie von GCC definiert wurden , sodass ihre Befehlssätze zu 100 % kompatibel sind.

Kurze Antwort ist: Nein, einige ATtiny-Chips unterstützen mehr Anweisungen als andere. Einige Chips unterstützen auch andere interne Hardware als andere. Die meisten Anweisungen sind jedoch identisch.

Sie können den unterstützten Befehlssatz des Geräts am Ende des „ vollständigen “ Datenblatts des Geräts mit Ihrem aktuellen Code vergleichen. Weitere Einzelheiten finden Sie im Bedienungshandbuch .

Natürlich sollte der Compiler / Assembler Fehler ausgeben, wenn Sie versuchen, Hardware / Anweisungen zu verwenden, die nicht im Gerät vorhanden sind. Konfigurieren Sie einfach, um für das andere Gerät zu kompilieren. Eine gute Quelle sollte ohne Warnungen und Fehler kompiliert werden, sollte aber zuerst durchgeführt werden, bevor Sie versuchen, auf das andere Gerät zu portieren.

Diese Anwendung verwendet nur GPIO und USI - was meiner Meinung nach auf beiden Chips vorhanden ist. Ich glaube, ich kann die Hardware-Unterschiede zwischen den beiden verfeinern. Ich wollte nur nicht einen Haufen sehr fein abgestimmter Assemblersprache wiederholen müssen.