Verwenden Sie das Arduino SDK mit einem beliebigen AVR?

Wenn ich einen Atmel AVR-basierten Mikrocontroller aus dem Regal nehme, kann ich dann mit dem Arduino SDK Code dafür schreiben?

Antworten (1)

Das Arduino SDK (d. h. der Arduino-Kern und die mitgelieferten Standardbibliotheken) unterstützt einen bestimmten Satz von Boards, die wiederum einen bestimmten Satz von AVR8-Mikrocontrollern verwenden. Dies ist eine Teilmenge der Gesamtmenge von AVR8-Mikrocrontrollern, die ATMEL verkauft. Die verschiedenen AVR8 verwenden den gleichen Befehlssatz, wie Sie vielleicht bereits wissen, unterscheiden sich jedoch in Bezug auf maximale Taktgeschwindigkeit, SRAM + Flash-Größen, Peripheriegeräte und Pin-Anzahl. Die Arduino-Core-Software kümmert sich um diese Unterschiede, aber nur für die AVR8, die in den unterstützten Boards verwendet werden.

Wenn man also sein eigenes Board entwirft, indem man einen AVR8 verwendet, der auch in einem unterstützten Arduino-Board verwendet wird, und man eine Möglichkeit hat, diesen Mikrocontroller (neu) zu programmieren, dann sind sie ungefähr so ​​gut wie das ursprünglich unterstützte Board Arduino-Board-Familie. Das sind alle "Arduino"-Klone auf dem Markt.

Für den Rest der AVR8 kann die Unterstützung für sie hinzugefügt werden, indem benutzerdefinierte Arduino-Kerne und -Bibliotheken erstellt werden. Zum Beispiel "MIT - High Low Tech" attiny85-Kern oder Arduino-Tiny-Kern für attiny85. Es gibt andere ähnliche von Benutzern beigesteuerte/generierte benutzerdefinierte Kerne.

Beachten Sie, dass AVR8-Mikrocontroller auch eine Hardware-Signatur haben, die die Teilenummer identifiziert. Dies wird vom Programmierer zum Zeitpunkt der Programmierung des Teils über ISP überprüft.

Einige Leute betrachten die Arduino IDE als Teil dieses SDK. Beachten Sie, dass die IDE verwendet werden kann, um Programme für jeden AVR8 zu schreiben und zu programmieren, solange Kerne/Bibliotheken für den AVR8 hinzugefügt wurden, eine "Boards" -Definition, die erstellt wurde, um die Kompilierung und Programmierung des uC zu ermöglichen.

Auch die Registeradressen variieren je nach Controller. PORTB auf einem ATmega8 hat eine ganz andere Adresse als auf einem ATmega328. Es ist also sehr schwierig, welche genauen Controller aus IDE programmiert werden können. Es wird auch erwähnt, dass nicht alle Arduino-Funktionen und -Bibliotheken auf jedem AVR funktionieren, aber es gibt keine definitive Liste, welche funktionieren und welche nicht. Es ist Versuch und Irrtum.