Anos B. schrieb:
> Ich habe hier einen PIC24, einen PIC24HJ128GP506.
>
> Wenn ich alle Pinne mit TRISx=0; auf Output stelle, bleiben 8 Pinne
> ohne, daß es dafür einen Grund zu geben scheint, hochohmig.
>
> Es sind die Pinne RG0, RG1, RG12, RG13, RG14, RG15, RC1 und RC2
> Weiß jemand, woran das liegen kann?
In den PIC24 sind die meisten Pins mit Sonderfunktionen beschaltet,
welche in der Standardbelegung eine andere sein kann, als ein
Digitalport. Man muss diese Sonderfunktion in den entsprechenden
Konfigurationsregistern abschalten.
Um den Umgang mit den zig Sonderfunktionen zu erleichtern, gibt es in
der MPLAB Entwicklungsumgebung von Microchip eine grafische Oberfläche,
genannt "Visual Initializer" unter dem Reiter "Tools", welche den
physikalischen Chip mit seinen Pins sehr groß auf dem Bildschirm
darstellt. Hierzu muss man zuvor ein Projekt anlegen, bei dem der
verwendete Controller ausgewählt wird und so dem Visual Initializer auch
bekannt ist. Jetzt kann man die Sonderfunktionen z.B. PWM,
Quadraturencoder, Komparator, ADC etc als Klötzchengrafik auf den Chip
ziehen. In Deinem Fall müssten also die Digitalports ausgewählt werden.
Der Initializer macht auch darauf aufmerksam, wenn eine gewünschte
Belegung so nicht machbar ist, z.B. weil die Ausgänge zweier
Sonderfunktionen dann auf den gleichen PIN zugreifen müssen.
Um solche Kollisionen zu vermeiden, bieten einige der neueren PIC24 die
Möglichkeit, den Pin für die Sonderfunktion auszuwählen. Somit kann
Microchip auch bei Controllern mit wenigen Pins eine große Palette an
Sonderfunktionen bereitstellen. Den hiervon benötigten weist man dann
Pins zu. Die anderen Funktionen bleiben dann einfach ungenutzt. Bisher
musste man einen großen Chip auswählen und verschenkte mitunter viele
Pins, welche ungenutzt blieben. Auch durch die Pinzuweisung kann es
natürlich zu unerwarteten Ergebnissen an den Pins kommen, wenn man das
nicht weiß.
Diese Komplexität in der Konfiguration ist natürlich der Preis dafür,
dass man eine schier unübersehbare Menge an Funktionen flexibel sowie
platz- und kostensparend auf einem einzigen Chip verfügbar machen will.
Ohne den Initializer muss man sich daher mit Funktionen
auseinandersetzen, welche man überhaupt nicht benötigt ... und zwar zu
dem einzigen Zweck, sie abzuschalten ;-) Und bei deren Beherrschung
hilft eben der Visual Initializer.
Nachdem man alle benötigten Bausteine auf den Chip gezogen und die Pins
zugewiesen hat, erzeugt der Visual Initializer auf Klick den
Konfigurationscode, den man dann an den Anfang seines Programms kopiert.
Anhand dieses Codes kannst Du dann auch feststellen, welche
Konfigurationen Du bisher versäumt hast. Hierzu sind die Bezeichnungen
der Register im Code - wie bei Microchip Bibliotheken üblich -
kompatibel mit dem Datenblatt.
Gruß
fragment