Hallo,
ik ben redelijk nieuw hier en ben net begonnen met wat experimenteren met uC's.
nu ging dat goed, tot nu toe.
ik ben begonnen met het bouwen van de RCD Programmer, deze werkt goed.
het programmeren van de pic doe ik met PICProg4U.
voor het programmeren van de code gebruik ik PIC Simulator IDE (test versie) in basic (had hier al wat ervaring mee)
om te beginnen had ik de 16F628 (zonder A) deze heb ik meerdere programma's voor geschreven en succesvol getest.
nu wilde ik gaan testen met AD, heb dus de 16F818 besteld.
deze lijkt vrijwel op de 628 alleen heeft deze 5x AD.
nu heb ik eerst om te testen een programma geschreven om wat leds aan te sturen. het programma geeft geen fouten en heb ik succesvol gesimuleerd met PIC simulator IDE.
hierna heb ik de hex file in de 818 geladen.
tot hier geen problemen of foutmeldingen.
maar wanneer ik deze in een simpel schema met 3 leds probeer te testen doet deze niets.
het programma wat ik heb geschreven laat 3 ledjes één voor één branden met een variabele tussenpauze. deze tussenpauze neemt per keer af, zodat de leds steeds sneller gaan "lopen" tot deze bijna allemaal tegelijk aan lijken te staan en dan begint hij opnieuw.
het enige wat hij nu doet is laat de eerste of de eerste twee leds branden en verder gebeurd er niets.
dit programma had ik geschreven voor de 628 en getest, dit werkte allemaal goed.
nu is mijn vraag, is mijn uC niet goed?
het programmeren gaat elke keer goed, geen foutmeldingen ofzo, getest met PICProg4U en met WinPic, programmeren gaat goed, daarna elke keer het zelfde.
of waar ik dus aan zit te twijfelen, heb ik ergens een instelling niet goed, waardoor de 628 wel goed gaat maar de 818 niet?
Sorry, heb niet helemaal goed gekeken.
had de pic geprogrammeerd uitgaande van een klokfrequentie van 4Mhz. toen ik de pic even aan had laten staan, zag ik dat de leds wel schakelden, alleen ongeveer 100x te langzaam.
toen ik de datasheet er bij pakte zag ik dat de standaard frequentie 31,25Khz is.
nu had ik wel 4Mhz in het programma gezet, alleen op een of andere manier komt dit niet aan in de pic. misschien een fout in PIC Simulator IDE of een fout van mij (zal wel)
dit is de code die ik gebruik:
Define CLOCK_FREQUENCY = 4
Config PORTB = Output
Dim aftel As Byte
aftel = 250
loop:
While aftel > 10
RB6 = 0
RB4 = 1
WaitMs aftel
RB4 = 0
RB5 = 1
WaitMs aftel
RB5 = 0
RB6 = 1
WaitMs aftel
aftel = aftel - 10
Wend
aftel = 250
Goto loop
dit is alle code die ik gebruik, de rest staat op de default waarde.
bij de 628 had ik de 1e regel er ook niet bij. en die werkt perfect.
ik verdenk ook dat de interne klok nog op 31,25Khz staat, maar dit krijg ik dus niet op 4 of 8 Mhz.
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
> ik verdenk ook dat de interne klok nog op 31,25Khz staat,
klopt
> maar dit krijg ik dus niet op 4 of 8 Mhz.
lees de datasheet, IIRC hoofdstuk "special features of the CPU".
Het is gelukt.
de interne klok stond op 31,25 Khz.
nu draait hij op 8 Mhz en werkt hij zoals hij hoort.
heb dit toegevoegd i.p.v. Define CLOCK_FREQUENCY = 8
OSCCON.4 = 1
OSCCON.5 = 1
OSCCON.6 = 1
ik weet niet of dit helemaal zo netjes is, maar het werkt.
bedankt allemaal.