TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: NITITA en 12 de Mayo de 2008, 15:59:34
-
Hola! Necesito una ayudita. ¿Cómo puedo saber que he metido dos ceros seguidos?(pic16f84a)
graciass de antemano! :)
-
Saludos nitita!
Creo que sería bueno que te explicaras un poco mejor...
A qué te refieres con "meter" dos ceros? :shock: Estás leyendo un teclado? :?
Qué es exactamente lo que estás tratando de hacer?
En lo que respondas aquí estaremos para ayudarte...
Ok nos leemos! :mrgreen:
-
Sera a la derecha de tu sueldo? si es asi dime como lo puedo hacer yo tambien :D :D :mrgreen:
Saludos
-
Ralf estuvo buena esa... :D
Nitita, si es así yo también estoy interesado en saberlo :-/
Ok nos leemos! :mrgreen:
-
divide por 100 y si el numero no es fraccional, has metido dos ceros seguidos... :mrgreen: :mrgreen: :) :)
-
xDDD Vale.. habesi conseguido arrancar una sonrisa de mi caaaara!! Despues de un super lunes.. :P
Pues venga que os cuento!! tengo que hacer un conmutador de red,.. y necesito saber cuando me entra una trama. La gracia de la cosa es que cuando me meten la secuencia "010100" ya se que empieza una.. pero realmente me dicen que es suficiente sabiendo que tengo dos seguido.."00"... y digo yo... como puedo saber que tengo dos cerillos juntos? kon una or...?? uhmmm Esa es mi historia..
pd. lo xiento.. si alguien sabe lo de poner los ceros en nomina que me aviseeee :P
-
Ah ok, así está más claro nitita! :-)
Bueno no sé mucho de redes, pero a ver... esa secuencia de la que hablas... es como una transmisión serial? a qué velocidad es transmitida? :?
Porque si el dato es 0 y luego otro 0... si sabes la tasa de transmisión bastará con evaluar cuándo comenzó el primer 0 y luego, de acuerdo a esa velocidad, hacer una pausa apropiada y volver a evaluar a ver si el estado sigue siendo 0... si es así, han sido enviados dos ceros seguidos.
No más es una idea... no sé si se podrá usar protocolo serial en vez de hacerlo así... como dije, no sé casi de redes :D
Ya seguro te darán otra opinión más decente que la mía :D
Nos leemos! :mrgreen:
-
Nikita!
No se, lo del conmutador lo piensas hacer con pic?, sino creo que la pregunta no pertenece a esta seccion :D
Si vas a realizar el proyecto con un pic, cual tienes pensado utilizar ?, en que lenguaje lo vas a programar?
Y sobre todo como trabaja esa red, es decir con que protocolo?
Si es un pic que vas a utilizar y el protocolo es rs232 (lo dudo) ya tienes el problema resuelto, sino es asi la cosa se complica :mrgreen:
Saludos
-
te kuentoo no implementamos en ningun chippp programamos por amor al arte.. :P
-
Saludos princesa nitita! :-)
Pero no terminas de explicarnos lo del protocolo, cómo son enviados los datos...
Si no nos explicas no podremos ayudarte :D
Ok nos leemos! :mrgreen:
P.D. Aquí hay unos cuantos que programamos por amor al arte :-/
-
A ver,.. voy a explicarlo todo y asi termino antes.. porque encima me han surgido mas dudass por lo tanto soy una duda gigante con patas!. Empiezo..
Yo.., tengo que hacer un conmutador de red.. lo que me dicen es que Lo tengo en sleep hasta que se produce en una de las patas.. RB4,..RB7 un cambio de nivel.
Una vez aki me dicen que comienzo a leer una trama teniendo en cuenta que , dependiendo del estado anterior de la linea es posible que el PIC haya reaccionado ante el segundo bit del preambulo y no ante el primero... ( el rollito del preambulo es donde viene la secuencia con los dos ceros... que seria esta: 010100) Pero me dicen que simplemente se entendera que el campo "preambulo" finaliza la primera vez que se leen dos ceros seguidos. Bien,, una vez leida la trama se comprueba la parte de checksum ( que es lo unico que he sacado en claroo po finnn :P ) y en caso de que la trama sea correcta la trasnmito por una pata y en caso de que no pues la ignorooOoo :). pero aqui viene el temilla,. y es que dice que hay que atender en tdo momento a los cambos de velocidad seleccionada por RB0 ( 1Kbps q seria kon un ceroo o un 1 que serian 10 Kbps),... y poco mas... jejeje..
ahora empieza lo bueno... ( VAle... soy novata... lo sientttt :()
Y digo yo... desde mi ignorancia.....
1) tengo un problema.. porque no me situo con lo de las interrupciones... es decir tengo claro que hay dos una por la RB4:RB7 y otra por el RB0 mi lio viene que realmente tengo que trabajar con las dos paralelamente y ufff m pierdo porque no se puede hacer una interrupcion dentro de otra.. por lo tanto me pillan!! komo resuelvo??
2)Super preambulo... que supuestamente depende de la velocidad...?? pero.. y digo yo..... donde meto la velocidad??que hago con ella?? jojo
3) que ignora tramas??? cooMoooO?
4) y la ultima y no por eso la menos imporante.. en la eleccion de pata para la trama tengo que hacer la conversion... en plan 00 ->RB4,..bla bla bla... me ocupo de ello trabajando con And.. Or.. Xor... aaaaaggggg!!!
Veis no?? que vida ms tristeee coomo voy a ser felizzzZ si no se nada de lo de arriba!! Si alguien me ayuda.. se lo agradeceria MILLON x)
Thanks!!! :g)
-
Saludos nitita!
En cuanto al primer punto, puedes establecer prioridades en las interrupciones, creo que la de mayor prioridad tendría que ser la de RB0, que define la velocidad de la transmisión... no obstante, yo no recomendaría que estuviese en RB0 ese pin de definir la velocidad, sino en alguno de los RB4-RB7... porque la interrupción en RB0 es o por flanco de subida o de bajada, eso lo defines tú al principio... entonces por ejemplo, si está definida en flanco de subida te va a detectar los cambios de 0 a 1, pero cuando cambie de 1 a 0 no le hará ni caso...o viceversa... en cambio las interrupciones de RB4-RB7 si toman en cuenta cualquier "cambio de estado", bien sea de 0 a 1 o de 1 a 0....
Lo de la velocidad del preámbulo... la velocidad será el tiempo que esperarás para leer un bit o no... si es 1Kbps, entonces recibirás un dato cada 1ms, si es 10 Kbps será cada 0.1ms o 100us... esa es la diferencia... con 10 kbps tendrás que evaluar más rápido...
Lo de ignorar tramas... como te dije no sé mucho de redes... pero me imagino que si no recibes el 010100 entonces los datos que siguen no les haces caso... es decir, estarán allí en la patita del pic, pero tú no los procesarás (eso sería ignorarlos)... mientras que si es una trama correcta... me imagino que los transmitirás por otro pin del pic no?
En cuanto al cuarto punto hablas de la elección de la pata para la trama... luego dices:
en plan 00 ->RB4,..bla bla bla... me ocupo de ello trabajando con And.. Or.. Xor... aaaaaggggg!!!
Ahí si no te entendí ni pío... :D
Trata de explicarte mejor a ver si puedo ayudarte...
Ok es todo por ahora... ya algún otro maestro del foro te dará una opinión seguro más decente.
Bueno nos leemos princesa nitita! :mrgreen:
-
Hola.
Para detectar dos ceros seguidos todo dependerá de el protocolo que estes usando y del conocimiento de la trama en cuestión.
Imagino por lo que comentaste que recibis los datos de manera serial (sincrona por lo que comentas del cambio de velocidad si bien puede que sea asincrona tmb pese a ello).
Si la comunicación es serial, y tu idea es detectar inmediatamente los dos ceros, deberia bastar creando una bandera y detectando el arribo de los ceros.
No especificaste en que lenguaje de programacion pensas hacerlo.
Entonces, ¿que lenguaje estas usando? ¿ Que metodo de comunicacion y la idea es detectarlos enseguida bit a bit, o bien,por ejemplo, revisar si llegaron los ceros por cada byte recibido?
Saludos.
-
Amigo BrunoF, debería bastar con... ?
Me dejaste en ascuas! :D
-
Ahh si! mis respuestas vienen con suspenso :D jeje es que me cambie a la portatil y sino tenia q volver a escribir...
Saludos ;)
-
Ah ok :D
Pues sí nitita, no nos has dicho qué lenguaje vas a usar...
Como dice Bruno, si la comunicación es serial realmente la cosa es bastante sencilla...
Ok esperamos tu respuesta, nos leemos! :mrgreen:
-
Bueno, sin tener que recurrir a un lenguaje especifico mi idea es esta:
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=21719.0;attach=6919)
-
Genial!
Bravo Bruno! :-/
-
sabeis taanto que me dais mieditoo xD lenguaje de usar?? uhmmm yo pensaba que solo se podia en uno.. para el PIC.. xD ahora como me explico yo??
-
Ja ja! Hay muchos lenguajes...Me estoy refiriendo a si pensas programarlo en assembler directamente o pensas usar algun compilador como CCS,PIC BASIC,etc...
Saludos.
-
Aisss no se como explicarme.. a verrr
Lo de la velocidad,. la tengo que poner en RB0 fijo.. ( me lo mandannn) entonces aun sigo sin iamginarme que tiene que ver la velocidad kon el Rb0.. XD
otra cosita,.. aun dandole prioridad a una interrupcion,,,,una vez tenga la velocidad dada me salgo de esa interrupcion y hago la otra interrupcion de RB4:RB7..?
Cita de: NITITA en Hoy a las 12:27:56
en plan 00 ->RB4,..bla bla bla... me ocupo de ello trabajando con And.. Or.. Xor... aaaaaggggg!!!
y esooooo me referiaa que una vez tenga la trama segun el numero que me indica en el campo destino lo tengo que pasar por una pata un otra.. es decir.. si es la 00, 01, 10,11 correspondiendo a RB4.. asi sucesivamente a RB7,... me entiendes lo que quiero decir? pues me referia a que como hago la comprobacion de saber la pata correspondiente..?
gracias por aguantarrmeee :g)
PD----> Programo en MPLAb... eso es lo que te tengo k decir??? :-)
-
Nitita los pics sólo entienden un lenguaje: el hexadecimal (archivos .hex)...
Pero tú puedes hacer tu programa en muchos lenguajes, como los que te mencionó Bruno... empezando por el lenguaje de bajo nivel, el assembler... y siguiendo por los de mediano nivel como el C y finalmente los de alto nivel como el Basic o el Niple, que es visual... luego los compiladores se encargan de generar el archivo .hex que grabarás al pic.
Como estás comenzando yo te recomendaría el Basic, con el compilador Pic Basic Pro... y no es que le esté haciendo propaganda, pero en realidad es muy bueno y su manual te da mucha orientación... O también puedes darle al C, que es un poquito menos sencillo pero es muchisísimo más poderoso...
Bueno tú decides :D
Ok nos leemos! :mrgreen:
-
Uy! que merengue de cosas se esta armando..
A ver:
Hagamos distinto.
Escribinos cómo sería un "paquete"(o mensaje) entero recibido.
Y tengo dudas de si por RB0 recibis los BITS o solo actúa de CLOCK. Por lo que entiendo estas frente a una comunicacion serial(bit a bit) asincrona(sin CLOCK) de velocidad variable.
A ver..un paquete podria tener esta forma?
0101 00 xx xxxxxxxxxx
indicador inicial destino resto del mensaje
P.D. MPLAB es un entorno de programacion. No un lenguaje. Pero si bien MPLAB no solo admite assembler, voy a suponer que te estas refiriendo a lenguaje assembly.
Saludos.
-
aisss me esplico como un libro cerrao.. :P como os puedo mandar un documento para que lo leais?
-
Pos sí pequeña princesa nitita... vas a tener que explicarte mejor porque nos tienes más enredado que un mocho tirando cohetes... :D
Si tienes algun material en digital que explique mejor lo que deseas hacer, es decir cómo es el protocolo que estás usando, cuélgalo en algún servidor gratuito de la web como 4shared y nos das el enlace...
Ok nos leemos! :mrgreen:
-
Bueno.. aqui os pongo lo que me piden.. a ver si me entendeis.. :P :g)
http://rapidshare.de/files/39457789/practica.pdf.html
Zaludos 0)
-
Qué tal nitita!
No pues ufffffff ahora sí que está clara la cosa :D
Bueno allí dice que debes desarrollar eso "en el entorno integrado MPLAB", pero no te especifica un lenguaje, así que todavía tienes a elegir entre el ensamblador y el C (yo te recomendaría el C).
Bueno pues nada, el orden sería más o menos así:
1- tienes que habilitar la interrupción por cambio en portb, para poder detectar que se está recibiendo una trama.
2- en lo que se active la interrupción evaluas el estado de RB0 para saber la velocidad de transmisión.
3- tomando en cuenta la velocidad de transmisión, determinas si se han recibido dos ceros seguidos (ya bruno te lo explico muy bien).
4- recibes todos los datos (todavía no tengo claro si se puede hacer usando protocolo serial, ojalá alguien lo aclare, pero creo que sí)
5- haces el checksum (que dices ya lo tienes resuelto).
6- determinas por qué puerto tienes que enviar los datos.
7- vuelves a leer RB0 para ver a qué velocidad los vas a enviar.
8- envias los datos por el puerto adecuado.
Esto es a groso modo lo que tienes que hacer... recuerda que aquí te damos una guía, pero también tú tienes que esforzarte.
Primero decide en qué lenguaje trabajarás y paséate por el subforo correspondiente.
Luego intentas armar algo y nos expones tus avances.
Ok nos leemos! :mrgreen:
-
bien bien.. el problema viene dentro d los subbapartaditos.. xDD
preguntitas!.. lo de hacer 1 ms.. kon el tmr0 no lo piyo... porke realmente.. siempre te da multiplos no? como hago para que de un numero justo? kiero 1 ms.. y siempre da 1.048.. y no vale despreciar....!! xD
el otro lio es lo de saber cual es la patilla por la que mandar la trama.. que dijo ke usasemos operaciones XOR, AND,.. pero no se me ocurre..
-
La pequeña princesa todavía andará por allí?
Pido disculpas por haberme perdido un poco del hilo, he estado un poco ocupado en mis propios proyectos... :?
Qué hay nitita, ya terminaste el tuyo?
Espero tu respuesta, nos leemos! :mrgreen: