PIC 16F877A vraagje

Beste mede forum leden,

Recentelijk ben ik begonnen met de PIC processoren. Aangeschaft heb ik de Wisp628 programmer en een PIC16F877A controller. Deze heb ik aangesloten op een breadboard doormiddel van een 5V gestabiliseerde voeding. Ik heb een programma geupload naar de processor maar deze wil niet draaien. Wat doe ik verkeerd? Hieronder een afbeelding van de opstelling en het stukje programma wat ik gebruikt heb.

Bedankt voor de hulp alvast!
Gr,
Bart

http://snap24.photobox.co.uk/73341466b263202ee9f968b68d5df5bf782232d05ecd65fede30c336.jpg

Verbonden pinnetjes van links-boven naar rechts onder:
31: gnd, zwart wisp
32: 5V, rood wisp
36: GND, wit wisp
39: groen wisp
40: blauw wisp

14: clock, 22nf
13: clock, 22nf
3: led2
2: led1
1: 5V via 10K, geel wisp

De gebruikte code ziet er als volgt uit:

code:


InitPortA	EQU 	85h
PortA		EQU	05h					
		ORG	00h		; choose begin address
		BSF	03,5		; select bank 1
		CLRF	InitPortA	; direction of portA: output 
		BCF	03,5		; select bank 0
EndlessLoop	MOVLW	01h		; load value 1 in the W register
		MOVWF	PortA		; put the value in portA --> Led On
		GOTO	EndlessLoop
		END			; end program

Gooi je kristal eens direct naast je microcontroller, zonder de draden ertussen.

Mocht dit niet helpen, probeer dan eens een andere kristal mode (HS of XT). Je kunt dit instellen bij je programmer (zogenaamde fuses).

Verder, is het programmeren helemaal goed gegaan? Geen foutmeldingen oid?

- editje -
reset naar ground via 10k? Volgens mij staat ie dan constant in reset. Gooi uhm es naar de 5V met die 10k weerstand.

[Bericht gewijzigd door KillerB the Supreme op vrijdag 1 september 2006 17:33:05

Nee het programmeren leverde geen foutmeldingen op, de opmerking van gnd is terrecht want dat was een tiepfoutje van mij, moest natuurlijk 5V zijn.

De programmer upload netjes, verifieerd netjes en dan gebeurt er gewoon helemaal niks met het ledje, wat volgens mij moet gaan branden.

Ook het kristal geeft al op meerdere plaatsen gestaan, waarbij ook direct naast de pinnetjes, wat ook geen resultaat opleverde.

Misschien zie ik iets over het hoofd?

In z'n algemeenheid: pak eerst een hex file van http://www.voti.nl/blink , dan weet je of je hardware werkt. Experiementele hardware + experimentele software samen debuggen is voor gevorderden.

In dit geval: poort A is default analoog. Probeer eens op pin RB0. Lees daarna de datasheet over de A/D converter en de comparator, dan kan je RA0 nog eens proberen.

Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog

Mijn 16f877 loopt niet als de poorten niet met een pull down naar gnd verbonden zijn(ongebruikte)

Je fuse moet op XT staan.

Verder lijkt het mij handig om de analoge poorten even digitaal te maken(cmcon register)

wat zijn je berekeningen van de voorschakelweerstandjes?

ontkoppel even de ledjes en meet of je 5V hebt tov GND op de uitgangen van de PIC waar normaal de ledjes aangesloten worden.

[Bericht gewijzigd door shortcircuit op vrijdag 1 september 2006 18:12:10

Op 1 september 2006 18:03:39 schreef The Headhunter:
Je fuse moet op XT staan.

Hangt maar helemaal af van het type kristal en de frequentie. Over het algemeen word gezegd tot 4 MHz -> XT, boven de 4MHz -> HS. Maar sommige kristallen houden zich niet aan deze regel ;)

ik ben blij dat ik met picbasic werk
al die ingewikkelde assembler code

voordeeltje:
en ik heb full versie proton ide se

Een zak tuinaarde opescheuren

Beste Bart,

Ik werk heel veel met de pic16f877.
Dit korte programmaatje gaat niet werken.
PortA staat standaard ingesteld als A/D converter.
Om portA als een uitgang te gebruiken om bijvoorbeeld een LED aan te sturen moet je eerst e.e.a. instellen zie datasheet(DS39582B blz.128).

Als ik je een advies mag geven, lees eerst de datasheet helemaal door. Het is wat werk maar zo leer je de PIC wel kennen en loop je veel minder snel tegen "onverklaarbare" problemen op.

Ik maak geen fouten, hooguit een vergissing.

Ten eerste bedankt voor alle snelle reacties en meedenkhulp!!!! Waardeer het zeer!

Heb hem nu helemaal volgens de voti website gebouwt (http://www.voti.nl/blink/pics/bb-f877-s-big.jpg), inclusief het kristal op die plaats. Heb om te testen ook de blink hex van deze site geplukt.

Denk dat het aan de programmeer wijze ligt, ik gebruik IC-prog 1.5D volgens het onderstaande stappenplan (Settings: JDM programmer op COM2 (is USB -> Serieel).
1) Erase All
2) Program All -> IC-Prog geeft aan dat alle data geferifieerd is.
3) Read All -> IC-Prog geeft alleen maar waarden van 3FFF aan op iedere geheugenplaats van de PIC. Ook de occilator wordt weer fijn terug gezet naar RC.

Programmeer met de opties:
Ossilator -> XT
Write Enabled -> WRT OFF en 0000h - 0FFGh (beide zelfde resultaat)
en het enige checkboxje wat ik aanzet is PWRT.

Gebruik eens de wisp software of bumblebee

-

Op 1 september 2006 19:01:20 schreef Bart010:
ik gebruik IC-prog 1.5D

ic-prog met een wisp628????? dakanniewerreke!

Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Een zak tuinaarde opescheuren

Ik zie de 100nF onstoringscondensator niet op de voeding van de PIC, beste plaats ervoor is onder de PIC zelf, zit die daar? (zonder kan ook rare miserie geven, niet dat dit hier het probleem lijkt te zijn, maar het is wel redelijk belangerijk)

AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor

Oeps!! Wist niet dat het niet kon met ic-prog... Foutje...

Over die condensator... Heb het kitje van VOTI gekocht (http://www.voti.nl/wwpsu/n_index.html) waar deze condensator volgens mij al in zit.... (Don't shoot me if i'm wrong)...

Heb nu gebumbelbee-ed, progje staat erop -> verify -> ok -> run -> niks... snik...

Ik zie echt iets over het hoofd denk ik, is altijd als ik aan het programmeren ben dan staat er weer een puntcomma ergens verkeerd ofzo... Dus misschien dat ik hier ook weer wat verkeerd heb neergezet...

Maar eniewee het is nu tijd voor het vrijdagavondbier!

Heel erg bedankt voor jullie tijd/moeite/hulp in ieder geval alvast!!!

Elk IC moet zo'n 100nF hebben.
een spanningsregelaar is ook een IC.
Het ding moet zo dicht mogelijk bij de voedingspinnen van het IC.