HW - Stack

Gast #136476
Lesenswert?

Programmiere den ATTiny15 mit 3 level deep Hardware Stack.
Gehe nur bis in die zweite Ebene und trotzdem verzweigt das Programm
irgendwann irgendwohin ohne jeglichen Sprungbefehl?
Rufe nur mehrere RCALL Befehle hintereinander auf!

Programmausschnitt

IN_OUT:

CLI

CLR zaehle_1

CLR zaehle_2

RCALL IN_OUT_input_shift

RCALL IN_OUT_output_shift

RCALL analog

MOV universal_1,universal_5
MOV universal_2,universal_6

RET
Gast #136480
Lesenswert?

Komisch... Ich mach nun viel mit dem Tiny15, aber RCALL habe ich noch
nicht verwenden müssen. Das lohnt sich doch erst, wenn ein UP von
mehreren verschiedenen Programmstellen aus aufgerufen werden muss. Der
HW-Stack wird bei mir ausschließlich von den Interrupts genutzt. Meine
Programme laufen meist im Timer-Int.

...
Gast #136481
Lesenswert?

Hannes:Komisch... Ich mach nun viel mit dem Tiny15, aber RCALL habe ich
noch
nicht verwenden müssen.


Wenn du aufwendigere Programme machst dann wird dir das schon mal
unterkommen! Schreibe grade ein Programm für einen Busankoppler und
muss alles Modular aufbauen dh.: Unterprogramme.
Sonst reicht der speicher nicht aus
Stehe derzeit bei 288 Words
Gast #136482
Lesenswert?

Nagut, lassen wir gelten... ;-)

Meine Tiny15-Projekte sind weniger groß, aber oft zeitkritisch.
Der Tiny15-Fahrtregler (Modellbau, Fahrtregler für H-Brücke mit
Bremslicht, Rückfahrlicht und Parameterprogrammierung per Prog-Taste)
hat 366 Words, hat aber keine RCALLs, da mir Aufruf und Rücksprung zu
lange dauert und keine Programmteile von mehreren Stellen aus
aufgerufen werden müssen. Die Impulsbreitenmessung und Software-PWM
erfordert schon halbwegs zeitbewusstes Programmieren.
Auch ein halbwegs linearer Programmaufbau mit Überspringen der gerade
nicht benutzten Routinen kann übersichtlich und speicherplatzsparend
sein.

Gruß... - ...HanneS...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren