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

Thema: zwei ADC vergleichen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.06.2006
    Beiträge
    478
    Da bin ich wieder,
    ich hab natürlich weiter versucht und kann absolut nicht mehr nachvolziehen, was der µC da macht. Im unteren Bild ist die von mir genutzte Hardware zum testen. Die LAmpen, die da im Moment leuchten, haben nichts zu sagen, das Foto stammt von vorigen Programmen. Die Led´s sind über FET´s an den PORTB des ATmega8 angeschlossen, die eingabe Elemente an PORTC.
    Ich schätzte mal, was mir im oben geposteten Prog ein Bein gestellt hat, war der Freerunning Mode des ADC.
    Eigentlich soll das Prog den ADC Wert von Kanal 1 und 2 einlesen und jew. speichern. Um zu sehen, ob die ADC Schleifen für sich funktionieren, habe ich hier nich nicht den CP Befehl sondern den CPI benutzt(also Register und Konstante). Eigentlich müsste ich ja dann jenachdem welches Reg. ich da wähle entweder mit dem Poti oder dem Taster den PORTB beeinflussen können. Was aber passiert ist aber das: wenn der Poti den konstanten Wert erreicht, geht PORTB auf 0b00000000. Wenn ich während PORTB 0b11111111
    ist, den Taster drücke, werden die LED´s dunkler. Daraus schließe ich, das da irgendwo ein ungewolltes PWM rumgeistert. Außerdem kann ich mit dem Taster keinen Einfluss nehmen, wenn der Poti unterhalb der 100 ist. UND jetzt der Hammer: das Verhalten ist immer gleich, egal ob ich mit r17 oder r 19 vergleiche
    hier der Code:
    Code:
    ;Start, Power ON, Reset
    main:	ldi	r16,lo8(RAMEND)
    	out	SPL,r16
    	ldi	r16,hi8(RAMEND)
    	out	SPH,r16
    	ldi	r16,0b00000000
    	out	DDRC,r16
    	ldi	r16,0b11111111
    	out	DDRB,r16
    	ldi	r31,0b11000101	;adc-enable/start_conversion/clk:32
    	ldi	r16,0b01100001	;AVcc-left_adjusted-channel 1 => Taster
    	ldi	r18,0b01100010	;AVcc-left_adjusted-channel 2 => Poti
    	ldi	r30,0b00000000
    
    	;Hier Init-Code eintragen.
    ;------------------------------------------------------------------------
    mainloop:	wdr
    	out	ADCH,r30	;zum clearen von ADCH und ADCL
    	out	ADCL,r30	;zum clearen von ADCH und ADCL
    	out	ADMUX,r16	;AVcc-left_adjusted-channel 1 => Taster
    	out	ADCSRA,r31	;adc-enable/start_conversion/clk:32
    bis_convertet1:
    	in	r20,ADCSRA
    	ori	r20,0b11101111
    	cpi	r20,0b11111111
    	brne	bis_convertet1
    	in	r1,ADCH
    	mov	r17,r1
    	out	ADCH,r30	;zum clearen von ADCH und ADCL
    	out	ADCL,r30	;zum clearen von ADCH und ADCL
    	out	ADMUX,r18	;AVcc-left_adjusted-channel 2 => Poti
    	out	ADCSRA,r31	;adc-enable/start_conversion/clk:32
    bis_convertet2:
    	in	r20,ADCSRA
    	ori	r20,0b11101111
    	cpi	r20,0b11111111
    	brne	bis_convertet2
    	in	r2,ADCH
    	mov	r19,r2
    	cpi	r17,100      ;VERGLEICH-VERGLEICH-VERGLEICH
    	brcc	an
    	ldi	r21,0b11111111
    	out	PORTB,r21
    	rjmp	mainloop
    an:
    	ldi	r21,0b00000000
    	out	PORTB,r21
    
    
    
    ;Hier den Quellcode eintragen.
    	rjmp	mainloop
    Danke,
    The Man
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken test_319.jpg  

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress