01-15-2025, 08:27 PM (This post was last modified: 01-15-2025, 08:32 PM by mikikg.)
Hmm, ohrabrujaća okolnost što tako radi i kod mene sa 2.5Hz-2.5kHz to mi je greška u kodu ali mora da radi i 1PPS na RA1, to ide preko flip-slop iz CLC-a i to je specifična funkcija za taj PIN.
Probaj sa 20kHz na GPS ulaz, tada je sinhronizovan i treba sve da radi lepo i jedino tada STATUS LED ne blinka, svetli konstatno.
Program stalno proverava RA5/RC5 clock ulaze (meri njihove frekvencije), ispisuje u debug konzoli izmerene frekvencije i radi logiku prebacivanja (sel=1,2,3,4) na osnovu toga.
01-16-2025, 09:53 AM (This post was last modified: 01-16-2025, 09:56 AM by gorso69.)
Program sam skinuo sa ovog linka i na njemu su sva objašnjenja data kao i koje MCU podržava http://kair.us/projects/pickitminus/
Može se koristiti PICkit 2 i PICkit 3 programator.Bitno je samo pre startovanja programa da se poveže programator sve sa MCU koji se programira.Kada se program startuje on sam detektuje koji je programator povezan i koji se MCU programira ili čita.Programirao sam PIC16F17125 sa PICkit 3 sad sam probao čitanje sa PICkit 2.Unos HEX a je standardno Import HEX.
01-16-2025, 02:45 PM (This post was last modified: 01-16-2025, 03:01 PM by mikikg.)
U prilogu ispravljen program, uprostio sam logiku, proverava na 2 situacije, ako ima 20kHz sa GPS njega primarno bira, ako ga nema ili je druge vrednosti ne uzima u obzir, onda proverava da li ima 26MHz sa TCXO ulaza i njega koristi kao rezervni (tu može i OCXO ko voli i bilo koje druge frekvencije) i ako nema ni njega onda prelazi na interni.
01-17-2025, 12:48 AM (This post was last modified: 01-17-2025, 01:38 AM by mikikg.)
Odlično, to je taj sklop generalno i program za vremensku bazu, u ovoj temi specifično smo podesili sve te delitelje za taj opseg frekvencija od 5Hz do 5kHz jer se tako uklapa u Borin frekvencmetar.
Sve ostale kombinacije sa oscilatorima i drugim frekvencijama su moguće sa tim i sličnim PIC-evima, pravilo je samo da se ovde uglavnom samo DELI na niže neka ulazna frekvencija preko binarnih i/ili dekadnih brojača kako bi se dobile recimo frekvencije od 1:4 pa na niže, 1:5, 1:6, 1:7, 1:8, 1:9, 1:10 ... itd.
Ulaz za taj PIC gde je TCXO ili OCXO ili bilo šta drugo može da radi do 60MHz ulazne frekvencije, više nego dovoljano za razne oscilatore ali izlazne frekvencije su tada samo sa celobrojnim vrednostima deljenja (integer mode) i tada radi sve sinhrono i tačno onako kako dolazi clock, kao da je to napravljeno sa CMOS kolima ti delitelji - bukvalno, sav HW radi na ivicu ulazog clock-a, ne utiče program na te akcije.
Interni oscilator je tu samo da bi pratio te funkcije gde koji clock postoji i vidite u programu relativno širok opseg hvatanja jer taj interni R/C oscilator dosta šeta zbog teperature i drugih faktora i generalno zbog njega treba širi opseg hvatanja da bi lepo detektovao te frekvencije ali dalje samo prebacuje kao preklopnikom ulaz za CLOCK na HW nivou interno sa jednog ili drugog izvora (CLCnSEL0=x) i sve je i dalje sinhrono sa tim internim brojačima/deliteljima, nema veze interni clock od MCU, postoji eksplicitna opcija za sinhronzaciju koja se ovde ne koristi, i to je generalno delitelj sa 0ppm greškom!
Koliko vam je dobar izvor clock-a toliko dobro ovaj sklop radi, tehnički ne unosi dodatnu grešku. Imajte u vidu da sinhronizovan signal sa GPS (kolikog god 1Hz do 10MHz) jeste dugoročno veoma stabilan ali kratkoročno nije tako dobro, ima jitter. Nasuprot njemu TCXO ili OCXO su kratkoročno vrlo stabilni i sa vrlo malim faznim šumamom/jitter ali su dugoročno problematični je klizaju u odnosu na GPS.
Takodje postoji mali dodatni problem ako hoćete da imate 1PPS signal koji je stvarno sinhronizovan sa globalnim GPS, to je normalno ponašanje GPS prijemnika da daje taj impuls koji se dešava tačno po UTC na primer u 23 : 59 : 59.000'000us +/-~120ns, ovih 120ns su nezbižni za taj U-blox Neo-6M modul jer tako radi, ima boljh modula sa manjim jitter ako nekome to treba.
I sad je tu drugi problem, 1PPS generalno treba za sinhronizaciju ali nam treba i još jedna frekvencija da bi nešto korisno radili sa tim, trebaju nam DVE frekvencije sa GPS i taj modul to ne može da odradi na HW nivou : (
Ne može od 1Hz da se napravi 10MHz sinhronizovanih (tako lako), niti obrnuto od 10MHz bez 1Hz tada nije sinhronizovano!
Postoje neki vrlo specifični GPS moduli koji prave na dva izlaza 1PPS + dodatnu neku vrlo specifičnu frekvenciju baš za takve sinhronizvane potrebe.
Jedini IC koji je trenutno SPOSOBAN da od 1Hz napravi sinhronizovanu bilo koju drugo frekvenciju je famozni LMKxxxx analogno/digitalni PLL, ljuta sprava za tu tehniku!
Medjutim ima MNOGO PROSTIJE i povoljnije rešenje, upotrebe se DVA jeftina Neo-6M modula, jedan se podesi na 1PPS izlaz, drugi na koju god željenu frekvenciju, dele zajedničku antenu i to je to!
Ostali "začini" na to sa PIC, Si5351, bufferima, više izlaza i ostalo po želji.
01-17-2025, 12:58 PM (This post was last modified: 01-17-2025, 01:39 PM by mikikg.)
Namestićemo i to!
Dodatno sam inače rasčistio po programu i modulima neke stvari, oslobodio sam jedan TMR2 a umesto njega iskoristio sam slobodne PWM module za iste operacije, čak sam 1PPS baš napravio da bude "pulse" sa 10% duty-ratio, 100ms-ON i 900ms-OFF, kao sa GPS modula ponašanje.
Uveo sam Watch-dog timer, ako nešto zaglavi on resetuje kontroler.
Dakle na postojeću situaciju kako radi, umesto USART TX tu ću da postavim novi 10kHz izlaz, može tako?
Ili možda ti više odgovara da bude promenljiv u 4 koraka, na primer 10Hz, 100Hz, 1kHz i 10kHz, zavisi kako izabereš GATE time?
Ili da ostane 1PPS na svom mestu ali on daje 1Hz samo kada je izabrana 1s baza, ostale tri kombinacije kaži koje da budu na tom mestu?
UPDATE: Ili možda najbolja varijanta, da umesto USART TX uvedemo još jedan SW button za biranje frekvencije na tom 1PPS izlazu, da nezavistno to biramo i menjamo pa se onda spoje frekvencmetar i taj izlaz pa prikazuje numerički tu izabranu frekvenciju i može na klik da vrtimo u krug koliko god različitih kombinacija frekvencija.
Code:
//----------- GPS vremenska baza za Borin frekvencmeter ----------
// TIM0 - Glavni delitelj za GATE IZLAZ, clock iz CLC1-OUT-RA5 < GPS
// TIM1 - Meri frekvenciju CLC1-OUT-RA5 < GPS
//*TIM2 - SLOBODAN TRENUTNO
// TIM3 - Meri frekvenciju PWM2_OUT1-RC5 < TCXO
// TIM4 - INTERNI 20kHz
// PWM1 - Koristi se kao delitelj za 1PPS 20kHz > 1Hz
// PWM2 - Koristi se kao delitelj za TCXO 26MHz > 20kHz
// CLC1 - Buffer Rutira Ulaze izmedju RA5/RC5/Internal
// *NCO - Slobodan, specifičan non-integer signal generator
Meni je dovoljno i 10kHz a možda će nekom trebati promenljiv.Kako god.
Hvala
Nego pitanje za U-blox M 10 gde treba da memorišem 20kHz lock u MBR ili ...?
Što se tiče 10kHz izlaza, smislio sam cool funkciju, uvešću detekciju "dugačkog klik" na SW button i sa njim funkcionalno biramo kombinacije na 1PPS izlazu od 1Hz do 10kHz.
Dodatno da iskoristim pošto već ima korisnički EEPROM da ZAPAMTI to izabrano stanje za sledeći put kad se uključi i kao signalizacija, pošto je tu vezana i 1PPS LED, vidi se blinkanje kada je 1Hz/10Hz ili veće od toga.
- kratak klik menja izlaznu frekvenciju (na 1PPS), to se češće koristi i zanimljivije
- dugačak klik menja vremensku bazu za frekvencmetar
Izlaz se menja u opsegu kao prema ovoj tablici, od 1Hz do 16MHz, da testiraš malo taj frekvencmetar i druge sprave!
Kada osposobiš TCXO ili OCXO onda ove veće frekvencije se clock-uju sa njega.
Spojiš 1PPS izlaz na ulaz u frekvecmetar, ili napravi neki preklopnik ...
Radi sve i bez TCXO, radi na interni R/C kada se izabere veća frekvencija.
Sve je generalno isto samo je sa TCXO malo stabilniji signal i sa manje jittera-a.
Ako hoćeš da ti pošaljem TCXO 26MHz, radi na 1V8, treba dodatni stabilizator ali bi trebalo da radi i bez level-konvertera 1V8 > 3V3, preko kondenatora se spoji i to bi trebalo da radi.
(01-18-2025, 02:39 PM)mikikg Wrote: Ako hoćeš da ti pošaljem TCXO 26MHz, radi na 1V8, treba dodatni stabilizator ali bi trebalo da radi i bez level-konvertera 1V8 > 3V3, preko kondenatora se spoji i to bi trebalo da radi.
Uzgred, oko tastera, jao, da li ima grdja tema od toga, sve napravimo kako treba i radi kao sat i imamo jedan taster koji posle nekog vremena počinje da pravi probleme! : (
Oni obični crni sa 4 pina, to je katastrofa, rade dobro neko vreme, onda počinju da oksidiraju kontakti, sledeći put mora da se pritiska jače da bi skinuo oksid sa kontakta pa tako u krug dok se to ne raspadne do mere da ne može više da se koristi nikako!
Ima raznih tastera, ima i sa pozlaćenim kontaktima vrlo kvalitetnih i dodatno se postavi plastično/metalno dugme koje je naslonjeno na njega i limitira hod i silu pritiskanja.
Sa tim tasterima ne znam šta da radim, godinama se mučim sa tim, kakvi i koji tasteri da se koriste, i tako mi je ponovo zatrebalo za ovu situaciju, replika/fix foliske tastaure za neku mašinu (balanserka) ...
I koji tasteri i kapice i bla bla ...
Pukne mi film i odem u prodavnicu PC opreme i kupim najjeftiniju gejmersku "klik" tastaturu, neka RGB/USB bla-bla, superrrrr, ima 100+ tastera i raznih kapica!
Odlični tasteri, pozlaćeni kontakti, limitiran hod, kapice se standardno menjaju ...
Iskoristio sam 17 komada tu koji su mi bili potrebni, ostalo rešeno preko folije vizuelno da se zna šta pritiska, pa neka sad pritiskaju do mile volje, daću im i komplet rezervnih tastera!
BTW: Nekada davno sam imao jednu mislim Honeywell industrisku tastaturu, bila je napravljena sa pojedinačnim HAL senzorom i MAGNETOM po svakom tasteru, nije imao fizički kontak za prekidanje, samo mehaničko kretanje, ta tastatura i tasteri su bili neuništivi! Tražim takve tastere i magnetne enkodere!