PIC24FJ256DA210 Development Board
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Beispielcodes und Projekte  |  PIC24FJ256DA210 Development Board « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: PIC24FJ256DA210 Development Board  (Gelesen 804 mal)
 
ottowah
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« am: April 13, 2012, 14:39:36 »

Hallo,
ich bin ganz neu in diesem Forum und auch ganz neu in Sachen PIC Programmierung.
Ich habe das obige Development Board und bisher nur einige vorgefertigte Programme (MultiApp) mir angeschaut. Mein Problem dabei war, dass die Programme zwar toll sind und zeigen was alles geht aber ich damit auf keinen Fall von Grund auf verstehen kann wie die Programmierung in ihren anfängen funktioniert!
Ich möchte als nächstes eigentlich nur einen Pin Blinken lassen (an - aus - an - ...). Das habe ich auch schon geschafft. Nun möchte ich das ganze über die Taster steuern können. (Also anfangen zu blinken, wenn die Taste gedrückt wurde).
Mein Problem ist, dass ich den Status des Eingangs nicht im Pic einlesen kann! Was muss ich bei der Konfiguration eines solchen Inputs beachten? Ich ziehe den Pin bei Tastendruck von +5V auf Masse! Aber das dazugehörige Portregister (PORT RG9) zeigt mir nie den vorhandenen HighPegel an!
Was mache ich falsch?

Wenn Infos fehlen einfach melden!!!
DANKE
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #1 am: April 13, 2012, 16:12:54 »

Der Portpin muss als digitaler Eingang konfiguriert werden (-> ANSG-Register).

Zitat
10.2 Configuring Analog Port Pins (ANSEL)

The ANSx and TRISx registers control the operation of the pins with analog function. Each port pin with analog function is associated with one of the ANS bits (see Register 10-1 through Register 10-7), which decides if the pin function should be analog or digital. Refer to Table 10-1 for detailed behavior of the pin for different ANSx and TRISx bit settings.

When reading the PORT register, all pins configured as analog input channels will read as cleared (a low level).

Viele Grüße
Bernd
Gespeichert

ottowah
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« Antworten #2 am: April 16, 2012, 13:07:58 »

Hey,
danke für die Tipps. Ich habe mich nat schon mit den beiden Registern beschäftigt aber ich scheine trotzdem noch etwas falsch zu machen oder kann ich im debugger die Portregister nicht abfragen?
Hier erstmal mein dazugehöriger Programmcode:
Die Main:
    TRISE = 0xFF00;      //RE 9 als Input
    ANSE = 0x0200;      //Digital Input
    nop();
    if(PORTEbits.RE9)
    {
       delay(delaytime);
   blink_RC2(15);
    }
    return (EXIT_SUCCESS);

Die Funktion blink_RC2 ist eine funktion die mir optisch anzeigt, dass ich in der schleife gelandet bin.
Wo ist nun noch mein Fehler in der überlegung? danke füür die Hilfe
Gruß Matthias
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #3 am: April 16, 2012, 16:57:29 »

1)
Eine "1" im ANSx-Register konfiguriert den Pin als analogen Eingang.

2)
Main enthält sinnvollerweise eine Endlosschleife. Es gibt kein Betriebssystem, zu dem über "return" zurückgekehrt werden kann.


Viele Grüße
Bernd
Gespeichert

ottowah
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« Antworten #4 am: April 17, 2012, 07:03:59 »

Vielen Dank!
Ich habe echt schon Hundert mal auf die dämliche Tabelle geschaut aber irgendwie das wohl immer wieder übersehen. Ärgerlich aber egal.

Nochmals Vielen Dank!

Gruß Matthias

ps:die while(1) fehlte nur in dem Projekt das ich hier zum kopieren benutzt habe aber danke Smiley
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.063 Sekunden mit 19 Zugriffen.
 
Top! Top!