- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: PWM --> Pic

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.01.2008
    Beiträge
    155
    Anzeige

    Praxistest und DIY Projekte
    ja klar ist verständlich, aber so wie ich das oben geschrieben habe, müsste es doch gehen oder ?

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Ich glaub schon, du kannst folgendes machen um es zu testen:
    MPLAB IDE und der Simulator haben ein Oszilloskop in Software, das auch die PWM Outputs richtig darstellen kann. Du stellst als Debugger MPLAB SIM ein, dann gehst du auf View und Simulator Logic Analyser. Unter Channels wählst du dann CCP1 und CCP2 aus. Dann kannst du das Programm laufen lassen und dir ansehen.

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.01.2008
    Beiträge
    155
    ja habe es gefunden, aberleider ist dort immer dasselbe signal--..

    Werde noch etwas herum experimentieren..
    sage bescheid, wenn sich was tut ^^

    also ich kenne das vom Timer 0 so, dass der bei der initialisierung noch im Oprionreg eingestellt werden muss.
    Muss man dies bei der PWM für den timer auch machen

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Ich hab nochmal deinen Code angeschaut, diesmal genauer:

    Das kann nicht gehen, du hast eine Endlosschleife von Ausgabe bis goto Ausgabe, dh das CCP Modul wird jedes mal neu gestartet. Das ist nicht weiter schlimm, aber auch nicht hübsch.
    Was schlimm ist, ist, dass du ihm überhaupt keine Zeit lässt, das PWM-Signal auch zu senden, du aktivierst es und schaltest es 3 Befehle später wieder ab, da kann ja nichts zu erkennen sein!
    Bau eine Pausenschleife ein, oder teste erstmal nur mit einem eingeschalteten Signal. Dann sollte auch der Logic Analyser was anzeigen.

    EDIT:
    GANZGANZ WICHTIG! Das kann nicht klappen, wenn Timer2 nicht läuft. Du benutzt den Befehl MOVLW D'1' MOVWF T2CON,
    Dabei setzt du nur Bit0, für den Prescaler, aber Bit2 bleibt auf null, damit läuft der Timer nicht! Also wird er auch nie Zählen und den PWM Wert erreichen, woraufhin das ganze den Pegel wechselt. Schreibe entweder eine D'5' in T2CON oder mache anschließend den Befehl BSF T2CON,2. Mit letztem bist du immer auf der sicheren Seite, da dieser Befehl nur das entsprechende Bit setzt, egal was in dem Register steht.

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.01.2008
    Beiträge
    155
    danke danke
    habe jetzt einen funktionstüchtigen code.
    Dieser funktioniert auch per Simulation =)

    falls du ihn brauchst oder fragen dazu hast=)
    beantworte ich sie dir gerne

    Code:
    initialisierung
    ; Vorteiler 
        BsF    T2CON,T2CKPS1  ; Vorteiler 16:1
        bcf		T2CON,T2CKPS0
    	BSF    T2CON,TMR2ON   ; Timer2 ein
    
    ; Frequenz 
        BSF    STATUS,RP0     ; Bank1
        MOVLW  D'123'
        MOVWF  PR2            ; 2,5 kHz
        BCF    STATUS,RP0     ; Bank1
    
    ; Tastverhältnis auf 50% einstellen
        MOVLW  D'62'
        MOVWF  CCPR1L         ; 50% von 124
    
    ; RC2/CCP1 auf Ausgang stellen
        BSF    STATUS,RP0     ; Bank1
        BCF    TRISC, 2       ; RC2: output=0
        BCF    STATUS,RP0     ; Bank 0
    
    ; PWM MODE mit CCP1 initialisieren
        CLRF   CCP1CON        ; CCP1-Modus aus
        BSF    CCP1CON,CCP1M3 ; CCP1-Modus PWM-Mode
        BSF    CCP1CON,CCP1M2
    
    loop
        GOTO    loop
    
        end

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Super! Schön, dass es läuft.
    Das hast du auch gut und deutlich kommentiert.

    Nochmal zu BANKSEL:
    Das ist ein Macro, was selbstständig erkennt, welches Register in welcher Bank du ansprechen willst. D.h. du brauchst dich nicht mit BSF STATUS,RP0 zu bemühen, da Banksel automatisch die Bits richtig setzt. Das ist ganz nett, wenn man mit vielen SFRs hantiert, hat aber immer 2 Befehle, statt möglicherweise 1.

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.01.2008
    Beiträge
    155
    ja danke schon mal für deine hilfe =)

    bei meiner programmierung kommt es nicht so sehr auf die zeit an. Deswegen habe ich es lieber so gemacht.
    Funktioniert auch so=)

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Nene, eigentlich ist deine Lösung sogar schneller, als die mit Banksel, funktionieren tut beides, ausserdem weiß man bei deiner Lösung immer wo man ist, sodass man vielleicht mehrere Tätigkeiten in einer Bank durchführen kann. Dennoch halte ich das Banksel Macro für sinnvoll und praktisch, deswegen hab ichs ja auch benutzt. Wollte das nurnoch mal erläutern.
    Was wird das denn genau, wofür du das PWM brauchst? Ich hab mit meinem Beispiel Code ne Samsung-Fernbedienung imitiert.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

LiFePO4 Speicher Test