Vandaag ben ik hard aan het programmeren geweest aan een volume meter. Een beetje het principe van een lm3914/lm3915 maar dan met een pic12F675 en een schuifregister.

Nou wil ik het resultaat van een 10 bits AD meting rechts laten uitlijnen. Links werkt het prima, maar rechts krijg ik er alleen hele vreemde signalen uit (zelfs bits die geen 1 kunnen worden worden 1 en dat soort grappen).

Ik heb het ook al met een ander ic geprobeerd, zelfde probleem. Is iemand dit al eens eerder tegengekomen?

Post je code eens?

Heb je de bit ADFM (ADCON0 bit 7) goed gezet?

Dit is wat ik doe voor het uitlezen:


		movlw	b'0000011'
		movwf	ADcon				;start AD conversion
		nop
		nop
		movfw	ADresH
		movwf	Control1
		bsf		Status,			5
		movfw	ADresL
		bcf		Status,			5
		movwf	Control2
	
		movfw	Control1
		movwf	Out
		Call	DATAOUT	

Als ik nou de eerste bit set (Bit 7) dan krijg ik in plaats van de juiste waarde alleen een hoop oscilaties.

Mmmm, ziet er niet verschrikkelijk proper uit. Moet je niet wachten tot de conversie klaar is?

Pak de datasheet en volg alle stappen die zij aanbevelen...

Op 12 augustus 2006 22:59:56 schreef elmowww:
Mmmm, ziet er niet verschrikkelijk proper uit. Moet je niet wachten tot de conversie klaar is?

Pak de datasheet en volg alle stappen die zij aanbevelen...

tijd is maximaal 2uS, vandaar die twee nop instructies. Maar het AD omzetten werkt prima. Het probleem zit hem erin dat het blok achter de AD omzetter, dat dmv bit 7 van het ADCON0 register wordt aangestuurd, alleen maar het resultaat links wil uitlijnen en niet rechts.

Maar ik zal eens gaan proberen of hij wel goed wil werken als ik z'n ready bit gebruik.
[edit]
Helaas, hij wil nog steeds alleen links uitgelijnd werken.

Op 13 augustus 2006 11:20:24 schreef Bliksem:
[...]
tijd is maximaal 2uS, vandaar die twee nop instructies.

Helaas, dat is de Tad. Wanneer je iets beter kijkt naar het datasheet zie je dat je dus 11 Tad nodig hebt. Je moet het GO/DONE bit testen voor je de waarde ophaalt!!

Op 13 augustus 2006 13:16:13 schreef JoWi:
[...]Helaas, dat is de Tad. Wanneer je iets beter kijkt naar het datasheet zie je dat je dus 11 Tad nodig hebt. Je moet het GO/DONE bit testen voor je de waarde ophaalt!!

Ik laat hem nu de busy bit testen, maar nog steeds werkt het alleen links uitgelijnd.

Wel gek dat hij het met 3us tijd ook al deed maar ik ben dit weekend al vaker tegengekomen dat deze pic niet altijd precies doet wat hij doet (zoals af en toe wel een interrupt on change geven als je dat bent vergeten in te stellen).

Ik werk nu gewoon met links uitgelijnd en zelfs maar 8 bits, en dat volstaat op het moment prima, maar ik ben wel benieuwd hoe het nou komt dat hij maar niet rechts wil uitlijnen.