- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Problem mit PWM Auswertung am PIC12F509 in C

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    13.11.2007
    Beiträge
    88

    Problem mit PWM Auswertung am PIC12F509 in C

    Moin moin,
    ich habe oben genanntes Problem, habe auch ausgibig gesucht. Meiner Meinung nach müsste das Programm so funktionieren, tut es aber nicht. Ich habe an den Ausgängen 2 Motoren dran die sich erstmal nur abhängig von der PWM drehen sollen. Ausgewertet wird ein normaler Modellbau empfänger.

    Wenn ich es Allerdings einschalte dreht ein rad in eine richtung und die schlatung geagiert nicht. Tippe auf das Timing und Setup des 8 Bit Timers.

    Könnte sich das Programmvielleicht mal jemand ansehen? Ich komme so nicht weiter.


    Code:
    //Testprog für den PIC12F508 / 12F509
    
    
    
    
    
    
    #include <C:\Programme\bknd\CC5X\12F509.h>    // Prozessor-Typ definieren
    
    #pragma config |= 0b.0000.0000.0010
    
    #include<delay4.c>
    
    
    void main(void)        // Start des Hauptprogramms
    {
    bit ywert @ GPIO.2;
    bit xwert @ GPIO.3;
    
    int xpuls;
    
    TRISGPIO = 0b.0000.1100;
    
    
    OPTION = 2;
    
    
    
    while(1)
    {
    while(xwert==0)
    {
    TMR0 = 0;
    }
    while(xwert)
    {
    xpuls = TMR0;
    }
    
    if(xpuls >240)
    {
    GPIO = 0b.000.0001;//rechts zurück
    }
    if(xpuls <160)
    {
    GPIO = 0b.001.0000;//links zurück
    }
    
    
    }
    
    /*
    
    GPIO = 0b.000.0010;//rechts zurück
    
    Delay1ms(1000);
    
    GPIO = 0b.001.0000;//links zurück
    
    Delay1ms(1000);
    */
    
    }
     
    
    
    Mt freundlichen Grüßen
    Marius

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2005
    Beiträge
    20
    1. Ich glaub hier kapiert keiner, was du überhaupt machen willst! Drücke dich mal klar verständlich aus.

    Erst schreibst du PWM Auswertung, dann PWM Ausgabe und dann GPS Empfänger Auswertung.

    2. Warum nimmst du so einen alten und schlechten uC? Nimm doch einen mit Hardware PWM. Z.B 12F683 oder 12F1822.

    3. Erklär doch mal was du denkst, was dein bisheriges Programm macht. Da steigt auch keiner durch.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    13.11.2007
    Beiträge
    88
    Hallo,
    zu 1: Ich habe nichts von PWM Ausgabe geschrieben, erstrecht nit von GPS Empfänger, ich habe gechrieben das sich die Räder abhängig vom PWM Signal (das ausgewertet werden soll) drehen sollen. Dein "GPS Empfänger" heißt bei mir Modellbau Empfänger und dient im RC Modellbau als Empfänger der Signale, die von der Fernsteuerung gesendet werden.
    Zu 2: Ich nehme diesen PIC, weil dieser Pic bei mir im Keller lag. Bin erst vor ein paar Monaten gewächselt von einem wirklich"alten" Controller, nun soll ich wohl schonwieder wechseln?!

    3. Ok, also: Mein Programm soll eine PWM Signal, dass von einem Modellbau empfänger kommt messen, also die High-Länge, und soll abhängig von diesem Wert einen Motor entweder vorwärts oder rückwärts drehen, oder stehen lassen.Mehr nicht. das wird(soll) in einer endlosschleife geschehen.Meiner Meinung nach sollte mein progrmm dies tun. Der Pic läuft mit dem Internen 4 MHZ takt(angabe aus berechnungsgründen). Hoffe mein Anliegen ist nun verständlicher geworden.

    Mit freundlichen Grüßen
    Marius

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2005
    Beiträge
    20
    hi,
    meinte ich doch RC Empfänger, nicht GPS Empfänger...

    Ja jetzt ist es klarer. Ob du dich mit dem alten uC "abplagst" bleibt dir selbst überlassen. Neuere haben dafür ein Capture Module. Aber egal.

    4 MHz internen Takt -> 1us Zähltakt -> 1:8 Presacaler ->6us für Timer0

    d.h. der Timer würde nach 2,048ms überlaufen. Wie ich gelesen habe sind die Pulse beim RC Empfänger zwischen 1 und 2ms lang. Müsste also passen.

    Aber der Ruhezustand von dem empfangenen Signal ist doch High, oder? Müsstes des also drehen.

    Der Empfänger gibt ja eine Signalfolge aus. Was du bis jetzt machst ist zu messen, wie lange ein Signal einen bestimmten Zustand hat.
    Hast du dieses Signal mal gemessen? Weißt du in dem wievielten Impuls die Information steckt, die du benötigst?

    Schau mal auf:
    http://www.sprut.de/electronic/model...mein/index.htm

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    13.11.2007
    Beiträge
    88
    Hi,
    jau das Prinzip kenne ich, also wie das Signal eines Empfängers aussieht. Welches Signal ich von den beiden Messe, also das High oder Low ist im Prinzip egal, wenn ich jedoch das High Signal von 1ms bis 2ms messe, verbringe ich wesentlich weniger Zeit mit der Messung. Theoretisch müsste mein Code doch funktionieren. Auch gibt der Empfänger im Prinzip keine Signalfolge aus, sondern nur eine gewisse Zeit ein Highsignal womit sich der Wert auswerten lässt.

    Bin allerdings leider immer noch nicht weiter.

    Gruß marius

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2005
    Beiträge
    20
    Ja, der Empfänger gibt doch immer ein Impulspaket aus. Du misst jeden Impuls davon und schaltest deine Ausgänge. Ich denk mal die Info die du haben willst, steckt aber nur in einem der Impulse, oder?

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    13.11.2007
    Beiträge
    88
    Immoment zu Testzwecken reicht mein ein Impuls, wenn ich diesen gemssen bekomme, bekomme ich auch die anderen gemessen. Aber mit meinem Code bekomme ich ja nichtmal diesen einen gemessen. Dadran haperts ja, oder ich messen ihn richtig, kann ihn nur nicht ausgeben.
    Gibt es denn dafür keinen Beispielcode oder jemanden, der das mit PICs und in C schonmal gemacht hat, ohne Interrupt?

    Gruß marius

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2005
    Beiträge
    20
    Verstehst du nicht das Problem? Ja du misst den ersten Impuls, aber auch alle nachfolgenden, da die ja am gleichen Eingang ankommen! Woher soll dein Programm wissen ob das der erste oder zweite Impuls ist?

    Läuft denn überhaupt schon irgendwas auf dem uC? Blinkende LED oder so?
    Mit was programmierst du überhaupt? Kannst du debuggen?

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    13.11.2007
    Beiträge
    88
    Ehm ja ich kann alles, ist ja nicht mein erstes Projekt. Nein die Impulse kommen nicht alle am gleichen Pin an. Bin jetzt auch einen Schritt weiter, habe eben meinen Oszi angeworfen und habe festgestellt das mein Empfänger im Ar*** ist-.- Naja, andere Einheit verwendet, also andere Funke und Empfänger, jetzt reagiert er zumindest auf das Signal.

    Gruß Marius

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    04.03.2005
    Beiträge
    20
    Wenn du ein Oszi hast, warum misst du erst jetzt...

    Natürlich kommen die Impulse am gleichen Pin. Oder hat dein Empfänger 8 Ausgänge für die verschiedenen Kanäle?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress