UTNianos

Versión completa: [Parcial resuelto][R2053][2010] Informática II
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Hola estaba estudiando para info II resolviendo un ejercicio y bueno lo dejo así lo ven, opinan y de paso queda como aporte=D..
Me falto poner: display(tiempo) que creo que va en el case 1 al final.. de agregar la cuenta.. esta bien(?
¿La máquina de estados la hiciste por estados o por tecla?
Vi que Gustavo lo hizo por estados, pero yo lo pensé por tecla y queda más lindo (?)
Si lo tenés así, subilo así comparamos.
POr estados, no se yo la arme no me quede a la clase me fui tipo 9.. un poco antes xd..
Feer, encontré algunos detalles. Como vos me pediste que te lo revise, te lo revise renglon por renglon como un hijo de mil putas que te quiere desaprobar jajaja.

- Hay un error en el antirebote. Para mi te confundiste la ubicación de la llave }. Leyendo el codigo que vos hiciste, pusiste el contador = 0 en el else de IF (Contador [i] > Max_cant_rebotes). No se resetea ahi por que sino nunca se cumpliria el antirebote. el contador = 0 va en el else del caso que no sean iguales la tecla actual y la anterior. Si no entendes, avisame que te seleciono en la imagen el error =P

-En la maquina de estados, en el Estado 1 hay un pasiiito que hiciste demás. Esta perfecto, pero es importante que la maquina de estado sea lo mas sincero y lo mas corto posible para que corra lo mas rápido posible.
en el IF (tiempo>MAX_tiempo)
{
tiempo = MAX_tiempo;
}
else tiempo ++;

no hace falta. solo pone

if(tiempo<MAX_tiempo)
{
tiempo++;
} y se acabo. Si el tiempo es mayor que MAX_tiempo, que no suba directamente. (ya el tiempo es igual a MAX_tiempo.)

y despues en el caso 2 de la maquina de estados. Antes de prender un timer, siempre tenes que apagar el flag. nunca despues de prender el timer como hiciste con el timer(1).

- Ojo con lo que te referís a Inicializar_variables(); porque lo hiciste adentro del Main (void) osea que serian todas variables Locales. No aplica a las variables globales. Y en ningún lado (salvo que no lo haya visto) no declaraste las variables locales, ni las variables locales de las demás funciones. Te digo esto por que me parece que vos pusiste inicializar_variables(); pensas que safas de tener que declarar las variables y no es así.. ojo que te puede cagar con esta boludes. Yo por mi declaro una por una en una hoja aparte. (nadie te va a revisar si todas las variables están declaradas pero si que lo tuviste en cuenta la declaración de variables locales y globales. y tambien con los #define. es muy importante. No se como manejas el arriba, abajo, on, off.

- hay un error en el barrido de display. hay dígitos que no lo apagas. Lo tenes que apagar si o si por que sino se proyectaria cualquier cosa.
switch (indice)
case 0:
dig_0 =1;
dig_1 = 0;
dig_2 = 0;
case 1:
dig_0=0; // si o si lo tenes que apagar! sino queda prendido desde el case anterior
dig_1= 1;
dig_2 = 0;

- como vos dijiste que te falto poner display(tiempo). Yo lo pondia debajo del tiempo++ y del tiempo-- asi se va actualizando cada vez que modificas la variable. asi esta bueno el producto sino es una cagada jajajaja.

-hay un error grave en el timertick. A pesar de que no hagas la cuentita del timer. en el enunciado dice que la inicializacion del timer fue hecha por otro ingeniero a cada 2500Hz. y vos en el timertick empezaste con " mseg--". tenes que hacer la cuenta previa para que cuentes la cantidad de ciclos (2500hz) para llegar un mili segundo.. y recien ahi haces el desconteo del mili segundo. Ojo con esto...
Pusiste la variable Tiempo en el desconteo de segundos. Pero tiempo son Minutos. Ojo con esto...

-No hiciste la funcion de Timer_on, timer_off... por lo menos a mi me tomaron en todos los parciales y finales y hay que practicar un poco por que puede presentar confusiones muy boludas.

En general esta muy bien hecho. Hay que prestar mucha atencion a los detalles que te puede dar vuelta el programa o pasar horas y horas sin encontrar el problema.

Espero que te sirva.

Saludos.
- Hay un error en el antirebote. Para mi te confundiste la ubicación de la llave }. Leyendo el codigo que vos hiciste, pusiste el contador = 0 en el else de IF (Contador [i] > Max_cant_rebotes). No se resetea ahi por que sino nunca se cumpliria el antirebote. el contador = 0 va en el else del caso que no sean iguales la tecla actual y la anterior. Si no entendes, avisame que te seleciono en la imagen el error


Pero no sería: Si cumple la máxima cantidad de rebotes cambia de lo contrario pone el contador en 0 y vuelve a esperar 3 pulsos iguales?



- hay un error en el barrido de display. hay dígitos que no lo apagas. Lo tenes que apagar si o si por que sino se proyectaria cualquier cosa.
switch (indice)
case 0:
dig_0 =1;
dig_1 = 0;
dig_2 = 0;
case 1:
dig_0=0; // si o si lo tenes que apagar! sino queda prendido desde el case anterior
dig_1= 1;
dig_2 = 0;



En el case 1 no lo apague porque cuando entro al barrido lo primero que hago es apagar todo=D
Lo apague en el case 0 de colgado todos pero como ya venia apagando todo directamente puse que quería prender..


-No hiciste la funcion de Timer_on, timer_off... por lo menos a mi me tomaron en todos los parciales y finales y hay que practicar un poco por que puede presentar confusiones muy boludas.

Timer_On y timer_Off las hice están en la hoja 7 la última, no es eso?


Pusiste la variable Tiempo en el desconteo de segundos. Pero tiempo son Minutos. Ojo con esto...


Esta puse que cuando llega a 0 segundos (paso 1 minuto) descuente 1..
Osea va descontando segundos cuando llega a 0 descuenta 1 minuto si esta mal no entiendo porque..


Lo del timmertick de la cuenta previa es lo único que no entiendo…
(Lo de la máquina de estados lo entendí y me lo corregi con lapiz, para ahorrar tiempo esta bueno =))


En fin te dejo eso jajaja, muchas gracias por el tiempo=)
(06-07-2012 14:02)Feer escribió: [ -> ]- Hay un error en el antirebote. Para mi te confundiste la ubicación de la llave }. Leyendo el codigo que vos hiciste, pusiste el contador = 0 en el else de IF (Contador [i] > Max_cant_rebotes). No se resetea ahi por que sino nunca se cumpliria el antirebote. el contador = 0 va en el else del caso que no sean iguales la tecla actual y la anterior. Si no entendes, avisame que te seleciono en la imagen el error


Pero no sería: Si cumple la máxima cantidad de rebotes cambia de lo contrario pone el contador en 0 y vuelve a esperar 3 pulsos iguales?
no no. Si no se cumple la maxima cantidad de rebotes, va a seguir esperando hasta que se cumpla siempre y cuando la tecla anterior es igual a la actual. en el caso de que es diferente la tecla anterior y la actual ahi tiene que poner el contador a cero.


(06-07-2012 14:02)Feer escribió: [ -> ]- hay un error en el barrido de display. hay dígitos que no lo apagas. Lo tenes que apagar si o si por que sino se proyectaria cualquier cosa.
switch (indice)
case 0:
dig_0 =1;
dig_1 = 0;
dig_2 = 0;
case 1:
dig_0=0; // si o si lo tenes que apagar! sino queda prendido desde el case anterior
dig_1= 1;
dig_2 = 0;



En el case 1 no lo apague porque cuando entro al barrido lo primero que hago es apagar todo=D
Lo apague en el case 0 de colgado todos pero como ya venia apagando todo directamente puse que quería prender..
Tenes razon. se me escapo eso! jaja

(06-07-2012 14:02)Feer escribió: [ -> ]-No hiciste la funcion de Timer_on, timer_off... por lo menos a mi me tomaron en todos los parciales y finales y hay que practicar un poco por que puede presentar confusiones muy boludas.


Timer_On y timer_Off las hice están en la hoja 7 la última, no es eso?
te juro que no la habia visto!. si esta perfecto! en ese caso no hay posibilidades de confusion jaja. lo que te comentaba es cuando trabajabas con un array de timers. que si puede haber confusiones y hay que practicar un poco.

(06-07-2012 14:02)Feer escribió: [ -> ]Pusiste la variable Tiempo en el desconteo de segundos. Pero tiempo son Minutos. Ojo con esto...

Esta puse que cuando llega a 0 segundos (paso 1 minuto) descuente 1..
Osea va descontando segundos cuando llega a 0 descuenta 1 minuto si esta mal no entiendo porque..
aah esta bien. Pensé que lo pensaste de otra manera. Como no estan aclarados los valores de SEGUNDOS o MSEG, pense que hacias la misma ideologia de Gustavo que cuando segundos llegaba a cero, era un Segundo posta. jaj era al reves pero me acostumbre asi. Es lo mismo.

(06-07-2012 14:02)Feer escribió: [ -> ]Lo del timmertick de la cuenta previa es lo único que no entiendo…
el timertick esta configurado a 2500Hz osea 1/2500Hz da 0,4 mseg. Entonces, los ciclos duran 0,4 mseg. tenes que poner primero un desconteo para saber la cantidad de ciclos que necesitas para llegar a un 1mseg. se entiende? y ahi recien ahi haces el desconteo de los mseg.
Osea puedo poner todo adentro de un if? y que sea:

if(contador = 4){

Hace todo...
contador = 0
}
else{
contador ++;
}

...?
(06-07-2012 15:54)Feer escribió: [ -> ]Osea puedo poner todo adentro de un if? y que sea:

if(contador = 4){

Hace todo...
contador = 0
}
else{
contador ++;
}

...?

No entiendo de lo que estas hablando jaja. de cual tema estas hablando?
En el timertick para controlar que cada 4 interrupciones caiga 1 mseg
no no. Como dije antes, tenes que hacer la cuenta! jaja.

Pensemos:
un ciclo dura 0,4 Mseg. cuantos ciclos necesito para saber que es un segundo?
regla de tres simple = 1 seg x 1 ciclo / 0,0004seg = 2500.

(respetando la ideologia que utilizaste vos en el timertick)

THO=....;
TLO=.... + TLO;

Ciclos_necesarios--;
if (!Ciclos_necesarios)
{
Ciclos_necesarios = 2500;
Segundos--;
...
...
..

en este caso no se podria contar los milisegundos por que un mseg son 2.5 ciclos de 0,4mseg que fraccionarios no se usa.
Ah ya entendí! AJAJAJA.
Buennnnísimo! che por ahí es una pregunta boludisima, pero en el parcial se puede usar calculadora? XD
La calculadora si se puede usar y no hay materia que lo prohíba jaja
Ah copado..
Y no sabía porque ponele la mia pasa de decimal a binarios y a hexa y todo eso, y la tabla de bcd-natural para armarla por ahí te exigen que sepas pasar a hexa sin calcu o algo asi y no te la dejan usar... que se yo xd
Naaa eso es de info1 jaj.

Enviado desde mi MB526 usando Tapatalk
Ah copado.-, porque cada tanto (últimamente seguido) chingo al convertir a hexa JAJAJa
Páginas: 1 2
URLs de referencia