Forum: Mikrocontroller und Digitale Elektronik PIC24 PIN Abfrage


von Jens G. (Firma: fa. Seuffer) (willi-helmchen)


Lesenswert?

Hy Leute,
ich bin grad fast am verzweifeln und kurz davor durchzudrehen.
Ich habe auf meinem dsPIC33 eine einfache Funktion gebaut welche einen 
Pin abfragt und dementsprechend eine LED ein oder ausschaltet (war 
einfach nur zum Test und wurde nach erfolgreicher Umsetzung danach 
ausgebaut.
Code lautet so.

TRISBbits.RB5 = 1; //Eingang
TRISBbits.RB6 = 0; //Ausgang

while(1)
{
 if(PORTBbits.RB5 ==1)
 {
   PORTBbits.RB6=1;
 }
 else
 {
   PORTBbits.RB6=0;
 }
}

Dier Taster an RB5 ist mit einem PullHigh versehen und wird gegen Masse 
geschaltet.
Auf dem dsPIC33 läuft das auch soweit.

Jetzt will ich genau das gleiche auf dem PIC 24HJ128GB206 machen, bei 
dem die PINS gleich beschalten sind und es passiert garnichts.
Das Teil reagiert einfach nicht auf den PORT.
Zum Test habe ich auch mal die Portabfrager gegen eine Variablenabfrage 
getauscht
if( i==0)
{
 i=1;
 PORTBbits.RB6=1;
}
else
{
 i=0;
 PORTBbits.RB6=0;
}
und die LED blinkt sich zu tode, also an der If schleife oder der Endlos 
While Schleife leigt es nicht.

Kann mir jemand nen Tip geben bevor ich das Scheißteil aus dem 
geschlossenen Fenster schmeiße??

von micha r. (Gast)


Lesenswert?

Zum Setzen der Ports nutzt man hier das Latch.

Also LATBbits.LATB6 = 1;

von micha r. (Gast)


Lesenswert?

Bist du sicher, dass du die Zeilen für die TRIS-Register korrekt 
einkommentiert hast und dass dir die Einstellungen nicht später 
irgendwann überschrieben werden?

von Jens G. (Firma: fa. Seuffer) (willi-helmchen)


Lesenswert?

Hab eigentlich alles auskomentiert und das programm besteht derzeit nur 
aus den oberen paar Zeilen

von micha r. (Gast)


Lesenswert?

Machs mal so:

TRISBbits.RB5 = 1; //Eingang
TRISBbits.RB6 = 0; //Ausgang

while(1)
{
 if(PORTBbits.RB5 == 1)
 {
   LATBbits.LATB6=1;
 }
 else
 {
   LATBbits.LATB6=0;
 }
}

von Jens G. (Firma: fa. Seuffer) (willi-helmchen)


Lesenswert?

Das Problem ist nicht das Ein und Ausschalten der LED sondern das er die 
If Abfrage also

PORTBbits.RB5 ==1

nicht erkennt oder nicht drauf reagiert.
Aber ich hab deins trotzdem mal getestet :-)

Hab jetzt auch mal am Pin RB5 selbst gemessen und dieser schaltet sauber 
zwischen 0 und 3,3 V beim Tastendruck

von micha r. (Gast)


Lesenswert?

Schau mal ins Datenblatt.
Ich kann es leider nirgendwo finden.
Aber schau mal, was der Port noch alles so kann.
Ich glaub I2C oder so.
Versuch mal, diese Sondernfunktionen explizit auszuschalten.
Evtl. gibts einen internen Pulldown, der dir vielleicht mit deinem 
Pullup nen Spannungsteiler macht.

von Andreas K. (a-k)


Lesenswert?

Bei den PIC24/30/33 sind Pins, die als ADC-Eingang verwendet werden 
können, per Reset als Analogeingang konfiguriert und nicht als 
Digitaleingang zu gebrauchen.

=> Konfigurationregister finden und als Digitaleingang einstellen.

von micha r. (Gast)


Lesenswert?

> Bei den PIC24/30/33 sind Pins, die als ADC-Eingang verwendet werden
> können, per Reset als Analogeingang konfiguriert und nicht als
> Digitaleingang zu gebrauchen.

PortB5/6 allerdings nicht.

von Andreas K. (a-k)


Lesenswert?

Um welchen Typ handelt es sich wirklich? Einen PIC24HJ128GB206 konnte 
ich nur mit "hartem B" finden - und bei dem ist RB5=AN5 und ist ab Reset 
nur analog zu gebrauchen.

von micha r. (Gast)


Lesenswert?

Oh.. da hab ich sicher im falschen DS geschaut. Sorry

von Jens G. (Firma: fa. Seuffer) (willi-helmchen)


Lesenswert?

Hey danke Leute, dann muss ich morgen gleich mal nach dem richtigen 
Register schaun und das Teil zum Digitalpin machen.
Mir wurder der PIC24 mit der Aussage vorgesetzt das er komplett 
kompatibel zum dsPIC33 ist.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Jens Großmann wrote:

> Mir wurder der PIC24 mit der Aussage vorgesetzt das er komplett
> kompatibel zum dsPIC33 ist.

Nur weil er auch in schwarzem Plastik eingegossen ist ?????
Da muß es doch einen Unterschied geben, wenn sich der Hersteller die 
Mühe macht 2 versch. Teile zu designen.... ;-)

von Andreas K. (a-k)


Lesenswert?

Es gibt schon so einige PIC24 und dsPIC33 Paarungen, die sich beim 
Querlesen nur im DSP-Teil vom Prozessor zu unterscheiden scheinen. Also 
dsPIC33 mit DSP und PIC24 ein bischen billiger ohne.

Nur ist natürlich nicht jeder dsPIC33 pin- und funktionskompatibel zu 
jedem PIC24.

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
Noch kein Account? Hier anmelden.