Forum: Mikrocontroller und Digitale Elektronik Hilfe PIC33FJ32MC 802 mplab x C30


von Manu E. (Firma: workii) (moraira)


Lesenswert?

Hallo,

habe ein Problem beim einlesen zweier Rechtecksignale . . .


Arbeite mit:
MPLAB X IDE v2.05    c 30 compiler
Microstick II mit dsPIC33FJ32MC802


laut Datneblatt seite  281  ( 
http://ww1.microchip.com/downloads/en/DeviceDoc/70291G.pdf#M5.9.12142.Heading1.30.Memory.Organization 
)
scheint ja alles total einfach . . . aber leider nicht für mich  . . .

Bitte Euch dringent um  Hilfe

 unten  mein code

könnte auch alles falsch sein  . . .  bin anfänger... bitte helft mir es 
ist sehr wichtig.... hoffe ich habe nicht nur müll "programmiert" . . .

Leider weiß ich grad nicht weiter . . .

LG Moraira
----------------------------------------------------------------

#include "p33FJ128MC802.h"

int Signaleins[200];
void eADC(void)
{
    AD1CON1 = 0;
    AD1CON2 = 0;
    AD1CON3 = 0;
    AD1CON1 = 0x8206;
    AD1CON2 = 0x0100;
    AD1CON3 = 0x0000;

}

int readADC(int ch)
{
    Signaleins = ...............
}

int main(void)
{

AD1PCFGL = 0x0000;

TRISA = (0x0002);

eADC();

    while (1) {
    }
}

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

Manu ELLA schrieb:
> int readADC(int ch)
Diese Funktion wie nie aufgerufen.

> bin anfänger
Hier gibt  es ein Tutorial für den PIC24, der ist ähnlich wie der 
dsPIC33.
Du könntest aber auch den im Lieferumfang enthaltenen PIC24 in den 
Microstick II stecken und das Tut mit dem durcharbeiten.
http://www.engscope.com/pic24-tutorial/11-adc/
Für den dsPIC33 kenn ich kein Tut.

Ansonsten würde ich mal Schritt für Schritt die Checkliste mit 
Datenblatt (siehe Anhang) durch gehen.

von Meister E. (edson)


Lesenswert?

Auf den ersten Blick:

Also AD1PCFGL passt, wenn du nur analoge Eingänge benutzt.

Aber für zwei Eingänge reicht es nicht, wenn du nur RA1 als solchen 
initialisierst.

Max H. schrieb:
> Manu ELLA schrieb:
>> int readADC(int ch)
> Diese Funktion wie nie aufgerufen.

Das auch.


Um weiter helfen zu können schlage ich vor, du schreibst mal ein paar 
Kommentare in deinen Code, damit man sieht was du dir dabei gedacht 
hast. Sonst ist es sehr zeitaufwändig, weil man jedes Bit einzeln 
"umdrehen" muss.

Grüße,
Edson

von Manu E. (Firma: workii) (moraira)


Angehängte Dateien:

Lesenswert?

Hallo

erstma danke an euch beiden für die schnelle erstantwort.

ich werde das mal versuchen

hier nochmal der code mit Kommentaren, hoffe die sind soweit richtig bzw 
sinnvoll^^

Hänge auch noch eine kleines bild der Aufgabenstellung dran. Damit ihr 
wisst was ich vorhabe.

vielen dank für eure Hilfe schonmal!    habe ja noch 9 Tage . . juhuu^^

LG Moraira

--------------------------------------------

#include "p33FJ128MC802.h"

/*
 *
 */



int Signaleins[200]; //Varriablen

void eADC(void) // AD-Wandler
{
    AD1CON1 = 0; //Register1 zurücksetzen
    AD1CON2 = 0; //Register2 zurücksetzen
    AD1CON3 = 0; //Register3 zurücksetzen
    AD1CON1 = 0x8206; //R1 Einstellungen Output:signed integer / 10 Bit
    AD1CON2 = 0x0100; //R2 Einstellungen convert CH0 und CH1
    AD1CON3 = 0x0000; //R3 Einstellungen (keine ahnung einfach mal 
alles0)

}

int readADC(int ch)
{
    Signaleins =
}

int main(void) //Hauptprogramm
{

AD1PCFGL = 0x0000 //  Analog Input

TRISA = (0x0002); // Pin 4 als Input definieren

eADC(); // Funktionsaufruf AD-Wandler

    while (1) {
    }

}

von Manu E. (Firma: workii) (moraira)


Lesenswert?

achso  EDIT    ich weiß grad nicht wie es weiter geht mit   readADC   !!

von Chris B. (dekatz)


Lesenswert?

Das allgemeine Datenblatt für den Controller wird dich nicht viel 
weiterbringen.
Google nach DS70183 und lade dir das "Familily Reference Manual - 
Section 16. ADC....." runter. Dort sind nicht nur die Register 
aufgelistet sondern auch Ablaufdiagramme für verschiedene 
ADC-Anwendungen (mit/ohne DMA usw.) beschrieben, der gesamte 
Wandlungsablauf mit Timingdiagrammen etc.

von Manu E. (Firma: workii) (moraira)


Lesenswert?

Hi,

nunja diese pdf nutze ich ja schon, sonst wäre ich mit den "con" 
restigern gar nicht zu recht gekommen.....

ich weiß einfach grad nicht weiter . . .

Nebenbei, das Beispiel mit dem pic 24 ist ganz ok, verstehe aber auch 
nur die Hälfte. . .


wie könnte ich den mein Programm jetzt weiter schreiben ?


lg

von Heribert (Gast)


Lesenswert?

Was soll denn mit dem Rechtecksignal gemacht werden?
Willst du nur den Zustand des Rechtecksignals (0 oder 1)
erhalten, oder die Form des Rechtecksignals?

Woher kommt das Rechtecksignal?

von Bronco (Gast)


Lesenswert?

Der dsPIC33 ist nicht so ganz trivial, wer er schon recht leistungsfähig 
ist (vergleichen mit AVR etc.).
Den ADC kann man vielfältig konfigurieren und auch entsprechend viel 
falsch machen. Ich wage zu behaupten, dass das für einen Anfänger 
schwierig wird.

Schau mal die Application notes durch, z.B.
http://ww1.microchip.com/downloads/en/DeviceDoc/CE400_ADC_IIR_Filter_2.zip
Da könntest Du Dir Code abkupfern.

von Manu E. (Firma: workii) (moraira)


Lesenswert?

oben ist ein Bild der Aufgabe in meinem post  !


ich verzeifel hier einfach nur ............

falls irgendjemand weiß wiem an die aufgabe lösen kann bitte melden

Wie  ist EGAL ! ^.^

 >> muss kein pic33 sein.

so eine blöde aufgabe .... zum verzweifeln


lg

von Heribert (Gast)


Lesenswert?

Google mal nach "dspic33f adc example",
da kommen ein paar Seiten mit Beschreibungen und Beispielen
auf nicht-Microchip Webseiten.
Vielleicht hilft dir eine davon weiter?

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.