External clock divider heeft minuten nodig voor output

Beste CO'ers,

Ik probeer al een dag een externe 10 MHz clock te delen
met behulp van een pic12F675.
De 675 loopt op de interne clock en volgens de datasheet
zou ie een 10MHz clock door kunnen laten.
Ik draai een simpele test, en pas na minuten krijg ik een
puls eruit, wie heeft dit eerder gezien.

Hier een stukje wat ik gevonden heb .

What does not work is using the one pin as a clock source for both the system oscillator and TIMER1 for the PIC12F675.

Using internal 4MHZ oscillator of the PIC12F675 and an external 10MHz oscillator to TIMER1 does work and measures the pulse width in the TIMER1 count register to +/- 0.1us.

[code="timer1 675 TEST"][/code]

Guus@Sint-Michielsgestel
Sine

Moderator

Je kunt je programma hier ook in code tags invoegen

*knip*

[Bericht gewijzigd door Sine op vrijdag 3 april 2020 00:50:59 (94%)

Sorry Sine, ik weet niet hoe ik code tags kan "invoeren"
Ik heb de versie gecorrigeerd, nu de nette uitvoering

Guus@Sint-Michielsgestel

Sine, zou je mijn rommelige versie willen verwijderen.
Bij voorbaat dank.

Guus@Sint-Michielsgestel
Arco

Special Member

Ik begrijp het niet erg. Wat probeer je te bereiken?
De interne osscillator is 4MHz, dus 10MHz gaat er nooit uitkomen. (hooguit fOsc / 4 = 1MHz)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Jawel, de 10MHz clock komt binnen op de externe ingang die rechtstreeks
Timer1 in kan.
kijk even in de laatste versie die ik gepost heb.
Die Sine bewerkt heeft is de zeer rommelige versie

Guus@Sint-Michielsgestel
Arco

Special Member

Wat ik in de datasheet zie: Timer1 werkt maar tot 2MHz zonder prescaler. Met prescaler wel hoger, maar je zet die nergens aan...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Arco, waar zie je dat in de datasheet ? ( Pagina )

Guus@Sint-Michielsgestel
benleentje

Golden Member

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"

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
Arco

Special Member

Code tags:
       [code=picbasic]

       ...code...
       [/code]

T1clock = 0.5 * TCy + 20nS = 520nS * 2 = 1040nS (~ 961kHz)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Sine

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%)

Guus@Sint-Michielsgestel

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
Guus@Sint-Michielsgestel
Anoniem

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%)

Guus@Sint-Michielsgestel
Arco

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%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Hoi Arco,

Ik draai op de 1MHz interne clock en zelfs dat werkt niet.

Guus@Sint-Michielsgestel

Het is net of ik een interrupt TMR1F mis

Guus@Sint-Michielsgestel

Je gebruikt geen interrupt!

Damn the torpedoes, full speed ahead!
Arco

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 - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Damn the torpedoes, full speed ahead!

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

Guus@Sint-Michielsgestel
Anoniem

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%)

Guus@Sint-Michielsgestel
Arco

Special Member

Kun je me aangeven hoe ik nu op interrupt basis kan werken ?

Interrupt weer aanzetten... ;) (en een interrupt routine maken)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com