Hallo,
Zoals je in het onderwerp kan lezen ben ik bezig met het maken van een 10Mhz referentie signaal. Hiervoor gebruik ik een isotemp-131 VCXO en een Rockwell GPS TU00-D200-401 module om de boel te regelen, gebruik ik een atmega168 als DPLL.
Nu heb ik het volgende probleem ik kom 24Hz tekort om 10Mhz te meten tussen 2 opgaande flanken van het 1pps signaal. Nu zijn de gps module(-+1us) en xtal(20ppb) veel te nauwkeuriger om een fout te hebben van 24Hz. Dus zou je zeggen dat het aan de controller ligt. Ik meet continue via het Input compare register. Daardoor is het ook niet mogelijk dat ik 24 pulsen verlies, die pulsen moeten ergens blijven. Dus daar kan het eigenlijk ook niet aan liggen. Ik zit een beetje vast.
Het is een beetje een open vraag. Maar heeft iemand nog een suggestie waar ik deze fout kan zoeken? Ik heb ook geen meetapperatuur om te controleren of ik daadwerkelijk foutmeet.
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Hmm, ok. Ik zie nou wat je doet (staat niet in je post). Je laat de 16bits counter rondlopen, 1 sec lang. De counter gaat 152 keer over de kop en staat na 1 sec op 38528 (zou moeten).
Is de fout constant 24? Of jittert dat? Ik begrijp dat de 1pps een nauwkeurigheid van 1us heeft? Dat zijn wel 100 pulsen van je oscillator. Alleen moet dat wel een jitter zijn die binnen 1 sec meetbaar is, anders zou je het niet zien in je meting.
Dan heb je het over een compare register. Lees je daarmee wel de lopende waarde van de counter? Heb je heeeeeel goed de spec van de controller gelezen ook? Vaak staat er ergens stiekem een opmerking die nietszeggend lijkt, maar ineens het "vreemde" gedrag verklaart.
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Interrupt neem ik aan (?). In de ISR de huidige stand van de counter uitlezen.
Maar inderdaad, wat meer info over wat je doet is wel handig TS
ElektronThomas
Denk simpel, doe moeilijk
Volgens mij wil de TS juist een 10 MHz signaal opwekken met een avr (als PLL?), met als referentie een 1 Hz signaal van de GPS. Verder zou iets van source code makkelijk zijn want ik heb eerlijk gezegd nog geen idee hoe je die 1 Hz als ijksignaal wilt gebruiken om de boel te regelen. Kan je niet gewoon in ASM je pin om de buurt aan en uit zetten? Dan heb je 2 instucties nodig voor een periode (toch?) en bij een 20 MHz klok komt dat neer op een blokgolf van 10 MHz.
Edit:
Is het soms nogsteeds hetzelfde als hier:?
http://www.circuitsonline.net/forum/view/80411
Op 1 januari 2010 19:19:49 schreef flipflop:
Dan heb je het over een compare register. Lees je daarmee wel de lopende waarde van de counter? Heb je heeeeeel goed de spec van de controller gelezen ook? Vaak staat er ergens stiekem een opmerking die nietszeggend lijkt, maar ineens het "vreemde" gedrag verklaart.
Hier ben ik idd ook bang voor. Maar ik heb het nog niet gevonden in de datasheet.
Ja de fout is constant 24hz +-1.
Voor de duidelijkheid hoe ik het meet:
Ik heb een 16bit timer. Die loopt op de klok frequentie(10Mhz).
Iedere keer als er een opgaande flank is van het 1pps signaal wordt het icp interrupt gestart.
In de interrupt wordt het verschil van de vorige trigger en de huidige genomen. Dat zou 38528 moeten zijn en 152 overflows, maar die doen er niet toe.
@ElektronThomas
Ander probleem maar zelfde project: http://www.circuitsonline.net/forum/view/80411 Dit is in principe de code. Alleen is de prescaler niet 1024 maar 1.
hmm, ik heb hiet net hetzelfde project gemaakt, maar dan met een DSPic (speciaal deze genomen omdat hier een 32 bit teller in zit)
ik heb wel de apparatuur om dit te controleren,
het eenvoudigste is een separaat gps 10mhz te nemen en deze op een 2 kanaals scoop te zetten, (anders moet je met je materiaal in de auto/tgv springen en naar heist op den berg) komen
ik ben wel eens geinteresserd hoe jij dit concept hebt opgebouwd, bij mij is dit volgens EUCM methode
Carl
Wat is de EUCM methode? Ik maak een digitale PLL.Je hebt helemaal geen grote timer nodig. Want per 1pps is de fout niet groter dan +-1.
Het probleem is dat ik niet de meetapperatuur heb, om te controlleren of mijn xtal of 1 pps signaal daadwerkelijk correct zijn. Niet dat ik denk dat het meest waarschijnlijk is dat het, de microcontroller is.of het 1pps signaal is niet helemaal 1pps+1us want ik heb wel een beetje een opsure gps module gekocht via ebay.
[Bericht gewijzigd door Henry S. op (39%)]
Ik heb een tijde terug dit ding gebouwd :
http://ve2zaz.net/GPS_Std/GPS_Std.htm
werkt perfect, een goede OCXO is erg belangrijk, ik heb mijn Isotemp OCXO134-10 nog eens extra ingepakt in een blok schuim, dat scheelde bijna de helft aan "stook" stroom en hij blijf een stuk stabieler.
Goeie vraag, deze werd ooit aangeboden via V&A ik meen dat ie van motorola is, maar pin me daar niet op vast.
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Ik ga een beetje in "gok-mode" omdat ik de avr architectuur niet zo paraat heb. Maar je gebruikt een compare register. Is het niet zo dat de counter bij een compare match gereset wordt? En dat dat dan net een cycle eerder gebeurt dan dat je denkt? (1 cycle verklaart het nog niet, maar ik denk maar even hardop).
EUCM.... sorry, een foutje van mij.. :Extreme Ugly Construction Method, Met andere woorden...gaatjesprint
in gebruik de Oncore module, en ondertussen ook een module (ik dacht VC1) die ik in meppel op de hambeurs heb gekocht
de 1 pps kan je gemakkelijk controleren. als je 2 ontvangers aansluit, kan de die pulsen tegenover elkaar controleren. veel foutmarge zit er niet op, geloof me maar vrij; ik heb hier al metingen gedaan tot 2 getallen na de comma, (meettijd 100 seconden)
ik kan hier ondertussen alle freq's genereren van 0.000001 mhz tot 18 Ghz, en in bepaalde ranges naukeurig tot op 0.1 hz
ik verwacht eerstdaags nog een tweede gps referentie om deze tegenover elkaar te controleren. en een counter met externe ref ook tot 18 Gig
ik heb wel grote verschillen gemerkt in verschillende gps ontvangers. de opgaande flank van de 1pps is gelijk (binnen een marge en µsec's) maar de lengte durft nogal verschillen.
pas wel op dat je de ontvanger lang genoeg onder spanning laat staan, een spanningsdip kan de ontvanger resetten, en bij oudere ontvangers kan het een hele tijd duren voor die de nodige sattelieten ontvangt, en daar haalt die nu net die naukeurigheid uit.
Vooral LANG meten, zeer traag werken... beter een meettijd van 100 of 1000 seconden dan snel werken... dit proces heeft tijd (nodig) maar is dan wel stabiel. als je een cylus wat teveel meet, is de volgende gegarandeerd kleiner. (ik bedoel 10.000.000 , 10.000.001, 9.999.999, 10.000.000 geeft zogezegt een foutmeting, maar is gemiddeld toch een normale waarde) Ik gebruik speciaal deze DSPIC om 32 bit te kunnen tellen...
de software is geschreven (en nog steeds in ontwikkeling) in CCS
@ sine, dit doc heb ik nog niet gelezen...bedlectuur voor vannacht
Heb je je OCXO en GPS al eens door iemand anders laten meten om te zien of ze aan de specs voldoen? De OCXO zou natuurlijk 24 Hz kunnen afwijken. En is je GPS al gelocked? Simpele dingen natuurlijk, maar je hebt niet gemeld of je deze had gechecked.
en waar ik net aan denk, maar in je interupt kan je ook heef wat fout doen, ...echt zo kort en snel mogelijk houden. hierhad in in het begin ook problemen mee
hier de mannier hoe ik de int verwerk :
/////////////////////////////////////////////////////////////////////////////////////
/****************** 1 pps van GPS *******************/
#int_ext0
void EXT_ISR()
{
if (teller <99)
{
freq = get_timer23();
measfreq = freq-freqold;
freqold = freq;
teller++;
}
ELSE
{
freq = get_timer23();
set_timer23(0);
teller=0;
}
}
/////////////////////////////////////////////////////////////////////////////////////Op 2 januari 2010 00:20:56 schreef jojo:
Heb je je OCXO en GPS al eens door iemand anders laten meten om te zien of ze aan de specs voldoen? De OCXO zou natuurlijk 24 Hz kunnen afwijken. En is je GPS al gelocked? Simpele dingen natuurlijk, maar je hebt niet gemeld of je deze had gechecked.
Simpel? Ik ken niet zoveel mensen die instaat zijn om zo nauwkeurig te meten. Maar als iemand in de regie leiden dit wel kan. Kom ik graag eens langs.
@on7nh
Kan je wat beter uitleggen waar de fout nou zit in het 1 PPS signaal. Of weet je er een internet referentie? Mijn interrupts zijn bijna even kort. Dat had ik eerder niet zo en daardoor had ik echt rare problemen. Zie andere topic: http://www.circuitsonline.net/forum/view/80411
Ik heb op ebay voor 20 euro een gps ontvanger en xtal gekocht. En heb een beetje gaan knutselen. Bij mij zit het ook op gaatjes board. Er zijn hiervover veel projecten op het internet. Maar als goede engineer denk ik, dat ik het beter kan. Ik wil dat als er geen gps signaal is, dat hij de laaste bekende correctie toepast en dat doet geen enkele internet project. Maar als het klaar ga ik mijn project online zetten. Dus als er mensen zijn die er ook mee willen spelen dan zal ik de info tot nu toe alvast online zetten.
Op 2 januari 2010 11:31:15 schreef MegaVolt:
[...]
Simpel? Ik ken niet zoveel mensen die instaat zijn om zo nauwkeurig te meten. Maar als iemand in de regie leiden dit wel kan. Kom ik graag eens langs.
Ah, met simpel bedoelde ik de "simpele gedachte" dat het mogelijk is dat spul niet 100% goed is, niet over een simpele bouw of meting 
Op 1 januari 2010 23:57:10 schreef on7nh:
ik heb wel grote verschillen gemerkt in verschillende gps ontvangers. de opgaande flank van de 1pps is gelijk (binnen een marge en µsec's) maar de lengte durft nogal verschillen.
Voor zover ik weet is ook enkel de eerste flank gedefinieerd van de 1pps puls en moet je dus ook enkel daar naar kijken.
Op 2 januari 2010 11:31:15 schreef MegaVolt:
[...]Simpel? Ik ken niet zoveel mensen die instaat zijn om zo nauwkeurig te meten. Maar als iemand in de regie leiden dit wel kan. Kom ik graag eens langs.
In principe kan ik het, maar ik geef er geen garantie op;)
Heb een van m'n counters geijkt bij het NMI, maar zelfs zonder ijken liep bij maar een paar ppm verkeerd.
Op 2 januari 2010 12:25:20 schreef pe5ocb:
In principe kan ik het, maar ik geef er geen garantie op;)
Heb een van m'n counters geijkt bij het NMI, maar zelfs zonder ijken liep bij maar een paar ppm verkeerd.
Een paar ppm bij 10Mhz is 20 hz en dat is nauw net de orde grote van mijn probleem. Dus ik vrees dat, dat niet goed genoeg is. Meetfout mag maximaal <1hz zijn bij 10Mhz en bij 1pps <1us. Dat is best wel nauwkeurig!
Maar dank voor het aanbod!!
Ik ben nog eens door de code heen gegaan maar ik kan niks meer verzinnen. Wellicht ziet iemand nog wat slims.
volatile static uint16_t XTAL_pulse=0;// ICP value
volatile static uint16_t timer_icp_last;// last icp register value
volatile static uint8_t timer_icp_update; // 1 = interrupt is triggered. >1 overflow.
// ICP match 1pps signal
ISR(TIMER1_CAPT_vect)
{uint16_t value;
value=ICR1;
timer_icp_update++;
if (value > timer_icp_last) XTAL_pulse=value -timer_icp_last;
else XTAL_pulse=(0Xffff - timer_icp_last) + value;
timer_icp_last=value;
}
int main(void)
{
char tekst[17];
CLKPR = 0; // Set max. system-clk
TCCR1A = 0;
TIMSK1 = (1 << ICIE1); // ICP-interrupt enable
TCNT1 = 0;
ICR1 = 0;
TCCR1B = (1 << CS10)| (1 << ICES1); // Prescaler = 1. pos edge trigger.
sei();
LCD_Init ();
while (1) {
if (timer_icp_update != 0) {
timer_icp_update = 0;
sprintf(tekst, " %05u \n",(unsigned) XTAL_pulse);
LCD_Print (0,(char *)tekst);
}
}
}
[Bericht gewijzigd door Henry S. op (52%)]
Op 2 januari 2010 14:00:08 schreef MegaVolt:
[...] en bij 1pps <1us. Dat is best wel nauwkeurig!
<100nS volgens mij. En inderdaad, dat is best nauwkeurig.
euh...wacht even,
meet jij met een pic/avr en een gps ontvanger de frequentie van een xtal-oscillator die op 10 mhz draaid????
deze kan perfectr 20 hz ernaast zitten hoor
ben je zeker dat die 10 meg juist is?
Ik begrijp je vraag niet. Maar ik gebruik dit xtal: http://www.isotemp.com/Information/OCXO%20131.pdf
Volgens mij mag de maximalen fout (worstcase) enkele hz mogen zijn.
[Bericht gewijzigd door Henry S. op (48%)]
Als het kristal daadwerkelijk een kristal is van 20ppb dan denk ik niet dat het aan het kristal kan liggen, als en slechts als het effectief zo een kristal is uiteraard. Volgens de datasheet die MegaVolt hier geplaatst heeft lijkt alles dus in orde met het kristal.
@MegaVolt, heeft de fout niets te maken met het feit dat je enkele µS verliest in uw interruptroutine? Want 24Hz op een frequentie van 10MHz is maar een kleine fout en het zal waarschijnlijk maar een klein detail zijn waar het om gaat.
[Bericht gewijzigd door Mathieuke op (31%)]