mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Port D nicht als Eingang?


Autor: Britneypunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe folgendes Problem:
Mit einem AT90S2313 habe ich einen I²C Bus aufgebaut,
und diesen auf meiner Steckplatine über den Port B angesteuert.
Das hat auch alles wunderbar funktioniert!
Nun habe ich mir aber ein kleines Applikationsboard dafür zusammen
gelöted und möchte den Bus dort über den Port D ansteuern, dort
funktioniert es aber nicht. Nach mühevoller Fehlersuche habe ich
dann festgestellt, dass wenn ich einen Port (PD5) dort als eingang 
definiere,
dieser sofort als interrupt pin für den timer/counter1 interpretiert
wird, da dieser über einen pull up Widerstand auf high level steht.
Entferne ich diesen Widersand, dann tackten auch die Daten & die Clock
Ports (PD4 und PD6).

Wisst ihr vieleicht, wie man das umgehen kann? Ich kann mir nämlich
nicht vorsetllen, dass Port D nicht als normaler Eingang benutzt werden
kann. ;-)

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der PortD kann definitiv auch als Eingang benutzt werden. Wie macht sich 
das mit dem Interrupt bemerkbar? Damit er auslöst, muß er eingeschaltet 
werden.
Check Deine Software nochmal durch - dort muß der Fehler liegen.
Außerdem verstehe ich nicht so ganz, weshalb Du 3 Port-Pins für I²C 
brauchst - (Port 4,5,6) - das ist ein 2-Leiter Bus.

Autor: Britneypunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Drei Ports deshalb, da die datenleitung als Ausgang sowie als eingang 
fungiert! Über eine kleine Transistorschaltung teilen sich dann 2 Ports 
die Datenleitung!

Ich habe mitlerweile herrausgefunden, das daran kein interrupt schuld 
ist, ich kann nämlich jeden beliebigen Port D als eingang nehmen und es 
funktioniert an allen nicht.
Besser noch gesagt: sobald der Eingang auf high liegt macht der 
Controller garnichts mehr. Das ist sehr merkwürdig!
Am Controller jedenfalls liegt es nicht, habe auch mal nen neuen rein 
getahn.

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste doch mal Deinen Code und die "Transistorschaltung". Irgendwo da 
muß der Wurm drin sein. Die Aufsplittung des I²C-SDA ist eigentlich 
nicht notwendig. Der I²C-Bus ist als "Open Collector" ausgeführt, d.h. 
er zieht nur gegen Masse, die High-Level werden durch den externen 
Pull-Up erzielt. Wenn man das bei der Programmierung beachtet, kann es 
keinen "Crash" geben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.