Entwickeln von Mikrokontroller-Schaltungen Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
| 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
|
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
|
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.
_________________
|
|
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
|