Hallo,
wenn ich das Richtig verstanden habe, dann sind die PCint0-7 Pins ein
PCint0 softwaremässig, und springen immer zur selben Unterfunktion.
Meine frage jetzt, kann man in der Unterfunktion abrufen, welcher PCint
der auslöser WAR, oder muss man den Wert vorher irgendwie gespeichert
haben, und dann in der Unterfunktion NOCHMALS den Wert des Pins
abfragen?
Ich benutze Bascom.
Timmo H. schrieb:> Du musst den Status der Pins speichern von denen der PCMSK aktiv ist. In> der PCINT ISR musst du dann schauen wo sich was geändert hat.
Und darauf vorbereitet sein, daß es auch mal vorkommt, daß sich nichts
geändert hat, wenn nämlich der Puls am Eingang zu kurz war.
Ich persönlich halte die PCINT-Geschichte für eine ziemliche
Fehlkonstruktion, für viele Sachen nicht wirklich zu gebrauchen. Es
hätte noch ein Register dazugehört, welches alle Änderungen zwischen
zwei Abfragen speichert und dessen Auslesen es auch gleichzeitig
zurücksetzt. Ohne dieses Register sind die Anwendungsmöglichkeiten doch
arg eingeschränkt.
Entweder man beschränkt sich auf einen aktiven Pin pro PCINT oder man
sorgt mit externer Hardware für definierte Signaleigenschaften oder man
hat eine Anwendung, bei der es keine Rolle spielt, an welchem Pin genau
was gewackelt hat. Letzteres ist eher selten, mir ist nur eine derartige
Anwendung bekannt (Aufwachen durch eine beliebige Taste einer
Keymatrix).
c-hater schrieb:> Ohne dieses Register sind die Anwendungsmöglichkeiten doch> arg eingeschränkt.
allerdings...
c-hater schrieb:> oder man> sorgt mit externer Hardware für definierte Signaleigenschaften
wie würde sowas aussehen?
frager schrieb:> c-hater schrieb:>> oder man>> sorgt mit externer Hardware für definierte Signaleigenschaften>> wie würde sowas aussehen?
Das hängt natürlich von der konkreten Anwendung ab. Möglich wären z.B.
Monoflops zur Impulsverlängerung oder D-Flipflops zur Impulsspeicherung.
Letzteres würde im Prinzip näherungsweise das fehlende PCINT-Register
ersetzen, bräuchte aber einen zusätzlichen Pin für den Reset des
"Registers".
c-hater schrieb:> Ich persönlich halte die PCINT-Geschichte für eine ziemliche> Fehlkonstruktion
Stimmt.
Die einzig praktikable Anwendung ist nur das Aufwachen aus dem
Power-Down. Danach macht man alles wie üblich, z.B. Tasten entprellen im
Timerinterrupt.
Etwas besser ist es, wennn man je PCINTx nur einen Pin enabled. Dann
weiß man wenigstens den Pin, aber immer noch nicht die Flanke.
c-hater schrieb:> D-Flipflop
klingt gut. Kann man den FlipFlop so ansehen, dass dieser wenn an einem
Pin high anliegt, es praktisch gespeichert wird, auch wenn die
Stromversorgun nicht mehr anliegt? Sozusagen ein Nichtflüchtiger
Speicher?
frager schrieb:> klingt gut.
Nö.
Erstmal mußt Du festlegen, was Du überhaupt machen willst. Erst danach
kannst Du eine Lösung suchen. Es gibt keine Lösung, die für alles paßt.
c-hater schrieb:> D-Flipflops zur ImpulsspeicherungPeter Dannegger schrieb:> Nö.> Erstmal mußt Du festlegen, was Du überhaupt machen willst.
Einen Impuls dauerhaft speichern!
Peter Dannegger schrieb:> Gehts nicht noch unkonkreter?Beitrag "Not or + AND gatter"
Brauch ich bei einem D-Flipflop diese Clock leitung und die Data
leitung?
Ich benötige für eine Impulsspeicherung nur, SET, Reset und Output oder?
Brauche ich Reset, wenn ich dieses Signal nur einmal benötige? Wird der
zustand nun auch ohne Strom gespeichert?
Eigentlich brauchst Du nicht ein D-Flipflop, sondern ein RS Flipflop:
http://www.elektronik-kompendium.de/sites/dig/0209302.htm
Selbstverständlich verlieren sie ihren Zustand ohne Strom. Wenn Du etwas
brauchst, was ganz ohne Strom den Zustand speichert, brauchst Du etwas,
das nicht elektrisch funktioniert. Zum Beispiel ein bistabiles Relais.
Das wiederum funktioniert nur bei ausreichend langen Impulsen. Dann
kannst Du auch wieder mit dem Interrupt arbeiten und den Zustand ggf im
E²prom speichern.
Du schuldest uns immer noch eine Beschreibung des konkreten
Anwendungsfalls.
Wusel Dusel schrieb:> Du schuldest uns immer noch eine Beschreibung des konkreten> Anwendungsfalls.
Ein parallel Eprom das fast Komplett mit "00" beschrieben ist und nur an
einer bestimmten stelle mit "FF" gibt an seinem Data-Output eine 1
zurück. Dies allerdings nur sehr kurz, zu kurz für ein Mikrocontroller
der damit arbeiten soll.
Wenn jetzt zugriff auf diese Zelle war, soll am Mikrocontroller entweder
immer oder solange damit der Mikrocontroller dies mitbekommt. Ist
eigentlich egal, da ich nicht wissen möchte, wie oft zugegriffen wurde.
Dieser zugriff ist nur einmal wichtig. Erst wenn das Gerät neu gestartet
wird, soll alles von vorne beginnen.
Zudem sollte das alles platzsparend sein, also eine 1 IC oder 1
bauteillösung ist vorzuziehen.
frager schrieb:> Ein parallel Eprom das fast Komplett mit "00" beschrieben ist und nur an> einer bestimmten stelle mit "FF" gibt an seinem Data-Output eine 1> zurück.
Wenn es ein paralleles EPROM ist, hat es ja mehrere Outputs. Wenn es
tatsächlich nur um die Unterscheidung zwischen 00 und FF ginge, würden
die Fähigkeiten der PCINT-Hardware dafür ja völlig ausreichen.
Du hast also entweder dein Problem nicht wirklich verstanden oder du
hast es falsch dargestellt.
Tatsächlich glaube ich, daß du derselbe Typ bist, der schon mehrere
Threads zu dem Thema "Beobachtung eines EPROM" losgetreten hat und der
in diesen Threads insbesondere gezeigt hat, daß er absolut keine Ahnung
hat, daran auch nicht wirklich was andern möchte, aber trotzdem ein
Ergebnis haben will.
Sowas werde ich keinesfalls unterstützen. Kurz: Mach's dir selbst!