Forum: Mikrocontroller und Digitale Elektronik ATTINY15 ohne SRAM, wohin mit Variablen?


von Erwin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
Das angehangene Stückchen Programm KANN so nicht laufen, das weiß ich.
Es dient nur zur Verdeutlichung dessen, was ich machen möchte.
Ich habe mal den Versuch machen wollen, das DCC-Signal (Modellbahn)
zu dekodieren. Leider scheitere ich schon sofort daran, daß der Tiny
15, den ich hier massenhaft habe, keinen statischen RAM hat und ich 
daher
keine Variablen dort unterbringen kann. Was kann ich tun, außer meine
Variablen in den Registern des Prozessors zu speichern?
Mit einem größeren Prozessor z.B. ATTINY2313 hätte ich das Problem 
nicht,
nur wird das räumlich zu groß.:-(

Grübelnd
Erwin

von Benedikt K. (benedikt)


Lesenswert?

Einen tiny25 nehmen...

von Marius (Gast)


Lesenswert?

tinys ohne SRAM programmiert man besser in assembler

von Simon K. (simon) Benutzerseite


Lesenswert?

Unterstützt BASCOM überhaupt RAM-lose AVRs?

von Erwin (Gast)


Lesenswert?

@Benedikt
Das wir wohl die beste Lösung sein, einen Attiny 25 zu nehmen, der ist 
auch schön klein.

@Marius
...das habe ich befürchtet ;-) (Schluchts, ich will auf meine alten Tage
nicht mehr Assembler lernen)

@Simon
...jedenfalls gibt es dafür eine .Def/Dat -Datei. Wenn ich das Programm
dort oben durch den Syntaxcheck jage, erzählt er mir, daß der Tiny15 
keinen
RAM hat. (Womit er zweifellos Recht hat) ;-)

Gruß Erwin

von Hannes L. (hannes)


Lesenswert?

Habe leider keine DCC-Zentrale, würde Dir sonst gerne (in ASM) helfen.

...

von Erwin (Gast)


Angehängte Dateien:

Lesenswert?

@Hannes
Ich habe auch keine DCC-Zentrale im üblichen Sinn sondern mein Rechner 
ist
die Zentrale. Das läuft mit DDW (Dirékt-Digital für Windows)

Hier findet man die Programme, die dafür gebraucht werden:
  http://home.snafu.de/mgrafe/

Man benötigt nur noch einen Booster (Leistungsverstärker), der sich mit
z.B. L298 und ein paar weiteren Bauelementen gut realisieren läßt.
(siehe mein Bild oben)
Weiterhin braucht man Dekoder für die Weichen und Signale; ich habe den
hier gebaut:
http://www.opendcc.de/modell/opendecoder/opendecoder_sw_schalt.html
Dort war noch ein Fehler im Schaltbild, (Pin7 und 8 vom Optokopler 
müssen verbunden werden, Autor weiß Bescheid)

Jetzt wollte ich anfangen, mir Dekoder für die Lok´s zu bauen, aber da 
hängt´s.
MADDAX hatte schon mal im Forum "Codesammlung" ein Programm 
veröffentlicht, aber ich weiß nicht, was nun dort der endgültige Code
ist und verstehe nichts von Assembler.

Gruß Erwin

von Jörg (Gast)


Lesenswert?

Man kann den Tiny15 in C programmieren, habe ich schon gemacht. 
Allerdings nicht mit gcc, sondern mit ICC. Ich hatte damals eine 14-Tage 
(oder so) Probeversion aus dem Netz und mich mit dem Projektchen 
entsprechend beeilt (I2C-Ansteuerung eines Audio-DACs).

Variablen kann man soviele benutzen, bis ihm die Register dafür 
ausgehen. Der Befehlssatz kennt einen indizierten Registerzugriff, das 
ermöglicht ihm sogar einen kleinen Stack. Im ICC kann man die Grenze 
zwischen  Variablen und Stack einstellen.

Man kriegt so einiges rein in das kleine Ding, sauber in C geschrieben. 
Ich hatte den ADC in Betrieb (um ein Lautstärkepoti zu lesen), 
Konstanten aus dem EEPROM gelesen, Sleep Modus, Watchdog und wie gesagt 
I2C, per Bitbanging.

von Erwin (Gast)


Lesenswert?

@Jörg
Ich danke Dir für diesen Tip. Allerdings sehe ich C als noch schwerer
verständlich an als Assembler. Das werde ich mir nicht mehr antun. ;-)

Aber selbst mit C würde ich mit den zur Verfügung stehenden Registern
nicht reichen; ich sehe ja in meinem Ablaufplan, wieviele Variablen ich 
brauche und wie "lang" die teilweise sind. Das is ja unabhängig von der 
Sprache, die ich benutze so.

Da wird es noch das Einfachste sein, sich mit dem Attiny25 zu befassen, 
den kann ich "normal" programmieren. Er hat 128 Byte SRAM drin.

Gruß Erwin

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.