- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Dringend Hilfe für dsPIC30F6014 nötig!

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2006
    Beiträge
    9

    Dringend Hilfe für dsPIC30F6014 nötig!

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Habe das DemoBoard 1.1 von Microchip und einen dsPIC30F6014 für mein MaturaProjekt bekommen und möchte jetzt ein LED leuchten lassen! Jedoch weis ich nicht wie ich das mache!
    ich bin über USB mit einem MPLAB ICD2 mit dem Bord verbunden.

    Ich habe versucht die Ports zu definieren und anschließend zu setzen:


    #define LED1 LATDbits.LATD1
    #define trisLED1 TRISDbits.TRISD1

    im Hauptprogramm (MPLAB)
    LED1 = 1;
    trisLED1 = 0;

    würde mir sehr helfen wenn mir jemand weiter helfen kann!
    Später sollte ich dann mit dem 1. Button (Switch) ein LED betätigen und dem 2. das 2. LED...

    lg dominik

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.08.2004
    Ort
    Unterschleissheim
    Beiträge
    333
    Hallo Dominik

    und wo ist das Problem ? Tut sich nichts ?
    Wie sieht das ganze Programm aus ?

    Gerhard

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    34
    Beiträge
    1.192
    Hi

    Kenn mich jetzt nich so gut mit dsPics aus, hab aber ne vermutung, wo dein fehler liegen könnte:

    Du schaltest die LED ein(LED1 = 1, bevor der Pin erst als Ausgang geschaltet ist (trisLED1 = 0. Nach einem Reset schaltet der (ds)PIC nämlich alle seine I/Os als Eingänge. Eingänge kann der (ds)PIC nicht auf high oder low-pegel ziehen, die LED in dem Moment (Eingang) nicht ein/ausschalten.

    vertausche doch einfach mal die zeilen

    LED1 = 1;
    trisLED1 = 0;

    zu

    trisLED1 = 0;
    LED1 = 1;

    -> müsste funktionieren

    (
    evtl. noch ein nop dazwischen weil die register nicht so schnell einlesen und reinschreiben können [äh: es handelt sich aber um PORTD / LatchD und TRISD - unterschiedliche Register - also vergiss das mit dem nop]
    )

    Gruss

    BMS

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2006
    Beiträge
    9

    jop

    Danke, jetzt gehts!

    Habe über das wochenende viel herumprobiert und bin auf das selbe ergebnis gestoßen!
    Einfach umtauschen

    aber jetzt hab ich ein neues Problem:

    weis nicht wie ich abfrage ob ich den Taster drücke oder nicht!
    weis den Ausgang als Imput zu, komm aber dann nicht weiter!!

    würde mich auf eine hilfreiche Antwort freuen!!

    lg dominik

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.08.2004
    Ort
    Unterschleissheim
    Beiträge
    333
    Ein Widerstand und dein taster bilden einen Spannungsteiler. Den Widerstand legst du am anderen Ende auf 5 Volt, den taster/Schalter auf Masse. Wird der Taster nicht gedrückt, liegt am Eingang des uC ein Hgih, wird der Taster gedrückt ein low. Um das Tastenprellen in den Griff zu bekommen, kann man zum Taster parallel einen 100nF-Kondensator einbauen und in der Software eine Entprell-Routine. Z.B. fragt man solange den Eingang ab, bis der Anwender die Taste wieder losgelassen hat. Dann eine Verzögerungsroutine dazwischen, etwa 10ms, dann wieder eine Schleife, bis Sicher ist, dass der Anwender die Taste losgelassen hat. Dann wird das Programm fortgesetzt.

    Gerhard

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2006
    Beiträge
    9
    Die Taster sind ja schon am Bord!
    Ich benötige nur einen Befehl wie TrisD oder so um den Schalter zu aktivieren!
    Außerdem weis ich nicht ob ich ihn einfach abfragen kann ob er 1 ist oder 0!?

    hmm...

    lg dominik

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    23.06.2004
    Ort
    Kuala Lumpur
    Alter
    63
    Beiträge
    240

    Re: jop

    Zitat Zitat von Naty
    ..., komm aber dann nicht weiter!!

    würde mich auf eine hilfreiche Antwort freuen!!

    lg dominik
    Da die Demo- / Evo-Bord's zum Teil "Komische" Befehle dazu verwenden kann ich nur Sagen - RTFM

    Du hast doch auch die Docu dazu

    Gruss
    Artur

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2006
    Beiträge
    9
    Nein habe leider nur das Board und die Software...
    Die Bsp Programme sind auf Asembler und nutzen mir nicht viel!

    Ich habe jetzt den Switch als Eingang dekleriert und weis jetzt nicht wie ich abfragen kann ob er gedrückt ist oder nicht (Taster)!
    Ich glaube mit einer if schleife werde ich nicht weit kommen oder??

    lg dominik

    PS: Brauche Hilfe!!

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    03.10.2006
    Beiträge
    9
    Habe nun folgenden Quelltext:

    #define LED3 LATDbits.LATD3
    #define trisLED3 TRISDbits.TRISD3

    #define SW1 LATAbits.LATA12
    #define trisSW1 TRISAbits.TRISA12


    trisLED3 = 0; //Output
    LED3 = 1; //LED off
    trisSW1 = 1; //Input


    int n = 0;

    while (n != 1)
    {
    if ( SW1 != 0 )
    { LED2 = 0;
    n = 1;
    }
    }

    und ich weis jetzt nicht warum sich nix tut wenn ich den taster betätige!!

    kann mir wer helfen???

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.08.2004
    Ort
    Unterschleissheim
    Beiträge
    333
    Hallo

    ist der Code schon alles ?

    void main( void )
    {
    InitPorts();

    LED2 = 1;
    while( 1 )
    {
    if( SW1 == 0 ) //Taster setzt EIngang auf 0
    {
    LED2 = 0;
    }
    }

    Also, anfangs brennt die LED. wenn du jetzt den Taster drückst, sollte sie ausgehen. Die while-Schleife darfst du nicht verlassen.

    Gerhard

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress