Go Down

Topic: Bootloader vom Arduino Uno auf Attiny 2313 (Read 1 time) previous topic - next topic

raspido

Hey,

ich habe folgendes Problem,

ich würde gerne mir zuhause ein kleines Busnetz aus µC aufbauen. Zubeginn soll jeder Slave lediglich über einen 1-Wire Temperatursensor verfügen und die Daten bei Abfrage dem Master übergeben. Soweit kein Problem (denk ich zumindest). Nun gibt es 1-2 (oder so) Probleme, das wären folgende:

1. Wie bekomme ich auf den Attyin2313 den Bootloader drauf? Der Attiny2313 soll mit einem Externen Quarz von 4 Mhz (wenn ich mich nich vertue) betrieben werden.

2. Wie bekomm ich auf den AtMega644P (P ist laut Datenblatt einer mit 2 Seriellen Schnittstellen) ebenfalls diesen Bootloader drauf oder gibt es für diesen Prozessor einen besseren?

3. Der Bus soll ein RS485 im 2 Drahtsystem laufen. Spricht es was dagegen, an den Busteilnehmern die Leitung zum RS485 Bustreiber per Jumper zu unterbrechen? Hab mir überlegt, dass wenn es Läuft sind die Jumper drin und das Gerät ist am Bus, wenn offen kann ich mich mittels eines Adapters dazwischen Schalten um die Software zu verändern / aktuallisieren.

4. Die Slaves sollen Ihre Busadresse wahrscheinlich per 5 Pol. Dip Schalter bekommen, also dass ich in der Setuproutine die Dipschalter abfrage und diese so zu einer Busadresse zusammenbaue. Denke das hat den Vorteil, wenn ich 10 Slaves baue, dass ich auf jeden das gleiche Programm laden kann und eben durch die Dipschalter das ganze anpasse und zuordne.

5. Wie schwer ist es ein "Scrollmenü" mit Unterpunkten in Arduino zu Programmieren? Da der Master (AtMega644p) über ein 4-Zeilen Display verfügt möchte ich per Taster rauf und runter die Slaves auswählen und per Okay "in die Slaves" hineingehen. Also deren übertragenen Werte anzeigen lassen (zubeginn ist es ja lediglich die Temperatur). Die Slaves würde ich dem Master vorgeben, dass er die Adressen Namen zuweist. Denn so kann man die Slaves besser zuordnen. Das mit der Zuordnung werde ich mir noch überlegen, wäre aber denke ich kein Problem.

6. Ich habe gesehen, dass man µC auch per Arduino Board mit einem Bootloader ausstatten kann (klick Hier) Setzt dieser auch Automatisch die FuseBits und so? Oder muss man das auf µCs anpassen, also auf den Typ, welchen man verwendet hier Attiny2313 bzw. AtMega644p.



Michael

mkl0815

Auf den ATTiny 2313 wirst Du den Bootloader nicht drauf bekommen, die Kiste hat gerade mal 2kB Flash-Ram. Selbst wenn der Bootloader passt, dann bleibt kein Platz mehr für dein eigentliches Programm. Bei allen Beschreibungen die man findet, bei denen z.b. mit einem Arduino als ISP ein Tiny programmiert wird, gibt es zwar meistens einen Schritt bei dem "burn bootloader" aufgerufen wird, dann wird aber nur verwendet, weil bei diesem Schritt die richtigen Fuse-Bits gesetzt werden, nicht weil der Bootlaoder auf den Chip soll.
Beim "normalen" brennen von Sketchen (auch per Arduino als ISP) werden die FUSE Bits nicht neu gesetzt, daher dieser Schritt.
Für den ATMega644(P) brauchst Du andere Core-Files, damit Du den über die IDE programmieren kannst, die findest Du hier. Damit kannst Du dann auch den 644 oder auch den 1284P (hat 16k RAM und 128k Flash) über die IDE verwenden. Die Core-Files bringen auch einen passenen Bootloader mit.
Für die ATTinys benötigst Du übrigens auch noch die passenden Core-Files, da hab ich aber gerade nicht den passenden Link parat.
Wenn Du sowas vor hast, empfehle ich Dir aber die Anschaffung eines Programmers (tinyUSB o.ä.) das macht das Flashen deutlich einfacher und weniger umständlich. Zumal ein einfache Programmer weniger kostet, als der Arduino den Du dafür ständig umbauen musst.
Mario.

erni-berni

Quote
Für die ATTinys benötigst Du übrigens auch noch die passenden Core-Files, da hab ich aber gerade nicht den passenden Link parat.

hier -> https://github.com/damellis/attiny/

raspido

#3
Mar 30, 2013, 09:08 pm Last Edit: Mar 30, 2013, 09:18 pm by raspido Reason: 1
Ja gut, Betreff des Programmer habe ich auch noch einen ISP Programmer hier, welcher über den Seriellen Port also richtigen RS232 übern PC läuft. Mit so einem sollte ich das brennen des Bootloaders denke ich mal hin bekommen und wegen den FuseBits, gibt es dort auch eine "Anleitung" wie die gesetzt werden müssen bei externen Quarz und Bootloader?


Michael


Wäre für den AtTiny2313 folgender Link richtig?

https://github.com/derf/attiny2313/tree/master/attiny2313

Und ich müsste dass dann wie machen? Ich Vermute die Makefile Datei ist der "Bootloader" für den µC und muss mit einem C Compiler in eine Hex Datei gewandelt werden und anschließend per ISP Programmer übertragen werden? Oder geht das anders? Sry der dummen Fragen wegen.

erni-berni

Quote
Wäre für den AtTiny2313 folgender Link richtig?

Für was? Das hat doch überhaupt nichts mit Arduino zu tun.
Und nochmal
Quote
Auf den ATTiny 2313 wirst Du den Bootloader nicht drauf bekommen, die Kiste hat gerade mal 2kB Flash-Ram.

Du kannst den ATTiny2313 mit der Arduino IDE programmieren, dafür musst du die Core Files für diesen Chip einbinden. Die Core Files findest du unter
http://code.google.com/p/arduino-tiny/
Den ISP Programmer kannst du nutzen, um aus der IDE direkt den ATTiny zu programmieren (mit der Option: Upload witg programmer) oder die Fuse Bits zu setzen.
Dazu stellst du den Chip ein und mit Burn Bootloader brennst du die Fuses. Allerdings sind in den Cores für den 2313 nur Settings für einen internen Quarz von 8 oder 1 MHz. Wenn du das verändern willst, musst du die Datei boards.txt editieren.
Aber versuch im ersten Step mal nur den 2313 mit dem Programmer zu bespielen. Wenn das klappt sehen wir weiter.

Go Up