summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Schodet2008-04-06 23:20:29 +0200
committerNicolas Schodet2008-04-06 23:20:29 +0200
commit0c3d1233036801045c8fc73ccb6fa45c7795ca53 (patch)
tree2d2b2e85cb3322d8a1a5cd005b320a3dfc217b3a
parent9c5a02720e24002720ba9ec1f8168d1658187d13 (diff)
* digital/asserv:
- more encoders tests.
-rw-r--r--digital/asserv/src/asserv/test_counter.c19
-rw-r--r--digital/asserv/src/hdlcounter/counter_index_test.v14
2 files changed, 24 insertions, 9 deletions
diff --git a/digital/asserv/src/asserv/test_counter.c b/digital/asserv/src/asserv/test_counter.c
index f41d1295..bcdd966d 100644
--- a/digital/asserv/src/asserv/test_counter.c
+++ b/digital/asserv/src/asserv/test_counter.c
@@ -32,13 +32,14 @@
#include "counter_ext.avr.c"
-uint8_t read, read_cpt;
+uint8_t read, read_cpt, read_mode;
uint8_t ind, ind_cpt, ind_init;
uint8_t count, count_cpt;
int
main (void)
{
+ uint8_t read_old = 0;
uint8_t old_ind = 0;
const int total = 5000;
LED_SETUP;
@@ -54,7 +55,16 @@ main (void)
counter_update ();
if (read && !--read_cpt)
{
- proto_send2b ('r', counter_read (0), counter_read (3));
+ uint8_t r0, r1, r2, r3;
+ r0 = counter_read (0);
+ r1 = counter_read (1);
+ r2 = counter_read (2);
+ r3 = counter_read (3);
+ if (read_mode == 0 || r3 != read_old)
+ {
+ proto_send4b ('r', r0, r1, r2, r3);
+ read_old = r3;
+ }
read_cpt = read;
}
if (ind && !--ind_cpt)
@@ -94,6 +104,11 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
break;
case c ('r', 1):
read_cpt = read = args[0];
+ read_mode = 0;
+ break;
+ case c ('R', 1):
+ read_cpt = read = args[0];
+ read_mode = 1;
break;
case c ('i', 1):
ind_cpt = ind = args[0];
diff --git a/digital/asserv/src/hdlcounter/counter_index_test.v b/digital/asserv/src/hdlcounter/counter_index_test.v
index fcfc2355..1d806c35 100644
--- a/digital/asserv/src/hdlcounter/counter_index_test.v
+++ b/digital/asserv/src/hdlcounter/counter_index_test.v
@@ -40,14 +40,14 @@ module counter_top(clk, rst, q0, q1, q2, q3, ale, rd, wr, ad, i0, i1, ioa,
input [3:0] ioa, ioc;
wire [1:0] qf0;
- wire [size-1:0] count0;
+ wire [15:0] count0;
// Decode encoders outputs.
noise_filter f0[1:0] (clk, rst, q0, qf0);
- quad_decoder_div4 qd0 (clk, rst, qf0, count0);
+ quad_decoder_div4 #(16) qd0 (clk, rst, qf0, count0);
reg [size-1:0] lcount;
- reg [size-1:0] sample;
+ reg [15:0] sample;
// Sample on index pulse.
always @(posedge clk or negedge rst) begin
@@ -66,10 +66,10 @@ module counter_top(clk, rst, q0, q1, q2, q3, ale, rd, wr, ad, i0, i1, ioa,
if (!rst)
lcount <= 0;
else begin
- lcount <= ad[1:0] == 0 ? count0 :
- ad[1:0] == 1 ? 0 :
- ad[1:0] == 2 ? 0 :
- sample;
+ lcount <= ad[1:0] == 0 ? count0[15:8] :
+ ad[1:0] == 1 ? count0[7:0] :
+ ad[1:0] == 2 ? sample[15:8] :
+ sample[7:0];
end
end