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.
Hallo, ich bin ein wenig enntäuscht darüber, dass ich hier noch keine Antwort erhalten habe. Fehlt euch eine wichtige Information? Gruß, anonym
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
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
anonym schrieb: > 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. warum simuliest du den code nicht einfach? Dann sieht du was passiert und wo es hängt.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.