tralala
Huidig project: Hexapod
Goedemiddag,
PIC: 18f2550
Programmeertaal: Proton PICBasic
Kristal: 20 MHz
Ik ben bezig met de 18f2550 maar hij gaat veel trager. Heb dus eerst even een blink programma gemaakt om het te checken en het is inderdaad zo. Hoe kan dat? Ik gebruik een 20 mhz kristal en heb dat ook in het programma staan.
Alvast bedankt
Dat hangt er in zijn geheel vanaf hoe je de klok in hebt gesteld, gebruik je de scalers, de pll etc.
tralala
Huidig project: Hexapod
DEVICE 18F2550
XTAL 20
DECLARE ALL_DIGITAL = true
WHILE 1 = 1
TOGGLE PORTB.7
DELAYMS 100
WEND
Kristal van 20 MHz zit via 2 * 22pf naar gnd.
Voor de rest heb ik niks ingesteld, zie code. Ik ging er van uit dat dat niet hoefde omdat het bij een 18f4550 ook werkt.
Edit: Portb.7 is aangesloten op een ledje, die dus te langzaam knippert.
[Bericht gewijzigd door tralala op (11%)]
tralala
Huidig project: Hexapod
Hoe kan ik die instellen, naar mijn weten doe je dit via 'CONFIG', maar dat kan niet bij de 16-bits (18f enz.) in PICBasic.
plantrekker
True story bro!
Idd, heb er ook eens lang naar gezocht, alles ging 4 keer te traag (wel bij een AVR) Een prescaler fuse stond standaard op 4 
De 18F2550 heeft een waslijst aan fuses.
Deze fuses komen stuk voor stuk tussen CONFIG_START en CONFIG_END.
bijv:
CONFIG_START
PLLDIV = 5 ; Divide by 5 (20 MHz oscillator input)
{andere fuses}
CONFIG_END
Gebruik de Fuse Configurator (Beta installeren).
Alle fuses nalopen aan de hand van de datasheet, checken wat de default waarde is, en eventueel de fuse zetten.
[Bericht gewijzigd door Henry S. op (17%)]
tralala
Huidig project: Hexapod
De beta is ondertussen geïnstalleerd en ook de fuse configurator. Ik merk in ieder geval verschil:P
Heb nu de volgende fuses:
Config_Start
PLLDIV = 5 ; Divide by 5 (20 MHz oscillator input)
FOSC = HS ; HS oscillator, HS used by USB
Config_End
Hij is nu alleen te snel, zijn dit wel de goede instellingen?
Edit: Even ergens anders alles overgenomen en geprobeerd, dit werkte inderdaad. Bedankt voor de hulp.
[Bericht gewijzigd door tralala op (13%)]
Meer fuses, of iets anders?
[Bericht gewijzigd door Henry S. op (42%)]
tralala
Huidig project: Hexapod
Die heb ik gebruikt:
Config_Start
PLLDIV = 1 ; No prescale (4 MHz oscillator input drives PLL directly)
CPUDIV = OSC1_PLL2 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
USBDIV = 1 ; USB clock source comes directly from the primary oscillator block with no postscale
FOSC = HS ; HS oscillator, HS used by USB
FCMEN = OFF ; Fail-Safe Clock Monitor disabled
IESO = OFF ; Oscillator Switchover mode disabled
PWRT = OFF ; PWRT disabled
BOR = OFF ; Brown-out Reset disabled in hardware and software
VREGEN = OFF ; USB voltage regulator disabled
WDT = OFF ; HW Disabled - SW Controlled
WDTPS = 1 ; 1:1
MCLRE = OFF ; RE3 input pin enabled; MCLR disabled
LPT1OSC = OFF ; Timer1 configured for higher power operation
PBADEN = OFF ; PORTB<4:0> pins are configured as digital I/O on Reset
CCP2MX = On ; CCP2 input/output is multiplexed with RC1
STVREN = OFF ; Stack full/underflow will not cause Reset
LVP = OFF ; Single-Supply ICSP disabled
XINST = On ; Instruction set extension and Indexed Addressing mode enabled
Debug = OFF ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
Config_End
tralala
Huidig project: Hexapod
Nu heb ik iets raars... Servo commando werkt niet goed meer, misschien een fout van de beta compiler?
1. Servo porta.0, 1500
2. dim ServoValue as word
ServoValue = 1500
Servo porta.0, ServoValue
3. Servo porta.0, ServoValue + 1
1 werkt
2 Werkt niet, maar als ik er '+ 1' bij toevoeg, zie 3, werkt het weer wel...
Bij 2 schokt de servo een kant op.
tralala
Huidig project: Hexapod
De servo draait per ongeveer 10 graden naar een kant totdat hij vast staat. Dat gaat een beetje schokkerig.
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Hmmm, en als je +1 er bij doet, dan is het over?
Kan het geen toeval zijn of is het 100% zeker?
Ik kan me haast niet voorstellen dat het aan de software ligt, ben anders benieuwd hoe of de assembler listing er uit ziet die Proton van je programma heeft gemaakt.
Ik ga hier ook even het één en ander testen.
EDIT:
Heb hier net getest (met de servo van de spiegel in mijn beamerkast).
Ik zie geen verschil.
Heb je de voeding goed voor elkaar?
Servo's kunnen nog wel eens grote stromen opnemen.
Plaats eventueel een 10 Ohm weerstand o.i.d. in serie met de voeding van de servo om dat een beetje in te dammen.
Meer info hierover + schema's:
www.picbasic.nl/beginners8.htm