Skip to content

Commit afe7c90

Browse files
committed
ServoBit-180: Labels removed (bitpos, servo). Bug fixed with the verification
1 parent 3690344 commit afe7c90

File tree

2 files changed

+31
-31
lines changed

2 files changed

+31
-31
lines changed

blocks/ServoBit-180/ServoBit-180.ice

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"id": "111d9859-6de5-4608-9176-ed8359ffebc5",
1616
"type": "basic.code",
1717
"data": {
18-
"code": "//-- ServoBit-180\n\n//-- Control de un servo Futaba 3003\n//-- con un bit. Se mueve a dos posiciones\n//-- que se corresonden con 0 / 1\n//-- El angulo total recorrido es de 180 grados\n\n//-- ENTRADAS:\n//-- clk: Señal del sistema (12Mhz)\n//-- bitpos: Bit de posicion (0 - posicion derecha, 1 - posicion izquierda)\n \n// Bitpos 0 Bitpos 1\n// ___ ___\n// | o----> <----o |\n// | | | |\n// |___| |___|\n\n//-- SALIDAS:\n//-- servo : Señal PWM para controlar el servo\n\n//-- Constantes para el angulo del servo\nlocalparam ANG_0 = 8'h01;\nlocalparam ANG_180 = 8'hE4;\n\n\n//-- Posicion del servo cuando el\n//-- bit de entrada es 0\n//-- La corona del servo mira a la derecha\nparameter BIT0 = ANG_0;\n\n//-- Posicion el servo cuando el bit\n//-- de entrada es 1\n//-- La corona del servo mira a la izquierda\nparameter BIT1 = ANG_180;\n\n\n//-- Posicion de 8 bits del servo\nreg [7:0] pos;\n\n//-- Asignar la posicion de 8 bits\n//-- segun si lo recibido es 0 ó 1\nalways @(posedge clk)\n pos <= bitpos ? BIT1 : BIT0;\n\n\n//---\n//--- ServoMotor \n\n//-- M es el valor del divisor para\n//-- obtener tics de M / 12.0 micro-segundos\nlocalparam M = 94; \nlocalparam N = $clog2(M);\n\n//-- Contador para generar los tics\nreg [N-1:0] divcounter = 0;\n\n//-- Flag para indicar que un tic\n//-- ha ocurrido\nreg tic = 0;\n\n//-- Generacion de los tics. Cada\n//-- M ciclos del reloj se genera 1\nalways @(posedge clk)\n tic <= (divcounter == M - 2);\n\n//-- Contador modulo M\nalways @(posedge clk)\n if (tic)\n divcounter <= 0;\n else\n divcounter <= divcounter + 1;\n\n//-- Contador de la posicion del \n//-- servo\nreg [10:0] angle_counter = 0;\n\n//-- A la posicion destino hay que\n//-- sumarle un offset, correspondiente\n//-- a los 0.3ms de la posicion inicial\nwire [8:0] pose = {1'b0, pos} + 9'd46;\n\n//-- Con cada tic se incrementa el\n//-- contador de angulo del servo\nalways @(posedge clk)\n if (tic)\n angle_counter <= angle_counter + 1;\n\n//-- Cuando el contador es menor que el \n//-- valor objetivo, la señal de PWM\n//-- del servo se pone 1, y 0 en \n//-- caso contrario\nalways @(posedge clk)\n servo <= (angle_counter < {2'b00, pose});\n\n",
18+
"code": "//-- ServoBit-180\n\n//-- Control de un servo Futaba 3003\n//-- con un bit. Se mueve a dos posiciones\n//-- que se corresonden con 0 / 1\n//-- El angulo total recorrido es de 180 grados\n\n//-- ENTRADAS:\n//-- clk: Señal del sistema (12Mhz)\n//-- bitpos: Bit de posicion (0 - posicion derecha, 1 - posicion izquierda)\n \n// Bitpos 0 Bitpos 1\n// ___ ___\n// | o----> <----o |\n// | | | |\n// |___| |___|\n\n//-- SALIDAS:\n//-- servo : Señal PWM para controlar el servo\n\n//-- Constantes para el angulo del servo\nlocalparam ANG_0 = 8'h01;\nlocalparam ANG_180 = 8'hE4;\n\n\n//-- Posicion del servo cuando el\n//-- bit de entrada es 0\n//-- La corona del servo mira a la derecha\nparameter BIT0 = ANG_0;\n\n//-- Posicion el servo cuando el bit\n//-- de entrada es 1\n//-- La corona del servo mira a la izquierda\nparameter BIT1 = ANG_180;\n\n\n//-- Posicion de 8 bits del servo\nreg [7:0] pos;\n\n//-- Asignar la posicion de 8 bits\n//-- segun si lo recibido es 0 ó 1\nalways @(posedge clk)\n pos <= bitpos ? BIT1 : BIT0;\n\n\n//---\n//--- ServoMotor \n\n//-- M es el valor del divisor para\n//-- obtener tics de M / 12.0 micro-segundos\nlocalparam M = 94; \nlocalparam N = $clog2(M);\n\n//-- Contador para generar los tics\nreg [N-1:0] divcounter = 0;\n\n//-- Flag para indicar que un tic\n//-- ha ocurrido\nreg tic = 0;\n\n//-- Generacion de los tics. Cada\n//-- M ciclos del reloj se genera 1\nalways @(posedge clk)\n tic <= (divcounter == M - 2);\n\n//-- Contador modulo M\nalways @(posedge clk)\n if (tic)\n divcounter <= 0;\n else\n divcounter <= divcounter + 1;\n\n//-- Contador de la posicion del \n//-- servo\nreg [10:0] angle_counter = 0;\n\n//-- A la posicion destino hay que\n//-- sumarle un offset, correspondiente\n//-- a los 0.3ms de la posicion inicial\nwire [8:0] pose = {1'b0, pos} + 9'd46;\n\n//-- Con cada tic se incrementa el\n//-- contador de angulo del servo\nalways @(posedge clk)\n if (tic)\n angle_counter <= angle_counter + 1;\n\n//-- Cuando el contador es menor que el \n//-- valor objetivo, la señal de PWM\n//-- del servo se pone 1, y 0 en \n//-- caso contrario\n\nreg servo;\n\nalways @(posedge clk)\n servo <= (angle_counter < {2'b00, pose});\n\n",
1919
"params": [],
2020
"ports": {
2121
"in": [
@@ -50,7 +50,7 @@
5050
"value": "21"
5151
}
5252
],
53-
"virtual": false
53+
"virtual": true
5454
},
5555
"position": {
5656
"x": 56,
@@ -61,15 +61,15 @@
6161
"id": "eac2d6e9-4a62-4aec-8ce8-0e6c54e14d22",
6262
"type": "basic.output",
6363
"data": {
64-
"name": "servo",
64+
"name": "",
6565
"pins": [
6666
{
6767
"index": "0",
6868
"name": "D0",
6969
"value": "119"
7070
}
7171
],
72-
"virtual": false
72+
"virtual": true
7373
},
7474
"position": {
7575
"x": 816,
@@ -80,15 +80,15 @@
8080
"id": "e3e07bdb-9bb3-4afb-ace5-bcc99aecef0a",
8181
"type": "basic.input",
8282
"data": {
83-
"name": "bitpos",
83+
"name": "",
8484
"pins": [
8585
{
8686
"index": "0",
8787
"name": "D13",
8888
"value": "144"
8989
}
9090
],
91-
"virtual": false
91+
"virtual": true
9292
},
9393
"position": {
9494
"x": 56,

blocks/ServoBit-180/ServoBit-180_test1-1-servo-1-button.ice

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@
2626
"virtual": false
2727
},
2828
"position": {
29-
"x": 368,
29+
"x": 344,
3030
"y": 56
3131
}
3232
},
3333
{
34-
"id": "51a292aa-a94e-4740-ae83-2746afda1767",
35-
"type": "c91ccaa367351314fdd1ed7784836fe9155f7ecc",
34+
"id": "9356e0a8-27f7-4147-a7f5-5f6eab9c2eda",
35+
"type": "054bfeb29658539df35dc63cbe18127ada173775",
3636
"position": {
37-
"x": 528,
37+
"x": 512,
3838
"y": 136
3939
}
4040
},
@@ -91,39 +91,39 @@
9191
"wires": [
9292
{
9393
"source": {
94-
"block": "51a292aa-a94e-4740-ae83-2746afda1767",
95-
"port": "eac2d6e9-4a62-4aec-8ce8-0e6c54e14d22"
94+
"block": "28443a1c-95de-48d3-a6f7-61d9d269cf99",
95+
"port": "out"
9696
},
9797
"target": {
98-
"block": "87553ab7-fc7b-4493-be64-136b05fc8e72",
99-
"port": "in"
100-
}
98+
"block": "9356e0a8-27f7-4147-a7f5-5f6eab9c2eda",
99+
"port": "f9f4add8-1ca6-49c0-adae-0d1a45025fc1"
100+
},
101+
"vertices": [
102+
{
103+
"x": 480,
104+
"y": 112
105+
}
106+
]
101107
},
102108
{
103109
"source": {
104110
"block": "de159724-2d3e-4c6a-8cc7-63d1b74eade6",
105111
"port": "out"
106112
},
107113
"target": {
108-
"block": "51a292aa-a94e-4740-ae83-2746afda1767",
114+
"block": "9356e0a8-27f7-4147-a7f5-5f6eab9c2eda",
109115
"port": "e3e07bdb-9bb3-4afb-ace5-bcc99aecef0a"
110116
}
111117
},
112118
{
113119
"source": {
114-
"block": "28443a1c-95de-48d3-a6f7-61d9d269cf99",
115-
"port": "out"
120+
"block": "9356e0a8-27f7-4147-a7f5-5f6eab9c2eda",
121+
"port": "eac2d6e9-4a62-4aec-8ce8-0e6c54e14d22"
116122
},
117123
"target": {
118-
"block": "51a292aa-a94e-4740-ae83-2746afda1767",
119-
"port": "f9f4add8-1ca6-49c0-adae-0d1a45025fc1"
120-
},
121-
"vertices": [
122-
{
123-
"x": 496,
124-
"y": 120
125-
}
126-
]
124+
"block": "87553ab7-fc7b-4493-be64-136b05fc8e72",
125+
"port": "in"
126+
}
127127
}
128128
]
129129
},
@@ -136,7 +136,7 @@
136136
}
137137
},
138138
"dependencies": {
139-
"c91ccaa367351314fdd1ed7784836fe9155f7ecc": {
139+
"054bfeb29658539df35dc63cbe18127ada173775": {
140140
"package": {
141141
"name": "ServoBit_180",
142142
"version": "0.1",
@@ -151,7 +151,7 @@
151151
"id": "111d9859-6de5-4608-9176-ed8359ffebc5",
152152
"type": "basic.code",
153153
"data": {
154-
"code": "//-- ServoBit-180\n\n//-- Control de un servo Futaba 3003\n//-- con un bit. Se mueve a dos posiciones\n//-- que se corresonden con 0 / 1\n//-- El angulo total recorrido es de 180 grados\n\n//-- ENTRADAS:\n//-- clk: Señal del sistema (12Mhz)\n//-- bitpos: Bit de posicion (0 - posicion derecha, 1 - posicion izquierda)\n \n// Bitpos 0 Bitpos 1\n// ___ ___\n// | o----> <----o |\n// | | | |\n// |___| |___|\n\n//-- SALIDAS:\n//-- servo : Señal PWM para controlar el servo\n\n//-- Constantes para el angulo del servo\nlocalparam ANG_0 = 8'h01;\nlocalparam ANG_180 = 8'hE4;\n\n\n//-- Posicion del servo cuando el\n//-- bit de entrada es 0\n//-- La corona del servo mira a la derecha\nparameter BIT0 = ANG_0;\n\n//-- Posicion el servo cuando el bit\n//-- de entrada es 1\n//-- La corona del servo mira a la izquierda\nparameter BIT1 = ANG_180;\n\n\n//-- Posicion de 8 bits del servo\nreg [7:0] pos;\n\n//-- Asignar la posicion de 8 bits\n//-- segun si lo recibido es 0 ó 1\nalways @(posedge clk)\n pos <= bitpos ? BIT1 : BIT0;\n\n\n//---\n//--- ServoMotor \n\n//-- M es el valor del divisor para\n//-- obtener tics de M / 12.0 micro-segundos\nlocalparam M = 94; \nlocalparam N = $clog2(M);\n\n//-- Contador para generar los tics\nreg [N-1:0] divcounter = 0;\n\n//-- Flag para indicar que un tic\n//-- ha ocurrido\nreg tic = 0;\n\n//-- Generacion de los tics. Cada\n//-- M ciclos del reloj se genera 1\nalways @(posedge clk)\n tic <= (divcounter == M - 2);\n\n//-- Contador modulo M\nalways @(posedge clk)\n if (tic)\n divcounter <= 0;\n else\n divcounter <= divcounter + 1;\n\n//-- Contador de la posicion del \n//-- servo\nreg [10:0] angle_counter = 0;\n\n//-- A la posicion destino hay que\n//-- sumarle un offset, correspondiente\n//-- a los 0.3ms de la posicion inicial\nwire [8:0] pose = {1'b0, pos} + 9'd46;\n\n//-- Con cada tic se incrementa el\n//-- contador de angulo del servo\nalways @(posedge clk)\n if (tic)\n angle_counter <= angle_counter + 1;\n\n//-- Cuando el contador es menor que el \n//-- valor objetivo, la señal de PWM\n//-- del servo se pone 1, y 0 en \n//-- caso contrario\nalways @(posedge clk)\n servo <= (angle_counter < {2'b00, pose});\n\n",
154+
"code": "//-- ServoBit-180\n\n//-- Control de un servo Futaba 3003\n//-- con un bit. Se mueve a dos posiciones\n//-- que se corresonden con 0 / 1\n//-- El angulo total recorrido es de 180 grados\n\n//-- ENTRADAS:\n//-- clk: Señal del sistema (12Mhz)\n//-- bitpos: Bit de posicion (0 - posicion derecha, 1 - posicion izquierda)\n \n// Bitpos 0 Bitpos 1\n// ___ ___\n// | o----> <----o |\n// | | | |\n// |___| |___|\n\n//-- SALIDAS:\n//-- servo : Señal PWM para controlar el servo\n\n//-- Constantes para el angulo del servo\nlocalparam ANG_0 = 8'h01;\nlocalparam ANG_180 = 8'hE4;\n\n\n//-- Posicion del servo cuando el\n//-- bit de entrada es 0\n//-- La corona del servo mira a la derecha\nparameter BIT0 = ANG_0;\n\n//-- Posicion el servo cuando el bit\n//-- de entrada es 1\n//-- La corona del servo mira a la izquierda\nparameter BIT1 = ANG_180;\n\n\n//-- Posicion de 8 bits del servo\nreg [7:0] pos;\n\n//-- Asignar la posicion de 8 bits\n//-- segun si lo recibido es 0 ó 1\nalways @(posedge clk)\n pos <= bitpos ? BIT1 : BIT0;\n\n\n//---\n//--- ServoMotor \n\n//-- M es el valor del divisor para\n//-- obtener tics de M / 12.0 micro-segundos\nlocalparam M = 94; \nlocalparam N = $clog2(M);\n\n//-- Contador para generar los tics\nreg [N-1:0] divcounter = 0;\n\n//-- Flag para indicar que un tic\n//-- ha ocurrido\nreg tic = 0;\n\n//-- Generacion de los tics. Cada\n//-- M ciclos del reloj se genera 1\nalways @(posedge clk)\n tic <= (divcounter == M - 2);\n\n//-- Contador modulo M\nalways @(posedge clk)\n if (tic)\n divcounter <= 0;\n else\n divcounter <= divcounter + 1;\n\n//-- Contador de la posicion del \n//-- servo\nreg [10:0] angle_counter = 0;\n\n//-- A la posicion destino hay que\n//-- sumarle un offset, correspondiente\n//-- a los 0.3ms de la posicion inicial\nwire [8:0] pose = {1'b0, pos} + 9'd46;\n\n//-- Con cada tic se incrementa el\n//-- contador de angulo del servo\nalways @(posedge clk)\n if (tic)\n angle_counter <= angle_counter + 1;\n\n//-- Cuando el contador es menor que el \n//-- valor objetivo, la señal de PWM\n//-- del servo se pone 1, y 0 en \n//-- caso contrario\n\nreg servo;\n\nalways @(posedge clk)\n servo <= (angle_counter < {2'b00, pose});\n\n",
155155
"params": [],
156156
"ports": {
157157
"in": [
@@ -189,7 +189,7 @@
189189
"id": "eac2d6e9-4a62-4aec-8ce8-0e6c54e14d22",
190190
"type": "basic.output",
191191
"data": {
192-
"name": "servo"
192+
"name": ""
193193
},
194194
"position": {
195195
"x": 816,
@@ -200,7 +200,7 @@
200200
"id": "e3e07bdb-9bb3-4afb-ace5-bcc99aecef0a",
201201
"type": "basic.input",
202202
"data": {
203-
"name": "bitpos"
203+
"name": ""
204204
},
205205
"position": {
206206
"x": 56,

0 commit comments

Comments
 (0)