Arco, waar zie je dat in de datasheet ? ( Pagina )
Arco, waar zie je dat in de datasheet ? ( Pagina )
Sorry Sine, ik weet niet hoe ik code tags kan "invoeren"
Dat staat gewoon boven je tekst invoer vak. Het is het symbool met de 2 rode <> tekens erin. Nadat je code hebt gekopieert en geplakt kan je het daarna selecteren en gebruik je dat symbool en kies je de gewenste opmaak in dit geval "PIC assembly"
Special Member
Moderator
Precies, en je plakt het er gewoon als text in, dus je hoeft het niet te uploaden.
Benleentje en Arco bedankt,
Ik ben nu bezig met een 4MHz interne clock,
nog geen resultaat.
Zie de Basic file.
[Bericht gewijzigd door Waters op vrijdag 3 april 2020 10:01:50 (89%)
pic basic code:
'****************************************************************
'* Name : 10MHZ EXTERNAL CLOCK DIVIDER *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2020 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 02-04-2020 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
; PIC12F675 : +--v--+
; +5V [ ] GND
; <[ ]< =
; <[ ]<
; (met externe 10k pull-up!) >[ ]> Portb.2 output 65 ms
; +-----+
Device 12F675 ;Er wordt een 12F675 8-pins PIC gebruikt
Config INTRC_OSC_CLKOUT, WDT_OFF, PWRTE_ON, MCLRE_OFF
XTAL = 4
CMCON = %00000111;
PORTB = %00000000;
TRISB = %00111010; B5 ingang 10 MHz, B1 ingang 1sec clock , B4 input A/D
INTCON = %11000000 ; Gie ON, GPIE ON
T1CON = %00000001 ; Timer1 = on ,
PIR1 = %00000000;
PIE1 = %00000001;
ANSEL = %00000000;;
OPTION_REG = %10000000
Dim TMR1F As PIR1.0
Dim TMR1E As PIE1.0
TMR1E = 1
DelayMS 1000
WACHT: ; Met een 1 MHz input , verwacht ik een
TMR1E = 1 ; 65.365 ms delay, dat klopt wel als ik tussen 1 en 5 minuten wacht.
While TMR1F = 0 ; wacht op flag
Wend
PORTB.2 = 1 ; flag geweest
DelayMS 1
PORTB.2 = 0
TMR1F = 0
INTCON = %11000000
GoTo WACHT
TMR1CS staat bij u op default, dus TMR1 telt Fosc/4 en niet T1CKI
.
Verder heeft Arco mooi voorgerekend dat zonder prescaler voor T1CKI de max freq 1MHz (Fosc/4) bedraagt, dit op voorwaarde dat duty 50% is
.
Dus begin het experimenteren met tellen van lage frequenties ...
Verder zie ik nog overbodige instructies die alleen maar vertragen en mis ik een ISR
Hoi CJ
Zelfs dit kleine stukje code draait niet.
Ik draai dan op de 1 MHz interne clock
Wat mis ik ?
pic basic code:
WACHT: ; Met een 1 MHz input , verwacht ik een
TMR1E = 1 ; 65.365 ms delay,
While TMR1F = 0 ; wacht op flag
Wend
PORTB.2 = 1 ; flag geweest
DelayMS 1
PORTB.2 = 0
TMR1F = 0
INTCON = %11000000
GoTo WACHT
[Bericht gewijzigd door Sine op vrijdag 3 april 2020 16:19:35 (3%)
Special Member
Weet je zeker dat RB2 niet hoog is geweest? (1mS is erg kort)
Waarom neem je zo'n trage pic als je met hoge frequenties wilt werken? (een nieuwe als de 12F1572 loopt op 32MHz en kost maar de helft...)
Neem voor testen met de 675 een lagere frequentie. (is gegarandeerd tot ~961kHz, niet tot 1 MHz, ik zou met 100 of 500kHz beginnen)
[Bericht gewijzigd door Arco op vrijdag 3 april 2020 13:29:05 (25%)
Hoi Arco,
Ik draai op de 1MHz interne clock en zelfs dat werkt niet.
Het is net of ik een interrupt TMR1F mis
Je gebruikt geen interrupt!
Special Member
Nee,
Maar pollen zou (hoewel ongebruikelijk) ook moeten werken...
Interrupt enable moet dan wel uit staan.
[Bericht gewijzigd door Arco op vrijdag 3 april 2020 15:57:29 (24%)
Arco,
Je hebt gelijk, ik moest TMR1E uitzetten om de puls te zien.
Dit is een klein stapje vooruit na een dag zwoegen
Kun je me aangeven hoe ik nu op interrupt basis kan werken ?
Dus nog met de 1MHz interne clock .
In mijn geval ON INTERRUPT GOTO WACHT
Maar pollen zou (hoewel ongebruikelijk) ook moeten werken...
Interrupt enable moet dan wel uit staan.
Je hebt gelijk, ik moest TMR1E uitzetten om de puls te zien.
Waarom? Omdat anders de controller op zoek gaat naar de ISR (die TS niet had)
GIE of PIE uitzetten zou in TS zijn geval hetzelfde resultaat hebben dan TMRE1 uitzetten?
Of heeft dat een andere reden? Wat weet of zie ik dan niet?
Ik heb het inmiddels werken met een 10 MHz externe input op B5
De processor loopt op de interne 4 MHz clock.
Ik kan nu pulsen opwekken om de 6.5 ms ( TIMER1 die rondloopt )
Er komt om de seconde ook een puls uit voor sync met de GPS
Deze loopt nog niet op tijd
[Bericht gewijzigd door Waters op vrijdag 3 april 2020 20:30:32 (16%)
Special Member
Kun je me aangeven hoe ik nu op interrupt basis kan werken ?
Interrupt weer aanzetten... (en een interrupt routine maken)
Golden Member
Off topic:
Fijn dat dit weer code genoemd wordt, ik word nie goe van het woord "sketch"
Sorry voor de interruptie ...
Special Member
Fijn dat dit weer code genoemd wordt, ik word nie goe van het woord "sketch"
Met pics hoef je geen toneel (scetches) te spelen...
De PIC12F675 draait nu met een 10 MHz externe clock via EXTRC_NOCLKOUT.
Dit is niet te vinden in de datsheet, alleen EC.
Ik ben er blij mee, ik had verwacht dat EXTRC_CLKOUT zou werken,
en dat werkt ook,maar dan komt er op B4 de 1/4 clock uit
Special Member
De uitgang is de instructieclock, die is altijd fOsc/4.
Externe RC oscillator is een relikwie uit 't verleden dat niemand meer gebruikt. (onnauwkeurig, temperatuurgevoelig,...)
Is er nog steeds voor backwards compatibility...
Hi Waters,
Ik had je in een ander topic gevraagd me een pm te sturen zodat ik je de door mij naar Basic vertaalde code van die canadese gpsdo kon sturen..... maar het bleef stil...
Heb je nog interesse?
Soldeer smurf, Ja laat maar komen.
Je kunt altijd van anderen leren
Hoi soldeersmurf,
Ik dacht dat mijn email zichtbaar was, dus niet.
Heb dit aangepast.