mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR stack


Autor: Karl Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

gibt es bei einem AVR mit Hardware Stack die Möglichkeit die
Rückspungadresse, die z.Bsp. bei einem Interupt abgelegt wurde, zu
manipulieren, so dass es nach einem reti an einem definierten
Programmpunkt weitergeht?!

Grüße,

KarlHeinz

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. sind solche Manipulationen eigentlich immer überflüssig
2. gibts bei Hardwarestack keine solche Möglichkeit

Autor: klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit
pop Register
pop Register 2* die alte Rücksprungadresse vom Stack holen

dann mit rjmp oder ajmp zur neuen adresse oder mit 2* push Register die
neue Rücksprungadresse laden und dann reti auf die gesetzte Adresse

Nicht gerade die feine englische Art, funktioniert aber

HTH,
Klaus

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
blöd nur, dass es pop und push und auch einen per Software
manipulierbaren SP bei Hardware-stack gar nicht gibt...:-)
Das betrifft alle Typen ohne RAM (1200, Tiny11, 12, 15)

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Karl Heinz:
Wenn Du einen kleinen Tiny mit 8 Pins benötigts und unbedingt ne
Rückspringadresse ändern willst, nimm den Tiny13.
Der hat als einziger Mini-AVR SRAM mit normalem Stack im SRAM.

Gruß
Andi

Autor: Karl Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok,
ich sehe schon, mein tiny15 gibt das wohl nicht her...
die Anwendung ist halt ziemlich zeitkritisch, d.h. ich habe in der
Anwendung keine Zeit noch ein Bit auszuwerten, welches in der ISR
gesetz werden würde.
dann halt doch ein 12er. der läuft etwas schneller und verschafft mir
Luft um besagtes Bit zu checken...

Danke.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was heißt hier keine Zeit?
Bei 2, 4 oder mehr MHz hat man alle Zeit der Welt sofern ein
IRQ-Programm nicht 100.000 mal je Sekunde ausgeführt werden soll.
Und wenn es mal etwas länger dauert, da Variabel, wird nach dem RETI
aus dem IRQ-Prog das IRQ-Prog durch das Interrupt-Flag sofort wieder
aufgerufen.
Was hast Du genau vor?

Gruß
Andi

Autor: Karl Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist alles ein bißchen kompliziert:
mein tiny15 pollt unentwegt einen Pin, überwacht damit einen seriellen
Datenstrom und checked ob das Protokoll passt. Die Bitzeit liegt bei
4us, d.h bei den 1,6MHz des Tiny15 kann ich mit SBIC nur einmal checken
ob sich am Pin was getan hat (worst case). Den timer nutze ich zum
testen des data timings(ich will nur einen nutzen, um später auch
andere tinys verwenden zu können. der t15 lag halt rum und bei reichelt
gibts noch keine t13).
Jetzt gibt es zwei Fälle:
1. es kommen keine daten an
der timer läuft über und generiert einen INT
2. es kommem Daten an, haben aber das falsche Protokoll, d.h. es gibt
keinen timer überlauf, da ich immer wieder das timing prüfe und dazu
den zähler rücksetze

aber ich merke schon, ohne zweiten timer gehts nicht. habs gerade mal
mit dem WDR probiert und schalte nach jedem WDR auf ein anderes
Protokoll um, das ich testen will; das läuft soweit.

Grundsätzlich nochmal:

wenn ich in der ISR folgendes mache:
pop rxxx
pop rxxx
ldi r16,low(zielmarke)
ldi r17,high(zielmarke)
push r17
push r16
reti
müßte ich doch nach reti zu 'Zielmarke' springen, oder?

Grüße,
KH

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi...

Tiny15 hat kein SRAM, daher auch kein pop und push!!!

Tiny15 muss kalibriert werden, sonst läuft er nicht mit 1,6MHz.

Tiny15 hat doch 2 Timer, einer ist sogar sehr schnell.

Tiny15 hat Ext. Int, da brauch man nicht pollen...

...HanneS...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.