www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC24 PIN Abfrage


Autor: Jens Großmann (Firma: fa. Seuffer) (willi-helmchen)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: micha r. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Setzen der Ports nutzt man hier das Latch.

Also LATBbits.LATB6 = 1;

Autor: micha r. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jens Großmann (Firma: fa. Seuffer) (willi-helmchen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab eigentlich alles auskomentiert und das programm besteht derzeit nur 
aus den oberen paar Zeilen

Autor: micha r. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;
 }
}

Autor: Jens Großmann (Firma: fa. Seuffer) (willi-helmchen)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: micha r. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: micha r. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: micha r. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh.. da hab ich sicher im falschen DS geschaut. Sorry

Autor: Jens Großmann (Firma: fa. Seuffer) (willi-helmchen)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht 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.... ;-)

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.