Portpin durchreichen

Gast #2226366
Lesenswert?

Hallo,

ich habe folgendes Problem: Ich möchte eine Signalleitung, von einen auf 
den anderen Portpin birektional durchreichen. Die Signalleitung wird per 
Pullup auf high gezogen und der µC simuliert einen 
Open-Collector-Ausgang mittels Umschaltung zwischen Tri-State und Low. 
Das Signal ändert sich immer nur auf einer Seite und auch nur, wenn das 
andere high ist. Dies ermöglicht die Birektionalität. Der ganze Vorgang 
soll Interruptbasiert ausgeführt werden.
Der jeweils andere Interrupt wird in der ISR vorrübergehend 
abgeschaltet, um zu verhindern, dass beide Portpins gleichzeitig vom µC 
auf Low gezogen werden und somit ein unverlässlicher Zustand erreicht 
wird.

Leider funktioniert der angehängte Code nicht. Es zeigt sich keine 
Änderung am jeweils anderen Portpin, wenn ich einen der beiden extern 
auf Low ziehe.

Ich hoffe ihr könnt mir helfen eine Lösung für das Problem zu finden.
Angehängte Dateien:
(Firma: Anscheinend Corner-Cases ;-)) #2232269
Lesenswert?

anonym schrieb:
> Hallo,
>
> ich bin ein wenig enntäuscht darüber, dass ich hier noch keine Antwort
> erhalten habe. Fehlt euch eine wichtige Information?
>
Das bin ich auch immer.
Ich kann Dein Problem nicht richtig verstehen bzw. was Du genau vor 
hast.

Bidirektional versteh ich z.B. so :

PB0 = Eingang => PB1 = Ausgang
PB0 = Ausgang => PB1 = Eingang

vielleicht must Du dein Anliegen noch mal anders Formulieren.
Ich habe keine Ahnung von C und klinke mich deshalb wieder aus.

Bernd_Stein
#2232290
Lesenswert?

anonym schrieb:
> ich bin ein wenig enntäuscht darüber, dass ich hier noch keine Antwort
> erhalten habe.

Das ist doch auch eine Antwort.

Es ist immer schlecht, rein theoretische Aufgaben zu stellen.
Du mußt die Aufgabe interessant machen, d.h. eine praktische Anwendung 
beschreiben.

Und dann natürlich die Randbedingungen, ob die Realisierung überhaupt ne 
Chance hat oder der MC hoffnungslos überfordert ist.
In diesem Fall, wie schnell muß eine Reaktion erfolgen (Worst Case 
Berechnung).
Wer dann gedankenlos schreibt "so schnell wie möglich", hat sich 
natürlich als Witzbold entlarvt. Sinnvolle Antworten kommen dann nicht 
mehr.

Schnell, genau, groß, viel und dergleichen schwammige Wörter haben in 
einer Aufgabenbeschreibung nix verloren, da zählen nur Zahlen.


Peter
Gast #2232318
Lesenswert?

anonym schrieb:
> Fehlt euch eine wichtige Information?

Evtl. nicht interessant genug. Auch wäre statt auf Antwort zu warten, 
der bessere Ansatz gewesen den Code zu simulieren.

Was auffällt: Den jeweils konkurrierenden Interrupt zu deaktivieren ist 
sinnlos, innerhalb der ISR sind jegliche anderen Interrupts sowieso 
gesperrt. Nicht sinnlos wäre dagegen im GIFR die durch den Pegelwechsel 
des Zielports gesetzten Flags zu löschen, sonst wird die Ziel-ISR 
unmittelbar nach Beenden der Steuer-ISR ausgelöst. Auch hätte man INT0 
besser auf Flankenwechsel konfiguriert, dann könnte die INT0-ISR so 
aussehen wie die PCINT0-ISR.

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