Hallo, also ich versuche gerade mit einer schleife eine led hell und dunkel zu faden. das mit dem pwm hab ich auch soweit verstanden und implementieren koennen, nur kann ich das verhaeltnis (duty cycle) im betrieb (mit meiner schleife) nicht aendern. wenn ich den wert per hand aendere und den pic neu brenne aendert die led die helligkeit, so wie es sein sollte. fuer das verhaeltnis ist ja CCPR1L zustaendig, welches, soweit ich das gelesen habe, jederzeit veraenderbar sein sollte. meinen code hab ich mit drangehangen, koennt ihr da bitte mal durchgucken ob ich einen grundlegenden fehler mache? besten dank im vorraus. mfg Martin
Bist Du sicher, dass die LED überhaupt leuchtet? Der Anschluss RC2 ist als Eingang konfiguriert. Hier eine etwas veränderte Version Deines Programms. Dieses funktioniert! MOVLW B'00000100' MOVWF T2CON ; prescaler 1:1, Timer2 enabled ; Frequenzy 19.53 kHz BSF STATUS,RP0 ; Bank1 MOVLW D'255' MOVWF PR2 ; 3,9kHz BCF STATUS,RP0 ; Bank1 ; Verhältnis auf % einstellen MOVLW D'64' MOVWF CCPR1L ; 25% von 255 ; RC2/CCP1 auf Ausgang stellen BSF STATUS,RP0 ; Bank1 MOVLW B'00000000' ; PORTC output MOVWF TRISC BCF STATUS,RP0 ; Bank 0 ; PWM MODE mit CCP1 initialisieren MOVLW B'10001100' ; dual output, half bridge mode MOVWF CCP1CON ; P1A, P1C actice high, P1B, P1D active high START ;Beginn Hauptprogramm INCF R3,F MOVF R3,W MOVWF CCPR1L CALL DELAY_10ms GOTO START END
Hallo, danke fuer deine antwort! ja ich bin sicher, dass die led leuchtet. die haengt naemlich an RC5 und eine an RC4. denn das sind beim pic16f690 die pwm ausgaenge. ich hab mal deine schleife versucht, also den zahlenwert in einem temporaeren register zu incrementieren und dann in CCPR1L zu kopieren, aber das funzt auch nicht. die leds an portc 4 und 5 sind auch unterschiedlcih hell, weil die ausgaenge ja invertiert zueinander sind und somit die pulsweite unterschiedlich ist. nun frag ich mich, warum das nich klappt, einfach die pulsweite mit CCPR1L zu aendern? muss man evtl das pwm modul danach neustarten oder die ausgaenge oder so? mfg martin
Hallo, mein oben angegebenes Programm habe ich auf einem 16F876 mit einem Standard CCP-Modul laufen. Vielleich solltest Du das ECCP-Modul des 16F690 ersteinmal auf Standardbetrieb umschalten und es mit einer LED an P1A (RC5) versuchen. Dazu ins Register CCP1CON den Wert B'00001100' laden. MfG
das war ja ne schwere geburt. hab jetzt den ganzen tag rumgebastelt und es laeuft nun endlich so, wie ich es moechte. dankeschoen fuer deine hilfe, es lag wohl zum einen an der initialisierung (die hat sich im simulator immer aufgehangen bzw wiederholt. habe das nun direkt ohne subroutine aufgerufen) und zum anderen an dem retlw, so dass die schleifen nicht durchlaufen wurden. (kA warum das so ist) wie gesagt es haut jetzt hin =) ...puh mfg
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.