Forum: Mikrocontroller und Digitale Elektronik Programm für tiny22 direkt auf tiny45 lauffähig ?


von Frank L. (Firma: delucks) (delucks)


Angehängte Dateien:

Lesenswert?

Moin Moin
einfache Frage vlt einfache Antwort.
Ich hab ein Programm für ATtiny 22,kann das direkt mit einem ATtiny45 
benutzt werden,die Pinbelegung scheint gleich zu sein,oder sind 
zusätzliche Schritte nötig.Würde gern sehen ob das machbar ist.
Gruß
Frank

von c-hater (Gast)


Lesenswert?

Frank L. schrieb:

> Ich hab ein Programm für ATtiny 22

Nein, hast du nicht.

> kann das direkt mit einem ATtiny45
> benutzt werden

Wenn es tatsächlich für den Attiny22 gewesen wäre, dann ja. Der 
Assemblerquelltext würde dann nur einer sehr kleinen Änderung bedürfen, 
um die Sache auch formal korrekt zu machen, ein eventuell bereits 
existierendes Binary/Hexfile könnte man sogar ohne jede Änderung auf 
einen Tiny45 flashen.

von Rene K. (xdraconix)


Lesenswert?

Um es Mal genauer zu sagen...: Dein Code ist für einen AT90S2343, 
welcher Pin/Code Kompatibel zum Attiny22 ist. Inwieweit die Änderungen 
zum AttinyX5 ist... Kann ich aber nicht sagen.

von K. S. (the_yrr)


Lesenswert?

folgendes steht in der asm Datei:
;* MCU type: ATiny22
;* Copyright: RES
;* Date: 06-03-2000
;****************************************************************

.include "2343def.inc"

ich kann bei mir bei Atmel Studio 7 kein 2343def.inc finden, das 
müsstest du erstmal ändern (tn45def.inc gibt es z.b. bei mir)
könnte eigentlich für einen AT90S2343 gedacht sein.

es gibt nur 3 Interrupt Vektoren (im Attiny45 sind es 15), aber man 
sollte trotzdem alle definieren (oder leer lassen, also "reti"), aber 
nicht einfach den Quelltext nach dem reset Vektor weiterschreiben. 
einmal ein ".org 0x0000 " davor wäre auch zum lesen ganz schön, dann 
weiß jeder dass jetzt die Interruptvektoren kommen.

Weiterhin ist es relativ schei*e erst die Ports mit A-E zu definieren 
und dann das Schalten der LEDs an diesen Ports über hardgecodete 
Binärzahlen zu machen (ldi baff, 0b111...), das zerstört den ganzen Sinn 
der Definition, wenn du die änderst ändert sich trotzdem nichts an der 
Ausgabe des Programmes (tausche z.b. A und D, die Ausgabe wird so sein 
als hättest du nichts verändert, in der hex Datei sind die SBI DDRB... 
in der Reihenfolge getauscht, sonst aber alles identisch).

die delay funktion finde ich bestenfalls fragwürdig. ohne die originale 
Taktrate zu kennen kannst du sowieso nur raten wie lange der ist. 
Wenigstens ein Kommentar dazu wäre angebracht (mit Formel wie man 
T1/T2/tmp zu setzen hat), so darfst du erstmal Instructions zählen und 
rechnen (viel Spaß deim "Schleifendurchläufe" zählen und mit den 
Conditional branches, die brauchen je nach Ergebnis 1 oder 2 Zyklen). da 
es ja einen Timer gibt und der frei ist könnte man den benutzen, das 
würde die Berechnung/spätere Änderung enorm vereinfachen.

Ansonsten wird eigentlich nichts für einen Tiny/Mega spezifisches 
verwendet (PortB 0-4 müssen existieren), daher sollte das gehen. 6 LED 
im Charlieplexing im festen Takt blinken lassen sollte aber in jeder 
Sprache die für nen Tiny compilierbar ist in kurzer zeit hingerotzt 
sein, vor allem auf dem Niveau von dem Programm da.




tldr:
sollte gehen, änder die "2343def.inc", und nimm es als Beispiel dafür 
wie man in Assembler (oder auch allgemein) NICHT schreiben sollte.

: Bearbeitet durch User
von delucks (Gast)


Lesenswert?

Danke für die Ausführungen.
Ich werde es mal mit geänderter include-Zeile versuchen.Danach gibt's 
Bescheid.Könnte aber etwas Dauern weil die Aussenbeschaltung verlegt 
wurde.
Gruß aus der Nordsee
delucks

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.