- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: ADC=>PWM PIC16F876A mit Sprut-Code, Problem (gelöst!)

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2006
    Beiträge
    1.178

    ADC=>PWM PIC16F876A mit Sprut-Code, Problem (gelöst!)

    Anzeige

    E-Bike
    Hallo Leute!
    Hoffe alle sind gut durch den Sturm gekommen!

    Problem:

    Also ich wollte das ADC-PWM Beispiel von Sprut nachbauen:
    http://www.sprut.de/electronic/pic/programm/adcpwm.htm

    Und dann erweitern, dass ich 2x adc benutze um 2 pwm signale auszugeben..
    Ich krieg das ding aber nichtmal mit 1:1 nachmachen zum laufen *verzweifel*

    Also folgendes:
    Diesen Schaltplan hab ich exakt so gebaut:
    http://www.directupload.net/file/d/947/8RLMuGAz_jpg.htm
    (da fällt mir ein ich mach mal noch nen kondensator an vss-vdd)

    Dann hab ich gedacht ich stopf die software mal ohne modifikation rein..
    geht net.. findet beim kompilieren die datai p16.. net ..

    also hab ich die *.inc vom 16f876A direkt in die datei kopiert, sollte ja gehen.. nun kompiliert ers auch ohne fehlermeldung, und schreibts auch fehlerfrei in den ic, ohne meckern..
    aber laufen tut nix..

    WO liegt mein denkfehler?
    muß ich an den definitionen der software was ändern? weil das original für einen pic16f876 war und ich jezt einen pic16f876A benutze ?
    muß ich das andere *.inc benutzen?

    irgendwie blick ichs net..
    spannung der schaltung sind exakte 5,0V (78L05)
    gnd liegt auch da wos soll
    RA0 geht je nach potistellung von 0-5Volt, also auch ok

    aber weder mitm digi-multimeter noch mit dem oszilloskop bekomme ich irgendwas raus an RC2

    edit: hier noch der code:
    Code:
     list p=16f876
    
    ERRORLEVEL      -302    	;SUPPRESS BANK SELECTION MESSAGES
    ;==========================================================================
    ;
    ;       Register Definitions
    ;
    ;==========================================================================
    
    W                            EQU     H'0000'
    F                            EQU     H'0001'
    
    ;----- Register Files------------------------------------------------------
    
    INDF                         EQU     H'0000'
    TMR0                         EQU     H'0001'
    PCL                          EQU     H'0002'
    STATUS                       EQU     H'0003'
    FSR                          EQU     H'0004'
    PORTA                        EQU     H'0005'
    PORTB                        EQU     H'0006'
    PORTC                        EQU     H'0007'
    
    PCLATH                       EQU     H'000A'
    INTCON                       EQU     H'000B'
    PIR1                         EQU     H'000C'
    PIR2                         EQU     H'000D'
    TMR1L                        EQU     H'000E'
    TMR1H                        EQU     H'000F'
    T1CON                        EQU     H'0010'
    TMR2                         EQU     H'0011'
    T2CON                        EQU     H'0012'
    SSPBUF                       EQU     H'0013'
    SSPCON                       EQU     H'0014'
    CCPR1L                       EQU     H'0015'
    CCPR1H                       EQU     H'0016'
    CCP1CON                      EQU     H'0017'
    RCSTA                        EQU     H'0018'
    TXREG                        EQU     H'0019'
    RCREG                        EQU     H'001A'
    CCPR2L                       EQU     H'001B'
    CCPR2H                       EQU     H'001C'
    CCP2CON                      EQU     H'001D'
    ADRESH                       EQU     H'001E'
    ADCON0                       EQU     H'001F'
    
    OPTION_REG                   EQU     H'0081'
    TRISA                        EQU     H'0085'
    TRISB                        EQU     H'0086'
    TRISC                        EQU     H'0087'
    PIE1                         EQU     H'008C'
    PIE2                         EQU     H'008D'
    PCON                         EQU     H'008E'
    SSPCON2                      EQU     H'0091'
    PR2                          EQU     H'0092'
    SSPADD                       EQU     H'0093'
    SSPSTAT                      EQU     H'0094'
    TXSTA                        EQU     H'0098'
    SPBRG                        EQU     H'0099'
    ADRESL                       EQU     H'009E'
    ADCON1                       EQU     H'009F'
    
    EEDATA                       EQU     H'010C'
    EEADR                        EQU     H'010D'
    EEDATH                       EQU     H'010E'
    EEADRH                       EQU     H'010F'
    
    EECON1                       EQU     H'018C'
    EECON2                       EQU     H'018D'
    
    ;----- STATUS Bits --------------------------------------------------------
    
    IRP                          EQU     H'0007'
    RP1                          EQU     H'0006'
    RP0                          EQU     H'0005'
    NOT_TO                       EQU     H'0004'
    NOT_PD                       EQU     H'0003'
    Z                            EQU     H'0002'
    DC                           EQU     H'0001'
    C                            EQU     H'0000'
    
    ;----- INTCON Bits --------------------------------------------------------
    
    GIE                          EQU     H'0007'
    PEIE                         EQU     H'0006'
    T0IE                         EQU     H'0005'
    INTE                         EQU     H'0004'
    RBIE                         EQU     H'0003'
    T0IF                         EQU     H'0002'
    INTF                         EQU     H'0001'
    RBIF                         EQU     H'0000'
    
    ;----- PIR1 Bits ----------------------------------------------------------
    
    ADIF                         EQU     H'0006'
    RCIF                         EQU     H'0005'
    TXIF                         EQU     H'0004'
    SSPIF                        EQU     H'0003'
    CCP1IF                       EQU     H'0002'
    TMR2IF                       EQU     H'0001'
    TMR1IF                       EQU     H'0000'
    
    ;----- PIR2 Bits ----------------------------------------------------------
    
    EEIF                         EQU     H'0004'
    BCLIF                        EQU     H'0003'
    CCP2IF                       EQU     H'0000'
    
    ;----- T1CON Bits ---------------------------------------------------------
    
    T1CKPS1                      EQU     H'0005'
    T1CKPS0                      EQU     H'0004'
    T1OSCEN                      EQU     H'0003'
    NOT_T1SYNC                   EQU     H'0002'
    T1INSYNC                     EQU     H'0002'    ; Backward compatibility only
    T1SYNC                       EQU     H'0002'
    TMR1CS                       EQU     H'0001'
    TMR1ON                       EQU     H'0000'
    
    ;----- T2CON Bits ---------------------------------------------------------
    
    TOUTPS3                      EQU     H'0006'
    TOUTPS2                      EQU     H'0005'
    TOUTPS1                      EQU     H'0004'
    TOUTPS0                      EQU     H'0003'
    TMR2ON                       EQU     H'0002'
    T2CKPS1                      EQU     H'0001'
    T2CKPS0                      EQU     H'0000'
    
    ;----- SSPCON Bits --------------------------------------------------------
    
    WCOL                         EQU     H'0007'
    SSPOV                        EQU     H'0006'
    SSPEN                        EQU     H'0005'
    CKP                          EQU     H'0004'
    SSPM3                        EQU     H'0003'
    SSPM2                        EQU     H'0002'
    SSPM1                        EQU     H'0001'
    SSPM0                        EQU     H'0000'
    
    ;----- CCP1CON Bits -------------------------------------------------------
    
    CCP1X                        EQU     H'0005'
    CCP1Y                        EQU     H'0004'
    CCP1M3                       EQU     H'0003'
    CCP1M2                       EQU     H'0002'
    CCP1M1                       EQU     H'0001'
    CCP1M0                       EQU     H'0000'
    
    ;----- RCSTA Bits ---------------------------------------------------------
    
    SPEN                         EQU     H'0007'
    RX9                          EQU     H'0006'
    RC9                          EQU     H'0006'    ; Backward compatibility only
    NOT_RC8                      EQU     H'0006'    ; Backward compatibility only
    RC8_9                        EQU     H'0006'    ; Backward compatibility only
    SREN                         EQU     H'0005'
    CREN                         EQU     H'0004'
    ADDEN                        EQU     H'0003'
    FERR                         EQU     H'0002'
    OERR                         EQU     H'0001'
    RX9D                         EQU     H'0000'
    RCD8                         EQU     H'0000'    ; Backward compatibility only
    
    ;----- CCP2CON Bits -------------------------------------------------------
    
    CCP2X                        EQU     H'0005'
    CCP2Y                        EQU     H'0004'
    CCP2M3                       EQU     H'0003'
    CCP2M2                       EQU     H'0002'
    CCP2M1                       EQU     H'0001'
    CCP2M0                       EQU     H'0000'
    
    ;----- ADCON0 Bits --------------------------------------------------------
    
    ADCS1                        EQU     H'0007'
    ADCS0                        EQU     H'0006'
    CHS2                         EQU     H'0005'
    CHS1                         EQU     H'0004'
    CHS0                         EQU     H'0003'
    GO                           EQU     H'0002'
    NOT_DONE                     EQU     H'0002'
    GO_DONE                      EQU     H'0002'
    ADON                         EQU     H'0000'
    
    ;----- OPTION_REG Bits ----------------------------------------------------
    
    NOT_RBPU                     EQU     H'0007'
    INTEDG                       EQU     H'0006'
    T0CS                         EQU     H'0005'
    T0SE                         EQU     H'0004'
    PSA                          EQU     H'0003'
    PS2                          EQU     H'0002'
    PS1                          EQU     H'0001'
    PS0                          EQU     H'0000'
    
    ;----- PIE1 Bits ----------------------------------------------------------
    
    ADIE                         EQU     H'0006'
    RCIE                         EQU     H'0005'
    TXIE                         EQU     H'0004'
    SSPIE                        EQU     H'0003'
    CCP1IE                       EQU     H'0002'
    TMR2IE                       EQU     H'0001'
    TMR1IE                       EQU     H'0000'
    
    ;----- PIE2 Bits ----------------------------------------------------------
    
    EEIE                         EQU     H'0004'
    BCLIE                        EQU     H'0003'
    CCP2IE                       EQU     H'0000'
    
    ;----- PCON Bits ----------------------------------------------------------
    
    NOT_POR                      EQU     H'0001'
    NOT_BO                       EQU     H'0000'
    NOT_BOR                      EQU     H'0000'
    
    ;----- SSPCON2 Bits --------------------------------------------------------
    
    GCEN                         EQU     H'0007'
    ACKSTAT                      EQU     H'0006'
    ACKDT                        EQU     H'0005'
    ACKEN                        EQU     H'0004'
    RCEN                         EQU     H'0003'
    PEN                          EQU     H'0002'
    RSEN                         EQU     H'0001'   
    SEN                          EQU     H'0000'   
    
    ;----- SSPSTAT Bits -------------------------------------------------------
    
    SMP                          EQU     H'0007'
    CKE                          EQU     H'0006'
    D                            EQU     H'0005'
    I2C_DATA                     EQU     H'0005'
    NOT_A                        EQU     H'0005'
    NOT_ADDRESS                  EQU     H'0005'
    D_A                          EQU     H'0005'
    DATA_ADDRESS                 EQU     H'0005'
    P                            EQU     H'0004'
    I2C_STOP                     EQU     H'0004'
    S                            EQU     H'0003'
    I2C_START                    EQU     H'0003'
    R                            EQU     H'0002'
    I2C_READ                     EQU     H'0002'
    NOT_W                        EQU     H'0002'
    NOT_WRITE                    EQU     H'0002'
    R_W                          EQU     H'0002'
    READ_WRITE                   EQU     H'0002'
    UA                           EQU     H'0001'
    BF                           EQU     H'0000'
    
    ;----- TXSTA Bits ---------------------------------------------------------
    
    CSRC                         EQU     H'0007'
    TX9                          EQU     H'0006'
    NOT_TX8                      EQU     H'0006'    ; Backward compatibility only
    TX8_9                        EQU     H'0006'    ; Backward compatibility only
    TXEN                         EQU     H'0005'
    SYNC                         EQU     H'0004'
    BRGH                         EQU     H'0002'
    TRMT                         EQU     H'0001'
    TX9D                         EQU     H'0000'
    TXD8                         EQU     H'0000'    ; Backward compatibility only
    
    ;----- ADCON1 Bits --------------------------------------------------------
    
    ADFM                         EQU     H'0007'
    PCFG3                        EQU     H'0003'
    PCFG2                        EQU     H'0002'
    PCFG1                        EQU     H'0001'
    PCFG0                        EQU     H'0000'
    
    ;----- EECON1 Bits --------------------------------------------------------
    
    EEPGD                        EQU     H'0007'
    WRERR                        EQU     H'0003'
    WREN                         EQU     H'0002'
    WR                           EQU     H'0001'
    RD                           EQU     H'0000'
    
    ;==========================================================================
    ;
    ;       RAM Definition
    ;
    ;==========================================================================
    
            __MAXRAM H'1FF'
    	  __BADRAM H'08'-H'09'
            __BADRAM H'88'-H'89', H'8F'-H'90', H'95'-H'97', H'9A'-H'9D'
            __BADRAM H'105', H'107'-H'109'
            __BADRAM H'185', H'187'-H'189', H'18E'-H'18F'
    
    ;==========================================================================
    ;
    ;       Configuration Bits
    ;
    ;==========================================================================
    
    _CP_ALL                      EQU     H'0FCF'
    _CP_HALF                     EQU     H'1FDF'
    _CP_UPPER_256                EQU     H'2FEF'
    _CP_OFF                      EQU     H'3FFF'
    _DEBUG_ON                    EQU     H'37FF'
    _DEBUG_OFF                   EQU     H'3FFF'
    _WRT_ENABLE_ON               EQU     H'3FFF'
    _WRT_ENABLE_OFF              EQU     H'3DFF'
    _CPD_ON                      EQU     H'3EFF'
    _CPD_OFF                     EQU     H'3FFF'
    _LVP_ON                      EQU     H'3FFF'
    _LVP_OFF                     EQU     H'3F7F'
    _BODEN_ON                    EQU     H'3FFF'
    _BODEN_OFF                   EQU     H'3FBF'
    _PWRTE_OFF                   EQU     H'3FFF'
    _PWRTE_ON                    EQU     H'3FF7'
    _WDT_ON                      EQU     H'3FFF'
    _WDT_OFF                     EQU     H'3FFB'
    _LP_OSC                      EQU     H'3FFC'
    _XT_OSC                      EQU     H'3FFD'
    _HS_OSC                      EQU     H'3FFE'
    _RC_OSC                      EQU     H'3FFF'
    
    ;==========================================================================
    ;
    ;       Configuration 
    ;
    ;==========================================================================
    
    
    	__CONFIG        _CP_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_ENABLE_ON & _PWRTE_ON & _WDT_OFF & _BODEN_OFF & _XT_OSC
    
    
    
    ;==========================================================================
    ;
    ;       Variable Definition
    ;
    ;==========================================================================
    
    wait	EQU	0x20
    
    ; Anfangsinitialisierung
    
    init
    ; PWM vorbereiten
    ; Vorteiler 16:1 und Timer2 einschalten
    	BSF	T2CON,T2CKPS1	; Vorteiler 16:1
    	BSF	T2CON,TMR2ON	; Timer2 ein
    
    ; Frequenz auf 1,22 kHz einstellen
    	BSF	STATUS,RP0	; Bank1
    	MOVLW	D'255'		;
    	MOVWF	PR2		; 1.22 kHz
    	BCF	STATUS,RP0	; Bank1
    
    ; Tastverhältnis auf 50% einstellen
    	MOVLW	D'127'		;
    	MOVWF	CCPR1L		; 50% 
    
    ; 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	;
    
    ; ADC vorbereiten
    ; PortB vorbereiten
    	bsf	STATUS, RP0	; auf Bank 1 umschalten
    	movlw	B'00000000'	; PortB alle output
    	movwf	TRISB
    	bcf	STATUS, RP0	; auf Bank 0 zurückschalten
    	clrf	PORTB		; alle LEDs ausschalten
    
    ; ADC einschalten
    	BSF	ADCON0, 0	; ADON=1
    
    ; ADC-Eingang AN0 auswählen
    	BCF	ADCON0, 5	; ADCHS2=0
    	BCF	ADCON0, 4	; ADCHS1=0
    	BCF	ADCON0, 3	; ADCHS0=0
    
    ; ADC speed für 20 MHz einstellen
    	BSF	ADCON0, 7	; ADCS1=1
    	BCF	ADCON0, 6	; ADCS0=0
    
    ; Daten linksbündig
    	BSF	STATUS,RP0	; Bank1
    	BCF	ADCON1, 7	; ADFM=0
    	BCF	STATUS,RP0	; Bank0
    
    
    ;**********************************************************
    ; Hauptprogrammschleife
    
    Main
    ;Eingangsspannung wandeln
    	BSF	ADCON0, 2	; ADC starten
    loop
    	BTFSC	ADCON0, 2	; ist der ADC fertig?
    	GOTO	loop		; nein, weiter warten
    
    ; Wert nach PortB schreiben
    	movfw	ADRESH		; obere 8 Bit auslesen
    	movwf	PORTB		; obere 8 Bit nach PortB
    
    ; Wert an PWM übergeben
    	MOVWF	CCPR1L		; obere 8 Bit sind PWM
    
    ; Warten, damit der ADC sich erholen kann
    	clrf	wait
    warten
    	DECFSZ	wait, f
    	goto	warten
    
    	goto	Main
    
    	end
    Danke!
    GrußundTschüß \/
    ~Jürgen

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo PsiQ!

    Ich habe mir den Quellcode angeschaut und festgestellt, dass der PIC überhaupt nicht konfiguriert ist, nähmlich die __CONFiG...... Zeile fehlt. In dem Fall geht natürlich nichts.

    Ich habe bisher kein Programm für PIC16F876 geschrieben, aber im Code habe ich den Anfang für PIC16F870 gepostet. Sollte es jedoch für den ´876 nicht passen, kannst Du das evtl. für den ´876A ändern, wenn Du es mit dem was im pic16F876A.inc steht, vergleichst (configuration bits).

    Übrigens, ich habe alle Quelkodes im einem Verzeichniss, dass sich im Verzeichniss MPASM befindet.

    MfG
    Code:
    	LIST      P=16F876A
    	include "P16F876A.inc"
    	__CONFIG	_CP_OFF & _DEBUG_OFF & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2006
    Beiträge
    1.178
    hmm- abba abba
    da ist doch ne config zeile:
    oben dein code, drunter der aus der datei von mir
    Code:
    ;dein code
    	__CONFIG	_CP_OFF & _DEBUG_OFF & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
    
    ;mein code
       __CONFIG        _CP_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_ENABLE_ON & _PWRTE_ON & _WDT_OFF & _BODEN_OFF & _XT_OSC
    Ääähm..

    unterschiede:
    _CPD_OFF finde ich bei mir net
    _HS_OSC
    öm, heißt XT nicht extern osci ? (hau mich wenns falsch ist )
    edit: *hau* => das bestimmt doch den rrequenzgebertyp..
    und der ist beim normalen quarz? -HS?

    ich pack das ding jetzt mal als ersatz rein, und dann vergleich ichs

    danke..


    edit1:
    die inc dateien liegen auch bei mir direkt in nem unterordner.. komischkomisch

    edit2:
    Hier dat config zuegs vom A

    ;================================================= =========================
    ;
    ; Configuration Bits
    ;
    ;================================================= =========================

    _CP_ALL EQU H'1FFF'
    _CP_OFF EQU H'3FFF'
    _DEBUG_OFF EQU H'3FFF'
    _DEBUG_ON EQU H'37FF'
    _WRT_OFF EQU H'3FFF' ; No prog memmory write protection
    _WRT_256 EQU H'3DFF' ; First 256 prog memmory write protected
    _WRT_1FOURTH EQU H'3BFF' ; First quarter prog memmory write protected
    _WRT_HALF EQU H'39FF' ; First half memmory write protected
    _CPD_OFF EQU H'3FFF'
    _CPD_ON EQU H'3EFF'
    _LVP_ON EQU H'3FFF'
    _LVP_OFF EQU H'3F7F'
    _BODEN_ON EQU H'3FFF'
    _BODEN_OFF EQU H'3FBF'
    _PWRTE_OFF EQU H'3FFF'
    _PWRTE_ON EQU H'3FF7'
    _WDT_ON EQU H'3FFF'
    _WDT_OFF EQU H'3FFB'
    _RC_OSC EQU H'3FFF'
    _HS_OSC EQU H'3FFE'
    _XT_OSC EQU H'3FFD'
    _LP_OSC EQU H'3FFC'

    LIST
    GrußundTschüß \/
    ~Jürgen

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2006
    Beiträge
    1.178
    oooh , äääh, aaah

    muß ich das
    _WRT_ENABLE_ON
    durch
    _WRT_OFF EQU H'3FFF' ; No prog memmory write protection
    ersetzen ??

    das _WRT_ENABLE_ON
    steht beim A garnet mit dabei, bzw eben anders
    GrußundTschüß \/
    ~Jürgen

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Bei den PIC16F8XX ist es so, das kein extra Konfiguration Bit für externen Oscillator gibt. Dennen PIC´s ist es egal, woher der Systemtakt kommt, hauptsächlich sie haben auf dem Pin OSCI einen Takt. Es ist am sichersten, wegen Konfigurationbits immer in der xxx.inc Datei zu prüfen, welche Optionen der konkrete PIC hat, da es nicht einheitlich ist.

    MfG

  6. #6
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Sorry! Dann habe ich die Zeile mit __CONFIG..... übersehen. Es mussen nicht alle Konfigurationbits definiert sein. Und das EQU H´XXXX´ habe ich nocht nie gesehen. Normaleweise definiert man die Konfiguration immer selber, wie man das haben will.

    zu edi2: die xxx.inc datei muss aber mit "include" in die Quelldatei eigebunden werden.

    MfG

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2006
    Beiträge
    1.178

    Fusioniert!

    Juchhu! *Freu*

    funktioniert .. lässt sich 0 - 99,6% duty cycle regeln

    lag das nur an dem _WRT_ENABLE_ON
    was beim 876A _WRT_OFF heißen muß..hmm ?
    schön \/

    der funktionierende code wie er im pic steckt:
    (oben das komplette *.inc vom 876A bis config bits)
    Code:
    list p=16f876a
    
    ERRORLEVEL      -302    	;SUPPRESS BANK SELECTION MESSAGES
            
            IFNDEF __16F876A
               MESSG "Processor-header file mismatch.  Verify selected processor."
            ENDIF
    
    ;==========================================================================
    ;
    ;       Register Definitions
    ;
    ;==========================================================================
    
    W                            EQU     H'0000'
    F                            EQU     H'0001'
    
    ;----- Register Files------------------------------------------------------
    
    INDF                         EQU     H'0000'
    TMR0                         EQU     H'0001'
    PCL                          EQU     H'0002'
    STATUS                       EQU     H'0003'
    FSR                          EQU     H'0004'
    PORTA                        EQU     H'0005'
    PORTB                        EQU     H'0006'
    PORTC                        EQU     H'0007'
    PCLATH                       EQU     H'000A'
    INTCON                       EQU     H'000B'
    PIR1                         EQU     H'000C'
    PIR2                         EQU     H'000D'
    TMR1L                        EQU     H'000E'
    TMR1H                        EQU     H'000F'
    T1CON                        EQU     H'0010'
    TMR2                         EQU     H'0011'
    T2CON                        EQU     H'0012'
    SSPBUF                       EQU     H'0013'
    SSPCON                       EQU     H'0014'
    CCPR1L                       EQU     H'0015'
    CCPR1H                       EQU     H'0016'
    CCP1CON                      EQU     H'0017'
    RCSTA                        EQU     H'0018'
    TXREG                        EQU     H'0019'
    RCREG                        EQU     H'001A'
    CCPR2L                       EQU     H'001B'
    CCPR2H                       EQU     H'001C'
    CCP2CON                      EQU     H'001D'
    ADRESH                       EQU     H'001E'
    ADCON0                       EQU     H'001F'
    
    OPTION_REG                   EQU     H'0081'
    TRISA                        EQU     H'0085'
    TRISB                        EQU     H'0086'
    TRISC                        EQU     H'0087'
    PIE1                         EQU     H'008C'
    PIE2                         EQU     H'008D'
    PCON                         EQU     H'008E'
    SSPCON2                      EQU     H'0091'
    PR2                          EQU     H'0092'
    SSPADD                       EQU     H'0093'
    SSPSTAT                      EQU     H'0094'
    TXSTA                        EQU     H'0098'
    SPBRG                        EQU     H'0099'
    CMCON                        EQU     H'009C'
    CVRCON                       EQU     H'009D'
    ADRESL                       EQU     H'009E'
    ADCON1                       EQU     H'009F'
    
    EEDATA                       EQU     H'010C'
    EEADR                        EQU     H'010D'
    EEDATH                       EQU     H'010E'
    EEADRH                       EQU     H'010F'
    
    EECON1                       EQU     H'018C'
    EECON2                       EQU     H'018D'
    
    ;----- STATUS Bits --------------------------------------------------------
    
    IRP                          EQU     H'0007'
    RP1                          EQU     H'0006'
    RP0                          EQU     H'0005'
    NOT_TO                       EQU     H'0004'
    NOT_PD                       EQU     H'0003'
    Z                            EQU     H'0002'
    DC                           EQU     H'0001'
    C                            EQU     H'0000'
    
    ;----- INTCON Bits --------------------------------------------------------
    
    GIE                          EQU     H'0007'
    PEIE                         EQU     H'0006'
    T0IE                         EQU     H'0005'
    INTE                         EQU     H'0004'
    RBIE                         EQU     H'0003'
    T0IF                         EQU     H'0002'
    INTF                         EQU     H'0001'
    RBIF                         EQU     H'0000'
    
    ;----- PIR1 Bits ----------------------------------------------------------
    
    ADIF                         EQU     H'0006'
    RCIF                         EQU     H'0005'
    TXIF                         EQU     H'0004'
    SSPIF                        EQU     H'0003'
    CCP1IF                       EQU     H'0002'
    TMR2IF                       EQU     H'0001'
    TMR1IF                       EQU     H'0000'
    
    ;----- PIR2 Bits ----------------------------------------------------------
    
    CMIF			     EQU     H'0006'
    EEIF                         EQU     H'0004'
    BCLIF                        EQU     H'0003'
    CCP2IF                       EQU     H'0000'
    
    ;----- T1CON Bits ---------------------------------------------------------
    
    T1CKPS1                      EQU     H'0005'
    T1CKPS0                      EQU     H'0004'
    T1OSCEN                      EQU     H'0003'
    NOT_T1SYNC                   EQU     H'0002'
    T1INSYNC                     EQU     H'0002'    ; Backward compatibility only
    T1SYNC                       EQU     H'0002'
    TMR1CS                       EQU     H'0001'
    TMR1ON                       EQU     H'0000'
    
    ;----- T2CON Bits ---------------------------------------------------------
    
    TOUTPS3                      EQU     H'0006'
    TOUTPS2                      EQU     H'0005'
    TOUTPS1                      EQU     H'0004'
    TOUTPS0                      EQU     H'0003'
    TMR2ON                       EQU     H'0002'
    T2CKPS1                      EQU     H'0001'
    T2CKPS0                      EQU     H'0000'
    
    ;----- SSPCON Bits --------------------------------------------------------
    
    WCOL                         EQU     H'0007'
    SSPOV                        EQU     H'0006'
    SSPEN                        EQU     H'0005'
    CKP                          EQU     H'0004'
    SSPM3                        EQU     H'0003'
    SSPM2                        EQU     H'0002'
    SSPM1                        EQU     H'0001'
    SSPM0                        EQU     H'0000'
    
    ;----- CCP1CON Bits -------------------------------------------------------
    
    CCP1X                        EQU     H'0005'
    CCP1Y                        EQU     H'0004'
    CCP1M3                       EQU     H'0003'
    CCP1M2                       EQU     H'0002'
    CCP1M1                       EQU     H'0001'
    CCP1M0                       EQU     H'0000'
    
    ;----- RCSTA Bits ---------------------------------------------------------
    
    SPEN                         EQU     H'0007'
    RX9                          EQU     H'0006'
    RC9                          EQU     H'0006'    ; Backward compatibility only
    NOT_RC8                      EQU     H'0006'    ; Backward compatibility only
    RC8_9                        EQU     H'0006'    ; Backward compatibility only
    SREN                         EQU     H'0005'
    CREN                         EQU     H'0004'
    ADDEN                        EQU     H'0003'
    FERR                         EQU     H'0002'
    OERR                         EQU     H'0001'
    RX9D                         EQU     H'0000'
    RCD8                         EQU     H'0000'    ; Backward compatibility only
    
    ;----- CCP2CON Bits -------------------------------------------------------
    
    CCP2X                        EQU     H'0005'
    CCP2Y                        EQU     H'0004'
    CCP2M3                       EQU     H'0003'
    CCP2M2                       EQU     H'0002'
    CCP2M1                       EQU     H'0001'
    CCP2M0                       EQU     H'0000'
    
    ;----- ADCON0 Bits --------------------------------------------------------
    
    ADCS1                        EQU     H'0007'
    ADCS0                        EQU     H'0006'
    CHS2                         EQU     H'0005'
    CHS1                         EQU     H'0004'
    CHS0                         EQU     H'0003'
    GO                           EQU     H'0002'
    NOT_DONE                     EQU     H'0002'
    GO_DONE                      EQU     H'0002'
    ADON                         EQU     H'0000'
    
    ;----- OPTION_REG Bits -----------------------------------------------------
    
    NOT_RBPU                     EQU     H'0007'
    INTEDG                       EQU     H'0006'
    T0CS                         EQU     H'0005'
    T0SE                         EQU     H'0004'
    PSA                          EQU     H'0003'
    PS2                          EQU     H'0002'
    PS1                          EQU     H'0001'
    PS0                          EQU     H'0000'
    
    ;----- PIE1 Bits ----------------------------------------------------------
    
    ADIE                         EQU     H'0006'
    RCIE                         EQU     H'0005'
    TXIE                         EQU     H'0004'
    SSPIE                        EQU     H'0003'
    CCP1IE                       EQU     H'0002'
    TMR2IE                       EQU     H'0001'
    TMR1IE                       EQU     H'0000'
    
    ;----- PIE2 Bits ----------------------------------------------------------
    
    CMIE			     EQU     H'0006'
    EEIE                         EQU     H'0004'
    BCLIE                        EQU     H'0003'
    CCP2IE                       EQU     H'0000'
    
    ;----- PCON Bits ----------------------------------------------------------
    
    NOT_POR                      EQU     H'0001'
    NOT_BO                       EQU     H'0000'
    NOT_BOR                      EQU     H'0000'
    
    ;----- SSPCON2 Bits --------------------------------------------------------
    
    GCEN                         EQU     H'0007'
    ACKSTAT                      EQU     H'0006'
    ACKDT                        EQU     H'0005'
    ACKEN                        EQU     H'0004'
    RCEN                         EQU     H'0003'
    PEN                          EQU     H'0002'
    RSEN                         EQU     H'0001'   
    SEN                          EQU     H'0000'   
    
    ;----- SSPSTAT Bits -------------------------------------------------------
    
    SMP                          EQU     H'0007'
    CKE                          EQU     H'0006'
    D                            EQU     H'0005'
    I2C_DATA                     EQU     H'0005'
    NOT_A                        EQU     H'0005'
    NOT_ADDRESS                  EQU     H'0005'
    D_A                          EQU     H'0005'
    DATA_ADDRESS                 EQU     H'0005'
    P                            EQU     H'0004'
    I2C_STOP                     EQU     H'0004'
    S                            EQU     H'0003'
    I2C_START                    EQU     H'0003'
    R                            EQU     H'0002'
    I2C_READ                     EQU     H'0002'
    NOT_W                        EQU     H'0002'
    NOT_WRITE                    EQU     H'0002'
    R_W                          EQU     H'0002'
    READ_WRITE                   EQU     H'0002'
    UA                           EQU     H'0001'
    BF                           EQU     H'0000'
    
    ;----- TXSTA Bits ---------------------------------------------------------
    
    CSRC                         EQU     H'0007'
    TX9                          EQU     H'0006'
    NOT_TX8                      EQU     H'0006'    ; Backward compatibility only
    TX8_9                        EQU     H'0006'    ; Backward compatibility only
    TXEN                         EQU     H'0005'
    SYNC                         EQU     H'0004'
    BRGH                         EQU     H'0002'
    TRMT                         EQU     H'0001'
    TX9D                         EQU     H'0000'
    TXD8                         EQU     H'0000'    ; Backward compatibility only
    
    
    ;----- CMCON Bits ---------------------------------------------------------
    C2OUT                        EQU     H'0007'
    C1OUT                        EQU     H'0006'
    C2INV                        EQU     H'0005'
    C1INV                        EQU     H'0004'
    CIS                          EQU     H'0003'
    CM2                          EQU     H'0002'
    CM1                          EQU     H'0001'
    CM0                          EQU     H'0000'
    
    ;----- CVRCON Bits --------------------------------------------------------
    CVREN                        EQU     H'0007'
    CVROE                        EQU     H'0006'
    CVRR                         EQU     H'0005'
    CVR3                         EQU     H'0003'
    CVR2                         EQU     H'0002'
    CVR1                         EQU     H'0001'
    CVR0                         EQU     H'0000'
    
    ;----- ADCON1 Bits --------------------------------------------------------
    
    ADFM                         EQU     H'0007'
    PCFG3                        EQU     H'0003'
    PCFG2                        EQU     H'0002'
    PCFG1                        EQU     H'0001'
    PCFG0                        EQU     H'0000'
    
    ;----- EECON1 Bits --------------------------------------------------------
    
    EEPGD                        EQU     H'0007'
    WRERR                        EQU     H'0003'
    WREN                         EQU     H'0002'
    WR                           EQU     H'0001'
    RD                           EQU     H'0000'
    
    ;==========================================================================
    ;
    ;       RAM Definition
    ;
    ;==========================================================================
    
            __MAXRAM H'1FF'
            __BADRAM H'8F'-H'90', H'95'-H'97', H'9A'-H'9B'
            __BADRAM H'105', H'107'-H'109'
            __BADRAM H'185', H'187'-H'189', H'18E'-H'18F'
    
    ;==========================================================================
    ;
    ;       Configuration Bits
    ;
    ;==========================================================================
    
    _CP_ALL                      EQU     H'1FFF'
    _CP_OFF                      EQU     H'3FFF'
    _DEBUG_OFF                   EQU     H'3FFF'
    _DEBUG_ON                    EQU     H'37FF'
    _WRT_OFF                     EQU     H'3FFF'    ; No prog memmory write protection
    _WRT_256                     EQU     H'3DFF'    ; First 256 prog memmory write protected
    _WRT_1FOURTH                 EQU     H'3BFF'    ; First quarter prog memmory write protected
    _WRT_HALF                    EQU     H'39FF'    ; First half memmory write protected
    _CPD_OFF                     EQU     H'3FFF'
    _CPD_ON                      EQU     H'3EFF'
    _LVP_ON                      EQU     H'3FFF'
    _LVP_OFF                     EQU     H'3F7F'
    _BODEN_ON                    EQU     H'3FFF'
    _BODEN_OFF                   EQU     H'3FBF'
    _PWRTE_OFF                   EQU     H'3FFF'
    _PWRTE_ON                    EQU     H'3FF7'
    _WDT_ON                      EQU     H'3FFF'
    _WDT_OFF                     EQU     H'3FFB'
    _RC_OSC                      EQU     H'3FFF'
    _HS_OSC                      EQU     H'3FFE'
    _XT_OSC                      EQU     H'3FFD'
    _LP_OSC                      EQU     H'3FFC'
    
            LIST
    
    
    ;==========================================================================
    ;
    ;       Configuration 
    ;
    ;==========================================================================
    
    
    	__CONFIG        _CP_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_OFF & _PWRTE_ON & _WDT_OFF & _BODEN_OFF & _HS_OSC
    
    
    
    ;==========================================================================
    ;
    ;       Variable Definition
    ;
    ;==========================================================================
    
    wait	EQU	0x20
    
    ; Anfangsinitialisierung
    
    init
    ; PWM vorbereiten
    ; Vorteiler 16:1 und Timer2 einschalten
    	BSF	T2CON,T2CKPS1	; Vorteiler 16:1
    	BSF	T2CON,TMR2ON	; Timer2 ein
    
    ; Frequenz auf 1,22 kHz einstellen
    	BSF	STATUS,RP0	; Bank1
    	MOVLW	D'255'		;
    	MOVWF	PR2		; 1.22 kHz
    	BCF	STATUS,RP0	; Bank1
    
    ; Tastverhältnis auf 50% einstellen
    	MOVLW	D'127'		;
    	MOVWF	CCPR1L		; 50% 
    
    ; 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	;
    
    ; ADC vorbereiten
    ; PortB vorbereiten
    	bsf	STATUS, RP0	; auf Bank 1 umschalten
    	movlw	B'00000000'	; PortB alle output
    	movwf	TRISB
    	bcf	STATUS, RP0	; auf Bank 0 zurückschalten
    	clrf	PORTB		; alle LEDs ausschalten
    
    ; ADC einschalten
    	BSF	ADCON0, 0	; ADON=1
    
    ; ADC-Eingang AN0 auswählen
    	BCF	ADCON0, 5	; ADCHS2=0
    	BCF	ADCON0, 4	; ADCHS1=0
    	BCF	ADCON0, 3	; ADCHS0=0
    
    ; ADC speed für 20 MHz einstellen
    	BSF	ADCON0, 7	; ADCS1=1
    	BCF	ADCON0, 6	; ADCS0=0
    
    ; Daten linksbündig
    	BSF	STATUS,RP0	; Bank1
    	BCF	ADCON1, 7	; ADFM=0
    	BCF	STATUS,RP0	; Bank0
    
    
    ;**********************************************************
    ; Hauptprogrammschleife
    
    Main
    ;Eingangsspannung wandeln
    	BSF	ADCON0, 2	; ADC starten
    loop
    	BTFSC	ADCON0, 2	; ist der ADC fertig?
    	GOTO	loop		; nein, weiter warten
    
    ; Wert nach PortB schreiben
    	movfw	ADRESH		; obere 8 Bit auslesen
    	movwf	PORTB		; obere 8 Bit nach PortB
    
    ; Wert an PWM übergeben
    	MOVWF	CCPR1L		; obere 8 Bit sind PWM
    
    ; Warten, damit der ADC sich erholen kann
    	clrf	wait
    warten
    	DECFSZ	wait, f
    	goto	warten
    
    	goto	Main
    
    	end

    Vielen vielen Dank !!
    GrußundTschüß \/
    ~Jürgen

  8. #8
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Es ist meistens "nur" ein Fehler, und es reicht, damit es nicht funktioniert.

    Du kannst aber wirklich mit dem Kopieren von *.inc Quelldateien in Deine Programme aufhören und statt dessen am Anfang Deines Programms nach der LIST Direktive die eine Zeilen einfügen:

    include "P16F876A.inc" , oder ?

    MfG

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2006
    Beiträge
    1.178
    ich werds probieren


    nun denn, mal schaun wie ich da 2pwm rausbekomme
    GrußundTschüß \/
    ~Jürgen

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2006
    Beiträge
    1.178
    soo, ich bins nochmal!
    also
    ich denke so funktionierts..
    kann jedenfalls soweit ichs rausmessen kann ohne Störung durch den anderen Eingang ne Spannung an RA0 und RA1 einlesen,
    und als pwm auf CCP1 und CCP2 ausgeben..

    Ich messe das Tastverhältnis mit nem multimeter was eher für kfz ist..
    das problem was ich da noch habe:
    wenn ich das tastverhältnis schnell ganz runterdrehe, bleibt der wert bei so 20% hängen .. hmm (springt dann nach 2sek auf 0)
    jetzt weiß ich net:
    liegts an den potis?
    liegts an der software
    oder liegts am multimeter ..

    wenn ichs langsam runterdrehe, gehts auf ~0,9 und dann vollns auf 0,0%

    Problem was ich noch hatte, war, dass der adc lang genug umgeladen wird, damit net ra0 in ra1 einstört und andersrum..
    ich denke ich habs hingekriegt mit der warteschleife von sprut, kann mir da noch jemand ein "positiv" geben ?

    aktueller code, noch mit reinkopiertem *.inc File
    Code:
    list p=16f876a
    
    ERRORLEVEL      -302    	;SUPPRESS BANK SELECTION MESSAGES
            
            IFNDEF __16F876A
               MESSG "Processor-header file mismatch.  Verify selected processor."
            ENDIF
    
    ;===
    ;
    ;       Register Definitions
    ;
    ;=====
    
    W                            EQU     H'0000'
    F                            EQU     H'0001'
    
    ;----- Register Files------------------------------------------------------
    
    INDF                         EQU     H'0000'
    TMR0                         EQU     H'0001'
    PCL                          EQU     H'0002'
    STATUS                       EQU     H'0003'
    FSR                          EQU     H'0004'
    PORTA                        EQU     H'0005'
    PORTB                        EQU     H'0006'
    PORTC                        EQU     H'0007'
    PCLATH                       EQU     H'000A'
    INTCON                       EQU     H'000B'
    PIR1                         EQU     H'000C'
    PIR2                         EQU     H'000D'
    TMR1L                        EQU     H'000E'
    TMR1H                        EQU     H'000F'
    T1CON                        EQU     H'0010'
    TMR2                         EQU     H'0011'
    T2CON                        EQU     H'0012'
    SSPBUF                       EQU     H'0013'
    SSPCON                       EQU     H'0014'
    CCPR1L                       EQU     H'0015'
    CCPR1H                       EQU     H'0016'
    CCP1CON                      EQU     H'0017'
    RCSTA                        EQU     H'0018'
    TXREG                        EQU     H'0019'
    RCREG                        EQU     H'001A'
    CCPR2L                       EQU     H'001B'
    CCPR2H                       EQU     H'001C'
    CCP2CON                      EQU     H'001D'
    ADRESH                       EQU     H'001E'
    ADCON0                       EQU     H'001F'
    
    OPTION_REG                   EQU     H'0081'
    TRISA                        EQU     H'0085'
    TRISB                        EQU     H'0086'
    TRISC                        EQU     H'0087'
    PIE1                         EQU     H'008C'
    PIE2                         EQU     H'008D'
    PCON                         EQU     H'008E'
    SSPCON2                      EQU     H'0091'
    PR2                          EQU     H'0092'
    SSPADD                       EQU     H'0093'
    SSPSTAT                      EQU     H'0094'
    TXSTA                        EQU     H'0098'
    SPBRG                        EQU     H'0099'
    CMCON                        EQU     H'009C'
    CVRCON                       EQU     H'009D'
    ADRESL                       EQU     H'009E'
    ADCON1                       EQU     H'009F'
    
    EEDATA                       EQU     H'010C'
    EEADR                        EQU     H'010D'
    EEDATH                       EQU     H'010E'
    EEADRH                       EQU     H'010F'
    
    EECON1                       EQU     H'018C'
    EECON2                       EQU     H'018D'
    
    ;----- STATUS Bits --------------------------------------------------------
    
    IRP                          EQU     H'0007'
    RP1                          EQU     H'0006'
    RP0                          EQU     H'0005'
    NOT_TO                       EQU     H'0004'
    NOT_PD                       EQU     H'0003'
    Z                            EQU     H'0002'
    DC                           EQU     H'0001'
    C                            EQU     H'0000'
    
    ;----- INTCON Bits ------------------------
    
    GIE                          EQU     H'0007'
    PEIE                         EQU     H'0006'
    T0IE                         EQU     H'0005'
    INTE                         EQU     H'0004'
    RBIE                         EQU     H'0003'
    T0IF                         EQU     H'0002'
    INTF                         EQU     H'0001'
    RBIF                         EQU     H'0000'
    
    ;----- PIR1 Bits ------------
    
    ADIF                         EQU     H'0006'
    RCIF                         EQU     H'0005'
    TXIF                         EQU     H'0004'
    SSPIF                        EQU     H'0003'
    CCP1IF                       EQU     H'0002'
    TMR2IF                       EQU     H'0001'
    TMR1IF                       EQU     H'0000'
    
    ;----- PIR2 Bits ------------
    
    CMIF			     EQU     H'0006'
    EEIF                         EQU     H'0004'
    BCLIF                        EQU     H'0003'
    CCP2IF                       EQU     H'0000'
    
    ;----- T1CON Bits ---------
    
    T1CKPS1                      EQU     H'0005'
    T1CKPS0                      EQU     H'0004'
    T1OSCEN                      EQU     H'0003'
    NOT_T1SYNC                   EQU     H'0002'
    T1INSYNC                     EQU     H'0002'    ; Backward compatibility only
    T1SYNC                       EQU     H'0002'
    TMR1CS                       EQU     H'0001'
    TMR1ON                       EQU     H'0000'
    
    ;----- T2CON Bits -----------
    
    TOUTPS3                      EQU     H'0006'
    TOUTPS2                      EQU     H'0005'
    TOUTPS1                      EQU     H'0004'
    TOUTPS0                      EQU     H'0003'
    TMR2ON                       EQU     H'0002'
    T2CKPS1                      EQU     H'0001'
    T2CKPS0                      EQU     H'0000'
    
    ;----- SSPCON Bits -----------------
    
    WCOL                         EQU     H'0007'
    SSPOV                        EQU     H'0006'
    SSPEN                        EQU     H'0005'
    CKP                          EQU     H'0004'
    SSPM3                        EQU     H'0003'
    SSPM2                        EQU     H'0002'
    SSPM1                        EQU     H'0001'
    SSPM0                        EQU     H'0000'
    
    ;----- CCP1CON Bits ------------------------
    
    CCP1X                        EQU     H'0005'
    CCP1Y                        EQU     H'0004'
    CCP1M3                       EQU     H'0003'
    CCP1M2                       EQU     H'0002'
    CCP1M1                       EQU     H'0001'
    CCP1M0                       EQU     H'0000'
    
    ;----- RCSTA Bits -------------------------
    
    SPEN                         EQU     H'0007'
    RX9                          EQU     H'0006'
    RC9                          EQU     H'0006'    ; Backward compatibility only
    NOT_RC8                      EQU     H'0006'    ; Backward compatibility only
    RC8_9                        EQU     H'0006'    ; Backward compatibility only
    SREN                         EQU     H'0005'
    CREN                         EQU     H'0004'
    ADDEN                        EQU     H'0003'
    FERR                         EQU     H'0002'
    OERR                         EQU     H'0001'
    RX9D                         EQU     H'0000'
    RCD8                         EQU     H'0000'    ; Backward compatibility only
    
    ;----- CCP2CON Bits ------------
    
    CCP2X                        EQU     H'0005'
    CCP2Y                        EQU     H'0004'
    CCP2M3                       EQU     H'0003'
    CCP2M2                       EQU     H'0002'
    CCP2M1                       EQU     H'0001'
    CCP2M0                       EQU     H'0000'
    
    ;----- ADCON0 Bits -----------------
    
    ADCS1                        EQU     H'0007'
    ADCS0                        EQU     H'0006'
    CHS2                         EQU     H'0005'
    CHS1                         EQU     H'0004'
    CHS0                         EQU     H'0003'
    GO                           EQU     H'0002'
    NOT_DONE                     EQU     H'0002'
    GO_DONE                      EQU     H'0002'
    ADON                         EQU     H'0000'
    
    ;----- OPTION_REG Bits --------------------
    
    NOT_RBPU                     EQU     H'0007'
    INTEDG                       EQU     H'0006'
    T0CS                         EQU     H'0005'
    T0SE                         EQU     H'0004'
    PSA                          EQU     H'0003'
    PS2                          EQU     H'0002'
    PS1                          EQU     H'0001'
    PS0                          EQU     H'0000'
    
    ;----- PIE1 Bits --------------------------------
    
    ADIE                         EQU     H'0006'
    RCIE                         EQU     H'0005'
    TXIE                         EQU     H'0004'
    SSPIE                        EQU     H'0003'
    CCP1IE                       EQU     H'0002'
    TMR2IE                       EQU     H'0001'
    TMR1IE                       EQU     H'0000'
    
    ;----- PIE2 Bits --------------
    
    CMIE			     EQU     H'0006'
    EEIE                         EQU     H'0004'
    BCLIE                        EQU     H'0003'
    CCP2IE                       EQU     H'0000'
    
    ;----- PCON Bits -------------
    
    NOT_POR                      EQU     H'0001'
    NOT_BO                       EQU     H'0000'
    NOT_BOR                      EQU     H'0000'
    
    ;----- SSPCON2 Bits --------------------------------------------------------
    
    GCEN                         EQU     H'0007'
    ACKSTAT                      EQU     H'0006'
    ACKDT                        EQU     H'0005'
    ACKEN                        EQU     H'0004'
    RCEN                         EQU     H'0003'
    PEN                          EQU     H'0002'
    RSEN                         EQU     H'0001'   
    SEN                          EQU     H'0000'   
    
    ;----- SSPSTAT Bits -------------------------------------------------------
    
    SMP                          EQU     H'0007'
    CKE                          EQU     H'0006'
    D                            EQU     H'0005'
    I2C_DATA                     EQU     H'0005'
    NOT_A                        EQU     H'0005'
    NOT_ADDRESS                  EQU     H'0005'
    D_A                          EQU     H'0005'
    DATA_ADDRESS                 EQU     H'0005'
    P                            EQU     H'0004'
    I2C_STOP                     EQU     H'0004'
    S                            EQU     H'0003'
    I2C_START                    EQU     H'0003'
    R                            EQU     H'0002'
    I2C_READ                     EQU     H'0002'
    NOT_W                        EQU     H'0002'
    NOT_WRITE                    EQU     H'0002'
    R_W                          EQU     H'0002'
    READ_WRITE                   EQU     H'0002'
    UA                           EQU     H'0001'
    BF                           EQU     H'0000'
    
    ;----- TXSTA Bits ---------------------------------------------------------
    
    CSRC                         EQU     H'0007'
    TX9                          EQU     H'0006'
    NOT_TX8                      EQU     H'0006'    ; Backward compatibility only
    TX8_9                        EQU     H'0006'    ; Backward compatibility only
    TXEN                         EQU     H'0005'
    SYNC                         EQU     H'0004'
    BRGH                         EQU     H'0002'
    TRMT                         EQU     H'0001'
    TX9D                         EQU     H'0000'
    TXD8                         EQU     H'0000'    ; Backward compatibility only
    
    
    ;----- CMCON Bits ---------------------------------------------------------
    C2OUT                        EQU     H'0007'
    C1OUT                        EQU     H'0006'
    C2INV                        EQU     H'0005'
    C1INV                        EQU     H'0004'
    CIS                          EQU     H'0003'
    CM2                          EQU     H'0002'
    CM1                          EQU     H'0001'
    CM0                          EQU     H'0000'
    
    ;----- CVRCON Bits --------------------------------------------------------
    CVREN                        EQU     H'0007'
    CVROE                        EQU     H'0006'
    CVRR                         EQU     H'0005'
    CVR3                         EQU     H'0003'
    CVR2                         EQU     H'0002'
    CVR1                         EQU     H'0001'
    CVR0                         EQU     H'0000'
    
    ;----- ADCON1 Bits --------------------------------------------------------
    
    ADFM                         EQU     H'0007'
    PCFG3                        EQU     H'0003'
    PCFG2                        EQU     H'0002'
    PCFG1                        EQU     H'0001'
    PCFG0                        EQU     H'0000'
    
    ;----- EECON1 Bits --------------------------------------------------------
    
    EEPGD                        EQU     H'0007'
    WRERR                        EQU     H'0003'
    WREN                         EQU     H'0002'
    WR                           EQU     H'0001'
    RD                           EQU     H'0000'
    
    ;==========================================================================
    ;
    ;       RAM Definition
    ;
    ;==========================================================================
    
            __MAXRAM H'1FF'
            __BADRAM H'8F'-H'90', H'95'-H'97', H'9A'-H'9B'
            __BADRAM H'105', H'107'-H'109'
            __BADRAM H'185', H'187'-H'189', H'18E'-H'18F'
    
    ;==========================================================================
    ;
    ;       Configuration Bits
    ;
    ;==========================================================================
    
    _CP_ALL                      EQU     H'1FFF'
    _CP_OFF                      EQU     H'3FFF'
    _DEBUG_OFF                   EQU     H'3FFF'
    _DEBUG_ON                    EQU     H'37FF'
    _WRT_OFF                     EQU     H'3FFF'    ; No prog memmory write protection
    _WRT_256                     EQU     H'3DFF'    ; First 256 prog memmory write protected
    _WRT_1FOURTH                 EQU     H'3BFF'    ; First quarter prog memmory write protected
    _WRT_HALF                    EQU     H'39FF'    ; First half memmory write protected
    _CPD_OFF                     EQU     H'3FFF'
    _CPD_ON                      EQU     H'3EFF'
    _LVP_ON                      EQU     H'3FFF'
    _LVP_OFF                     EQU     H'3F7F'
    _BODEN_ON                    EQU     H'3FFF'
    _BODEN_OFF                   EQU     H'3FBF'
    _PWRTE_OFF                   EQU     H'3FFF'
    _PWRTE_ON                    EQU     H'3FF7'
    _WDT_ON                      EQU     H'3FFF'
    _WDT_OFF                     EQU     H'3FFB'
    _RC_OSC                      EQU     H'3FFF'
    _HS_OSC                      EQU     H'3FFE'
    _XT_OSC                      EQU     H'3FFD'
    _LP_OSC                      EQU     H'3FFC'
    
            LIST
    
    
    ;==========================================================================
    ;
    ;       Configuration 
    ;
    ;==========================================================================
    
    ;ENDE VOM *.INC FILE
    
    	__CONFIG        _CP_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_OFF & _PWRTE_ON & _WDT_OFF & _BODEN_OFF & _HS_OSC
    
    
    
    ;==========================================================================
    ;
    ;       Variable Definition
    ;
    ;==========================================================================
    
    wait	EQU	0x20
    loops2	EQU 	0x22
    
    ; Anfangsinitialisierung
    
    init
    ; PWM vorbereiten
    ; Vorteiler 16:1 und Timer2 einschalten
    	BSF	T2CON,T2CKPS1	; Vorteiler 16:1
    	BSF	T2CON,TMR2ON	; Timer2 ein
    
    ; Frequenz auf 1,22 kHz einstellen
    	BSF	STATUS,RP0	; Bank1
    	MOVLW	D'255'		;
    	MOVWF	PR2		; 1.22 kHz
    	BCF	STATUS,RP0	; Bank1
    
    ; Tastverhältnis auf 1% bzw 1% einstellen 
        MOVLW  D'1'  
        MOVWF  CCPR1L           ; 1% 
        MOVLW  D'1'  
        MOVWF  CCPR2L           ; 1% 
    
    ; RC2/CCP1 und RC1/CCP2 auf Ausgang stellen 
        BSF    STATUS,RP0       ; Bank1 
        BCF    TRISC, 2         ; RC2: output=0 
        BCF    TRISC, 1         ; RC1: 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	;
    
    ; PWM MODE mit CCP2 initialisieren 
        CLRF   CCP2CON          ; CCP2-Modus aus 
        BSF    CCP2CON,CCP2M3   ; CCP2-Modus PWM-Mode 
        BSF    CCP2CON,CCP2M2	;
    
    ; ADC vorbereiten
    ; PortB vorbereiten
    	bsf	STATUS, RP0	; auf Bank 1 umschalten
    	movlw	B'00000000'	; PortB alle output
    	movwf	TRISB
    	bcf	STATUS, RP0	; auf Bank 0 zurückschalten
    	clrf	PORTB		; alle LEDs ausschalten
    
    ; ADC einschalten
    	BSF	ADCON0, 0	; ADON=1
    
    ; ADC speed für 20 MHz einstellen
    	BSF	ADCON0, 7	; ADCS1=1
    	BCF	ADCON0, 6	; ADCS0=0
    
    ; Daten linksbündig
    	BSF	STATUS,RP0	; Bank1
    	BCF	ADCON1, 7	; ADFM=0
    	BCF	STATUS,RP0	; Bank0
    
    
    ;**********************************************************
    ; Hauptprogrammschleife
    
    Main
    ; Ablauf für 1.PWM ausgang
    ; ADC-Eingang AN0 auswählen
    	BCF	ADCON0, 5	; ADCHS2=0
    	BCF	ADCON0, 4	; ADCHS1=0
    	BCF	ADCON0, 3	; ADCHS0=0
    
    ;Pause zum ADC aufladen?
    ;********************************************************** 
    ; Warteschleife 1 ms für einen 10MHz-PIC-Takt 
    Wai 
            movlw   .249           ; Zeitkonstante für 1ms 
            movwf   loops2 
    
    Wai2    nop  
            nop 
            nop 
            nop 
            nop 
            nop
    		nop 
            decfsz  loops2, F      ; 1 ms vorbei? 
            goto    Wai2           ; nein, noch nicht
     
    
    
    ;Eingangsspannung wandeln
    	BSF	ADCON0, 2	; ADC starten
    loop
    	BTFSC	ADCON0, 2	; ist der ADC fertig?
    	GOTO	loop		; nein, weiter warten
    
    ; Wert nach PortB schreiben
    	movfw	ADRESH		; obere 8 Bit auslesen
    	movwf	PORTB		; obere 8 Bit nach PortB
    
    ; Wert an PWM1 übergeben
    	MOVWF	CCPR1L		; obere 8 Bit sind PWM
    
    ; Warten, damit der ADC sich erholen kann
    	clrf	wait
    warten
    	DECFSZ	wait, f
    	goto	warten
    
    ; Ablauf für 2.PWM ausgang
    ; ADC-Eingang AN1 auswählen
    	BCF	ADCON0, 5	; ADCHS2=0
    	BCF	ADCON0, 4	; ADCHS1=0
    	BSF	ADCON0, 3	; ADCHS0=1
    
    ;Pause zum ADC aufladen?
    ;********************************************************** 
    ; Warteschleife 1 ms für einen 10MHz-PIC-Takt 
    Waii 
            movlw   .249           ; Zeitkonstante für 1ms 
            movwf   loops2 
    
    Wai3    nop  
            nop 
            nop 
            nop 
            nop 
            nop
    		nop 
            decfsz  loops2, F      ; 1 ms vorbei? 
            goto    Wai3           ; nein, noch nicht
    
    ;Eingangsspannung wandeln
    	BSF	ADCON0, 2	; ADC starten
    loop2
    	BTFSC	ADCON0, 2	; ist der ADC fertig?
    	GOTO	loop2		; nein, weiter warten
    
    ;Eingangsspannung in work laden
    movfw	ADRESH		; obere 8 Bit auslesen
    
    ; Wert an PWM2 übergeben
    	MOVWF	CCPR2L		; obere 8 Bit sind PWM
    
    ; Warten, damit der ADC sich erholen kann 
            clrf    wait 
    warten2 
            DECFSZ  wait, f 
            goto    warten2 
    
          	goto	Main
    
    	end
    Passt das so?

    Danke!

    Edit: Noch bisschen den Text verschönert

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests