Entwickeln von Mikrokontroller-Schaltungen

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 27 12 2025  11:53:14      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( Vorherige Seite 1 | 2 )      


Autor
Entwickeln von Mikrokontroller-Schaltungen

    







BID = 381601

Hackes

Gesprächig



Beiträge: 117
Wohnort: Rommerskirchen
 

  


Hallo Ltof


Zitat :
Ach - da wüsste ich was.


Grins, naja, also so ein zwei schönere Sachen würden mir sicher noch einfallen.

Tja, mein PC ist selbstgebaut. Also natürlich nicht auf Bauteilebene, sondern aus den Komponenten Mainboard, CPU, RAM, HD usw...

Das Haus ist auch selbstgebaut.

Aber jetzt mal Spaß bei Seite. Ich danke Dir für Deine Antworten und Deine Argumentation ist natürlich Hieb und Stichfest. Habe mir das PICkit gerade mal angesehen und es macht einen ordentlichen Eindruck.

Mal sehen, was das Ding so kostet. Dann denke ich, werde ich es mir mal zulegen.

Also, hab Dank!

Gruß, Hackes.

BID = 381751

DonComi

Inventar



Beiträge: 8604
Wohnort: Amerika

 

  


Zitat :

Zumal sich die Interrupt-Flags ohne Interrupt verwenden lassen, was bei AVRs aber auch geht - glaube ich.

Ist richtig.

Beim AVR kann man mit dem Setzen des I-Flags alle Interrupts global aktivieren/deaktivieren. Dazu muss dann jedes Interrupts einzeln in entsprechenden Registern aktiviert werden.
Meistens befinden sich dann in diesen Kontroll-Registern dann noch die Interrupt-Flaggen. Diese werden gesetzt, wenn eine Interruptsbedingung eintritt.


Zitat :

Hat der ATmel eigentlich ein Prioritätenmodell für die Abarbeitung der Interupts und kann er einen laufenden Interupt durch einen weiteren Interupt unterbrechen (also verschachteln)? Würde mich mal interessieren.


Ja, die Interrupts können sich auch gegenseitig unterbrechen. Die Prioritäten sind festgelegt von IRQ-Source 0x0000 (Reset) bis zum letzten Interruptvektor.

Was man auf jeden Fall immer machen sollte, ist, das Statusregister auf den Stack zu schmeißen, denn über das Statusregister laufen alle wichtigen Sachen, wie z.b. Entscheidungsgrundlagen. Wird zwischen einem Vergleich und einer Auswertung verschiedener Bits im SREG dann unterbrochen und das SREG in der Interruptsroutine verändert, dann hat man nach dem "reti" ein Problem.

_________________

BID = 382014

clembra

Inventar



Beiträge: 5402
Wohnort: Weeze / Niederrhein
ICQ Status  


Zitat :

Ja, die Interrupts können sich auch gegenseitig unterbrechen.

Das stimmt nur bedingt. Normalerweise wird beim Aufruf eines Interrupt das I-Bit des Statusregisters genullt, also alle Interrupt-Aufrufe global abgeschaltet, und mit dem RETI-Befehl nach dem Rücksprung wieder eingeschaltet. Wenn man während eines Interrupts, aus welchem fragwürdigen Grund auch immer, das I-Bit setzt kann es aber dazu kommen. Wenn während des Interrupts aber mehrere neue auflaufen werden Sie in der Reihenfolge wie sie im Quelltext stehen abgearbeitet.

_________________
Reboot oder be root, das ist hier die Frage.

BID = 382019

DonComi

Inventar



Beiträge: 8604
Wohnort: Amerika

Ja, aber es könnte ja sein, dass meine Aussage sowas schon impliziert .

Kannst du mir das vllt. mal belegen anhand einer Angabe in einem Datenblatt? Mir ist das so nämlich noch nie so aufgefallen . Also nicht falsch verstehen, ich glaube dir das schon.


Hm. Bis jetzt habe ich meistens nämlich um sowas zu vermeiden meine IRQ-Routine mit 'cli' gestartet, dann das SREG gesichert, danach wieder hergestellt und 'sei' abgespielt, um die IRQs global zu aktivieren. Wenn aber reti das schon impliziert, wars doppelt gemoppelt und ich hätte 4Bytes sparen können.

_________________

BID = 382025

clembra

Inventar



Beiträge: 5402
Wohnort: Weeze / Niederrhein
ICQ Status  

Darum heist es "reti", und nicht "ret". Das i am Ende steht nämlich für das I-Bit. Allerdings sollte man stehts nur RETI benutzen, nicht SEI und dann RET(I), weil die Reihenfolge dann anders ist. Bei Reti wird zuerst zurückgesprungen und dann das I-Bit aktiviert. Bei deinen Programmen ist es andersrum.
Und weil du so nett gefragt hast, gleich mal eine Passage eines Datenblattes. Beispiel hier ATmega8515, Seite 13 (Complete-Version versteht sich), aber es steht wohl in allen anderen auch drin:

Zitat :

When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts
are disabled. The user software can write logic one to the I-bit to enable nested interrupts.
All enabled interrupts can then interrupt the current interrupt routine. The I-bit is
automatically set when a Return from Interrupt instruction – RETI – is executed.


_________________
Reboot oder be root, das ist hier die Frage.

BID = 382028

DonComi

Inventar



Beiträge: 8604
Wohnort: Amerika

Soso, und wieder was dazugelernt. Komisch, im DB des '8535ers habe ich auch geguckt, aber an der völig falschen Stelle. Danke.

_________________


Vorherige Seite      
Gehe zu Seite ( Vorherige Seite 1 | 2 )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 2 Beiträge verfasst
© x sparkkelsputz        Besucher : 187974194   Heute : 4503    Gestern : 28182    Online : 228        27.12.2025    11:53
8 Besucher in den letzten 60 Sekunden        alle 7.50 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0245721340179