PIC 16F628 werkt niet

Na de cursus van deze site te doen en wat testprojectjes met leds, lcd's en schuifregisters te doen vond ik het gisteren tijd worden om in plaats van de in de cursus gebruikte PIC 16F84 eens een 16F628 te gebruiken aangezien deze een stuk meer kan en bovendien goedkoper is.

Dus schreef ik een simpel programmatje om twee leds te laten knipperen en dit compileerde ik. Ik wilde de interne oscillator gebruiken en de Mclr had ik niet ge-enabled zodat ik daar ook geen extra componenten nodig had.

Na dit alles naar m'n pic te hebben geschreven zette ik de pic terug op het breadboard. Maar hij deed niks. Na nog eens de code te hebben gecontrolleerd besloot ik om de interne clock ook zijn uitgangs pulsen te laten geven zodat ik kon meten of die werkte. Deze bleek dus niet te werken want ik kreeg niks op m'n oscilloscoop te zien.

Dus besloot ik om toch maar met een mclr ingang te werken (waar dus nu een pull-up weerstand aanzit) en daarnaast heb ik een kristal oscillator gebruikt. Maar wederom gebeurde er niks en is er ook geen oscillatie te meten op het kristal.

Uiteindelijk zet m'n programma alleen nog maar de leds aan (om zo min mogelijk code en dus mogelijke fouten te hebben), maar nog steeds werkt het niet. De fuses staan als volgt: De watchdogtimer staat uit, de power-up timer aan, Mclr staat aan, Brown out reset uit, Low voltage programming staat uit en Code protection staat ook uit. Ik gebruik als oscillator de XT functie (dit alles in IC-prog).

Kan iemand mij vertellen waarom mijn pic niks wil doen? Hij programmeert wel en als ik hem daarna uitlees dan klopt alles dus is hij waarschijnlijk nog helemaal heel, bovendien heb ik het ook met een tweede pic geprobeerd die ook niks deed.

Zonder een schema en je sourcecode komen we niet veel verder denk ik.

Op 2 september 2005 21:22:07 schreef DIY:
Zonder een schema en je sourcecode komen we niet veel verder denk ik.

De code is als volgt (assembly)

code:


setporta EQU 85h
porta EQU 05h

	Org 00h
	bsf 03h, 5
	clrf setporta
	bcf 83h, 5
	clrf porta
	bsf porta, 0
	bsf porta, 1
	End

En het schema is als volgt:

http://members.lycos.nl/bliksem/PIC.JPG

Ik hoop dat je hier meer aan hebt. Als 5V voeding heb ik trouwens een lm7805 gebruikt met de nodige condensators. Die heb ik natuurlijk ook nagemeten en die werkt prima.

[Bericht gewijzigd door Bliksem op vrijdag 2 september 2005 21:50:26

Simulatie in MPLAB verloopt alvast goed, dan komt er inderdaad netjes een 1 op RA0 en RA1 te staan.

Vreemd :-)
Heb er verder ook geen verklaring voor, ben pas met PIC begonnen eigenlijk.

Je moet de comparator functie van de A poort uitzetten:

Zoiets: CMCON = 0x07

Maar ik ben geen Assembler-held dus zoek even met google op bovenstaande kreet.

Op 2 september 2005 22:57:12 schreef Rd12tf:
Je moet de comparator functie van de A poort uitzetten:

Zoiets: CMCON = 0x07

Maar ik ben geen Assembler-held dus zoek even met google op bovenstaande kreet.

Ik zal wel even kijken of ik iets in het datablad kan vinden, bedankt in ieder geval. Verklaart dit trouwens ook dat de oscillator niet werkt? Dit vindt ik namelijk nog wel het vreemdste.

Turbokeu

Golden Member

Op 2 september 2005 22:57:12 schreef Rd12tf:
Je moet de comparator functie van de A poort uitzetten:

Zoiets: CMCON = 0x07

Dit probleem is hier al 100 keer voorbij gekomen...

Zoals Rd12tf zei.
Je moet de (default) A/D convertorfuncie van PORTA verzetten naar digitale I/O:
MOVLW 0x07
MOVWF CMCON

CD :)

I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"

Je hebt MCLR tot ingang gemaakt en de interne oscillator aangezet. Als je de PIC onder spanning zet is MCLR een ingang geworden.

Waarschijnlijk lukt het programmeren niet meer, de truc is dan om 13V op MCLR te zetten *voor* er 5 volt op de voeding van de PIC staat.

//Edit: Dat bedoelde ik Turbokeu! :)

Op 2 september 2005 23:09:11 schreef Turbokeu:
[...]
Dit probleem is hier al 100 keer voorbij gekomen...

Zoals Rd12tf zei.
Je moet de (default) A/D convertorfuncie van PORTA verzetten naar digitale I/O:
MOVLW 0x07
MOVWF CMCON

CD :)

Bedankt voor de hulp dan, ik had natuurlijk eerst de search gebruikt maar omdat je honderden topics hebt met de kreet 16F628 erin (meestal in de trand van, gebruik een microcontroller zoals de 16F628) had ik dus niks nuttigs kunnen vinden. In ieder geval weet ik het nu en heb ik zo weer wat geleerd: ga er nooit vanuit dat dingen standaard uit staan want dat staan ze niet :)

Op 2 september 2005 23:14:45 schreef Rd12tf:
Je hebt MCLR tot ingang gemaakt en de interne oscillator aangezet. Als je de PIC onder spanning zet is MCLR een ingang geworden.

Waarschijnlijk lukt het programmeren niet meer, de truc is dan om 13V op MCLR te zetten *voor* er 5 volt op de voeding van de PIC staat.

//Edit: Dat bedoelde ik Turbokeu! :)

Het programeren ging nog prima hoor, want nadat ik hem opnieuw had geprogrammeerd (met een bij de fuses de externe oscillator en met gebruik van Mclr) dan zag ik deze netjes terug bij het uitlezen. IC-prog doet dit dus al automatisch waarschijnlijk :)

Iedereen in ieder geval bedankt voor de hulp, ik hoop dat het zo opgelost is.