- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 3 von 3

Thema: ADC-Wert für PWM

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.12.2005
    Beiträge
    6

    ADC-Wert für PWM

    Anzeige

    Praxistest und DIY Projekte
    Hi Leute!
    Ich habe eine 5V variable Eingangsspannung am ADC-Eingang. Diesen variablen Wert will ich einlesen und in das Duty-Cycle-Register für eine PWM schreiben. Muss ich da den Wert noch irgendwie umrechnen oder nicht?

    mfg HTLer

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    41
    Beiträge
    506
    Wenn du PWM und ADC beide auf 10 Bit oder auf 8 Bit hast, dann musste nichts umrechnen.
    Wenn dein ADC 10 Bit einliest, musst du die oberen 8 Bit ins DC-Register schreiben.

    Prinzipiell musst du aber nichts umrechnen.

    MfG
    Stefan

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2006
    Beiträge
    982
    hiho..
    hab vor 2 tagen angefangen mich mit pic's zu beschäftigen und wollte das selbe zum adc-test realisieren...
    verwendet hab ich einen 16f873 auf einem geäztem testboard...
    * porta = adc
    * portb = in
    * portc = out (8xled)

    Code:
    ; Variablen declaration
    
    wait    	EQU     0x20		; 'wait' variable für den ADC
    adcvalue	EQU		0x21		; Ergebniss des ADC
    chansel		EQU		0x22		; ADC Channel für Unterprogramm getana (0-3 auf TestBoard verfügbar)
    
    ; Standard Init des TestBoard PIC16F873
    Init
            bsf     STATUS, RP0     ; auf Bank 1 umschalten
            movlw   B'11111111'     ; PortB alle input
            movwf   TRISB
            movlw   B'00000000'     ; PortC alle output
            movwf   TRISC
            BCF     ADCON1, 7
            bcf     STATUS, RP0     ; auf Bank 0 zurückschalten
    		bsf		ADCON0,0		; PORTA als analog-in festlegen
    		bcf		ADCON0,3		; AN0 einstellen
    		bcf		ADCON0,4		; "
    		bcf		ADCON0,5		; "
            BSF     ADCON0, 7       ; ADC Speed
            BCF     ADCON0, 6       ; "
            clrf    PORTC           ; alle LEDs ausschalten
    
    ; Init ende
    ;**************************************************************
    ; Beginn Hauptprogrammschleife
    
    main
    		btfsc	PORTB, 0
    		call	anaout
    		goto	main
    
    ; Ende Hauptprogrammschleife
    ;**************************************************************
    ; Beginn Unterprogramme
    
    anaout
    		clrf	chansel
    		nop
    		btfsc	PORTB, 0
    		bsf		chansel, 0
    		btfsc	PORTB, 1
    		bsf		chansel, 1
    		nop
    		call	getana
    		movfw	adcvalue
    		movwf	PORTC
    		return
    
    ; Ende Unterprogramme			
    ;**************************************************************
    
    
    
    
    
    ;***************************************
    ;*	Standard Funktionen für TestBorad  *
    ;***************************************
    
    		goto	main			; versehentlichen Aufruf verhindern
    
    ; Analog Input
    getana	; ADC Vorgang starten
    		btfsc	chansel, 0		; ADC Channel Auswahl - bit3
    		bsf		ADCON0, 3
    		btfss	chansel, 0
    		bcf		ADCON0, 3
    		btfsc	chansel, 1		; bit4
    		bsf		ADCON0, 4
    		btfss	chansel, 1
    		bcf		ADCON0, 4
    		btfsc	chansel, 2		; bit5
    		bsf		ADCON0, 5
    		btfss	chansel, 3
    		bcf		ADCON0, 5
    		nop						; 1Takt Pause
            bsf     ADCON0, 2       ; ADC starten
    adcloop
            btfsc   ADCON0, 2       ; ist der ADC fertig?
            goto    adcloop         ; nein, weiter warten
            movfw   ADRESH          ; obere 8 Bit des alanogwertes ins arbeitsverzeichnis
    		movwf	adcvalue		; Ergebniss zwischenspeichern
            clrf    wait			; Warten, damit der ADC sich erholen kann
    adcwarten
            decfsz  wait, f
            goto    adcwarten
            return
    
            end
    in chansel (0x22) lege ich den abzufragenden ad kanal fest und speichere das ergebniss (8bit) in adcvalue..
    erstmal sry für meinen ghetto-code bin leider selbst anfänger, aber ich hoffe er hat dir geholfen

Berechtigungen

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

Labornetzteil AliExpress