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??
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?
Hab eigentlich alles auskomentiert und das programm besteht derzeit nur aus den oberen paar Zeilen
Machs mal so: TRISBbits.RB5 = 1; //Eingang TRISBbits.RB6 = 0; //Ausgang while(1) { if(PORTBbits.RB5 == 1) { LATBbits.LATB6=1; } else { LATBbits.LATB6=0; } }
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
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.
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.
> 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.
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.
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.
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.... ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.