FreeCalypso > hg > fc-rfcal-tools
annotate autocal/vcxomain.c @ 26:a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 22 May 2017 22:27:22 +0000 |
parents | 0b6881281d86 |
children | 841dd03d5c85 |
rev | line source |
---|---|
21
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This module contains the main() function for fc-rfcal-vcxo. |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include <stdio.h> |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <stdlib.h> |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <rvinterf/l1tm.h> |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <rvinterf/exitcodes.h> |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include "stdband.h" |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #define VCXOCAL_BAND 900 |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #define VCXOCAL_BAND_RFPW RFPW_STD_BAND(6, 0) |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #define VCXOCAL_ARFCN 40 |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 |
24
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
15 extern float vcxo_freq_meas(); |
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
16 |
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
17 static float freq_max_neg, freq_max_pos; |
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
18 static float lin_a, lin_b, lin_a2, lin_b2; |
26
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
19 static int zero_search_dac1, zero_search_dac2, zero_search_incr; |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
20 static float zero_search_freq1, zero_search_freq2; |
24
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
21 |
23
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
22 prepare_rf_test_system() |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
23 { |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
24 char cmd[80]; |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
25 |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
26 printf("Preparing RF test system for VCXO calibration\n"); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
27 sprintf(cmd, "vcxo-cal-setup %d %d\n", VCXOCAL_BAND, VCXOCAL_ARFCN); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
28 tsid_command(cmd); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
29 return(0); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
30 } |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
31 |
21
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 main(argc, argv) |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 char **argv; |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 { |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 socket_pathname_options(argc, argv); |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 connect_rvinterf_socket(); |
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 connect_tsid_socket(); |
23
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
38 prepare_rf_test_system(); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
39 |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
40 printf("Putting the DUT into Test Mode\n"); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
41 do_tms(1); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
42 do_rfpw(STD_BAND_FLAG, VCXOCAL_BAND_RFPW); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
43 do_rfpw(TCH_ARFCN, VCXOCAL_ARFCN); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
44 do_rfpw(AFC_ENA_FLAG, 0); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
45 do_txpw(TX_PWR_LEVEL, 12); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
46 printf("Starting RF Tx on the DUT\n"); |
9a9fd9ebe799
autocal/vcxomain.c: coming along
Mychaela Falconia <falcon@freecalypso.org>
parents:
21
diff
changeset
|
47 do_rfe(RX_TX_TCH); |
21
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 |
24
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
49 /* initial measurements at the DAC extremes */ |
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
50 freq_max_neg = vcxo_freq_meas(-2048, "max-neg"); |
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
51 freq_max_pos = vcxo_freq_meas(2048, "max-pos"); |
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
52 lin_a = (freq_max_pos - freq_max_neg) / 4096.0f; |
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
53 lin_b = freq_max_pos - lin_a * 2048.0f; |
26
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
54 zero_search_dac1 = -lin_b / lin_a; |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
55 zero_search_freq1 = vcxo_freq_meas(zero_search_dac1, "zero-search"); |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
56 |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
57 /* search for zero crossing */ |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
58 if (zero_search_freq1 < 0) |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
59 zero_search_incr = 100; |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
60 else |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
61 zero_search_incr = -100; |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
62 for (;;) { |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
63 zero_search_dac2 = zero_search_dac1 + zero_search_incr; |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
64 zero_search_freq2 = vcxo_freq_meas(zero_search_dac2, |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
65 "zero-search"); |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
66 if (zero_search_incr > 0 && zero_search_freq2 >= 0) |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
67 break; |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
68 if (zero_search_incr < 0 && zero_search_freq2 < 0) |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
69 break; |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
70 zero_search_dac1 = zero_search_dac2; |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
71 zero_search_freq1 = zero_search_freq2; |
a2e4da9d85cc
fc-rfcal-vcxo: search for zero crossing implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
24
diff
changeset
|
72 } |
21
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 |
24
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
74 printf("Stopping RF Tx on the DUT\n"); |
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
75 do_rfe(STOP_ALL); |
0b6881281d86
fc-rfcal-vcxo ready for first test
Mychaela Falconia <falcon@freecalypso.org>
parents:
23
diff
changeset
|
76 exit(0); |
21
a3f48378658d
autocal: beginning of fc-rfcal-vcxo
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 } |