# Compilado de Errores Monumentales En Software



## lubeck (Nov 11, 2010)

Estaba haciendo un codigo en picbasic y me tope con un error para mi monumental en el compilado y consiste en lo siguiente:

utilizo un LCD 16x2

Pongo en el  codigo lo siguiente y grabo el uC

LCDOUT "BIENVENIDO"
LCDOUT $FE,1,"SANSON"

y en el LCD me pone en el primer renglon "ONSANSENIDO" y en el segundo renglon en blanco

si yo pongo:

LCDOUT "BIENVENIDO " <-Aqui un espacio al final
LCDOUT $FE,1,"SANSON "

todo perfecto... 
aclaro que este error en la simulacion en proteus no es detectable solo al armarlo

otro error en Proteus es que si ocupo el I2CSpy al simular el circuito todo bien, pero al detener la ejecucion del simulado se cierra el ISIS y tengo que volver a cargar el diseño...

estos errores son en las versiones

pbp246 del picbasic
proteus 7.7 SP2


----------



## ByAxel (Nov 11, 2010)

lubeck dijo:


> Estaba haciendo un codigo en picbasic y me tope con un error para mi monumental en el compilado y consiste en lo siguiente:
> 
> utilizo un LCD 16x2
> 
> ...



Sobre el error del PicBasic no se (tengo el PBPV2.6).
Sobre el proteus o lo tienes mal instalado o tienes una licencia defectuosa (eso me ha sucedido y se cerraba) o lo tienes mal crackeado  pero si, se cierra... que mal, como todos los programas sufre de la enfermedad de los bugs...


----------



## lubeck (Nov 11, 2010)

> o tienes mal crackeado



Corrijo: Error en el crack del proteus 7.7 SP2


----------



## ByAxel (Nov 11, 2010)

@lubeck no comprendo... dices que con:

LCDOUT "BIENVENIDO"
LCDOUT $FE,1,"SANSON" ' Clear display y escribe "SANSON".

se mezclan las letras pero no, lo que sucede es que escribe "BIENVENIDO" y luego con el comando $FE,1 se borra todo quedando solo SANSON en la primera línea. Al agregar espacio al final sucede lo mismo.

Para escribir en ambas líneas es algo así:
LCDOUT $FE, 1, "BIENVENIDO"
LCDOUT $FE, $C0, "SANSON"

ya no hay errores...

- Y con el proteus ya no hay remedio


----------



## lubeck (Nov 11, 2010)

Perdon byaxel

si es correcto como lo escribes...
pongo...
LCDOUT $FE, 1, "BIENVENIDO"
LCDOUT $FE, $C0, "SANSON"

pero igual me los mezcla.... pone en la primer linea "ONSANSENIDO"

si pongo
LCDOUT $FE, 1, "BIENVENIDO "
LCDOUT $FE, $C0, "SANSON "

Pone en la primer linea BIENVENIDO
en la segunda            SANSON
con el espacio sale bien... armado en la realidad...


----------



## ByAxel (Nov 11, 2010)

Entiendo, debe ser el compilador...
Me atrevo a pensar que el espacio al final lo considera fin de la cadena (como en C) peeerooo , en fin no se puede hacer nada si lo compila así...

saludos


----------



## Moyano Jonathan (Nov 11, 2010)

Yo también tengo el problema de que se cierra...es por la licencia entonces ??


----------



## ByAxel (Nov 11, 2010)

Moyano Jonathan dijo:


> Yo también tengo el problema de que se cierra...es por la licencia entonces ??



Puede ser ya que eso me a sucedido...
Que se cierra cada cierto tiempo o cada cantidad de clics (muy raro ), supongo que es la licencia que no corresponde con el patch , bueno ya dejo de hablar de estas cosas...

saludos.


----------



## lubeck (Nov 11, 2010)

> bueno ya dejo de hablar de estas cosas...



mmm... pero a todos nos conviene y te digo porque...

el que hace cracks tiene que hacerlos mejor...
al que hace software le conviene para que compremos los originales...(el que pueda)
y nosotros los que usamos ese tipo de soft (didactico o no) no batallamos tanto al saber los errores...
y el foro creo que no incurre en ningún ilícito si se habla de ello... creo!


----------



## Moyano Jonathan (Nov 11, 2010)

no creo que haya nada ilicito en hablar de ello....igual me parece que me voy a instalar la versión anterior del proteus que tenía.....no me gusta que se me corte ....o cierre...el otro día estaba diseñando una entrenadora desde 0...la estaba terminando y plum !! se me cerró


----------



## ByAxel (Nov 11, 2010)

Me animan... en ese caso les puedo pasar la licencia y el patch para el 7.7SP2??   se cierra solo con el componente que dijo lubeck...
ammm espero no me envíen un MP...


----------



## lubeck (Nov 11, 2010)

si... hasta ahora es el unico problema que le he encontrado al 7.7sp2 con el i2csp, el 7.6 se me cerraba si cambiaba de ventana y me borraba el archivo en el 7.7sp2 ya no me pasa eso...

el otro dia estaba utilizando el DS1621 y creo que la libreria tambien esta mal la trama de control en el datasheet es una y en proteus es otra solo cambia se cambia un digito de los 8 primero...


----------



## Moyano Jonathan (Nov 11, 2010)

No no podés pasar crak ni patch en el foro...!! igual ya voy a solucionar de alguna forma por que me tiene arto que se me clave en la mitad de un proyecto...

Muchos dirán ....comprate una licencia.....pero NO TENER MONEDA PARA HACERLO jajajaj


----------



## lubeck (Nov 17, 2010)

Es por demas...

creo que otro error que hay en el proteus 7.7SP2 que tengo es que no sirve el USBCONN...
(busco informacion al respecto usando buscadores y no salen casos similares)
de ahi mi deduccion... no se si me falta algo


----------



## ByAxel (Nov 17, 2010)

Puede que si o no, pero has instalado los drivers del USB virtual? está en la carpeta de instalación ..\Proteus 7 Professional\USB Drivers.
El USB virtual en Win7 no funciona a la primera...


----------



## lubeck (Nov 17, 2010)

en el directorio de proteus7 profesional\usbDrivers

esta uno ejecutable nombrado installer.exe, ejecutarlo y aparece algo como esto y listo...
(cerrar todas la aplicaciones abiertas solo por si acaso)







igual lo considero un error deberia instalarse al instalar las aplicaciones del proteus... pero bueno estoy tan feliz que se las perdono!!!


----------



## antiworldx (Nov 17, 2010)

Insisto... el proteuss genera mas confusiones que las que soluciona... Mejor usen un buen debbuger.


----------



## Dr. Zoidberg (Nov 17, 2010)

antiworldx dijo:


> Insisto... el proteuss genera mas confusiones que las que soluciona... Mejor usen un buen debbuger.


Ya me lo recomendaron por poder simular la ejecución de un programa en PICs...LPQLP, programé un 12F629 y el código tenía un fragmento que se encargaba de leer el timer y en base a eso seguir calculando o esperar un poquito....pues resulta que no puede leer el TIMER!!!! Esa parte no funciona (no sé por que, pero en el 12F629 NO ANDA!!!), así que tuve que llevar el código a un modelo 16F84A y con ese si funciona (y me perdí un día tonteando con eso).....muy bueno el Proteus, eh???????
Finalmente lo probé por "hardware" con un osciloscopio y un medidor de período disparable...y anda bien (lo que yo ya sabía   )


----------



## ByAxel (Nov 17, 2010)

Bueno a cada quien son lo suyo al fin y al cabo todos lo usamos crackeado... 
Personalmente todo me ha ido bien excepto con los circuitos análogos donde prefiero otro software o armar uno real. Ha y a revisar el help del ISIS donde especifican sus limitaciones.


----------



## Dr. Zoidberg (Nov 17, 2010)

ByAxel dijo:


> Bueno a cada quien son lo suyo *al fin y al cabo todos lo usamos crackeado*...



NOP! Este tiene licencia ...es un 7.1 SP2, algo viejo pero no tanto como para que no funcione un PIC que es bastante mas viejo que el Proteus...

Por supuesto que nadie tenía idea de que eso sucedía... :enfadado: :enfadado: :enfadado:


----------



## ByAxel (Nov 17, 2010)

Que cosas no?... en ese caso quéjate del PIC12F6.DLL que debe estar mal echo...
mmmmm no se no me gusta... puedes subir el programa con el que probaste? que me pica la mano


----------



## Dr. Zoidberg (Nov 17, 2010)

No puedo pasarte todo , pero te dejo el fragmento que me ocasionó problemas:


```
/*   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   setup_vref(FALSE);*/
............    ...................
//   set_timer0( T100US );
    while( TRUE ) {
        delay_us( 80 );
//      while( get_timer0() != 0 );
//      set_timer0( T100US );
      cuenta++;
```
Lo que está comentado fué lo que hubo que quitar (creo) para migrar al 16F84A... y los 80us de delay es para reemplazar al tiempo de cálculo durante un ensayo.


----------



## ByAxel (Nov 17, 2010)

Haber:
- Cargas el timer con set_timer0( T100US ); al inicio,
- luego esperas a que se desborde el timer con while(get_rtcc() != 0);
- y vuelves a cargar con set_timer0(T100US); luego del while...

pues si lo lee, no sale del while hasta que el timer se desborde (condición verdadera hasta que sea cero),
probé con una variable y si lo lee.

simulé paso a paso con el proteus con el archivo *.cof que genera el CCS.

no veo el problema...


----------



## Dr. Zoidberg (Nov 17, 2010)

ByAxel dijo:
			
		

> simulé paso a paso con el proteus con el archivo *.cof que genera el CCS.
> 
> no veo el problema...


Yo tampoco lo veía...pero no andaba en el Proteus y sí en el hardware  
Hoy tal vez funcione, pero cuando tuve que hacerlo tenía esto (en el 2008):


			
				ezavalla dijo:
			
		

> NOP! Este tiene licencia ...*es un 7.1 SP2*, algo viejo pero no tanto como para que no funcione un PIC que es bastante mas viejo que el Proteus...


Casi tres años después todo es mas simple....pero ese PIC ya era viejo para la versión vieja del Proteus...


----------



## antiworldx (Nov 17, 2010)

Ezavalla! me sorprende que seas partidario del proteuss!


----------



## ByAxel (Nov 18, 2010)

ezavalla dijo:


> Yo tampoco lo veía...pero no andaba en el Proteus y sí en el hardware
> Hoy tal vez funcione, pero cuando tuve que hacerlo tenía esto (en el 2008):
> 
> Casi tres años después todo es mas simple....pero ese PIC ya era viejo para la versión vieja del Proteus...



Ya veo...
En fin, supongo que algún día me va a doler la cabeza cuando algo no me salga y sea mi culpa por no darme cuenta...  aunque suela rebuscar todo hasta encontrar la base del problema...

Saludos...


----------



## Dr. Zoidberg (Nov 18, 2010)

antiworldx dijo:


> Ezavalla! me sorprende que seas partidario del proteuss!


Yo? Partidario del PROTEUS???? Naaaaaa.....!!!!

Cuando lográs que funcione, sirve para evaluar - en líneas generales - el comportamiento del soft...y cuando no tenés un emulador o kit de desarrollo para probar no es mala idea usarlo. Es como todo...tiene limitaciones y es medio como para que cualquiera tarambana haga soft en un uC y lo pruebe, claro que el soft desarrollado es....como quien lo desarrolla  

Tampoco me anduvo bien con kernel real-time del CCS, pero esa prueba ni me acuerdo que era...por que mejor usé un analizador lógico para el tracking de los tiempos


----------



## lubeck (Nov 18, 2010)

> Cuando lográs que funcione, sirve para evaluar - en líneas generales - el comportamiento del soft...y cuando no tenés un emulador o kit de desarrollo para probar no es mala idea usarlo. Es como todo...tiene limitaciones y es medio como para que cualquiera tarambana haga soft en un uC y lo pruebe,



iba a opinar algo muy similar.... 

eso del debugger queda entre mis pendientes.... los he visto... pero queda para mi sigiente nivel yo todavia estoy muy verde...


----------



## lubeck (Nov 21, 2010)

Me parece que otro error...

Compre una Memoria 24C08A de atmel...

iba a grabarla con el winpic800 y resulta que se comieron 3/4 partes de la memoria los del winpic....

nada mas se pueden grabar 1024bytes...

¿¿¿¿y donde quedaron las otras tres paginas????
no le pusieron para cambiar de pagina 

creo!!!!!!


----------



## ByAxel (Nov 21, 2010)

Me anticipo, si me equivoco corrijanme que ver el data de las memorias me era confuso al principio...

*lubeck*, según el datasheet la memoria es de 8K (1024 x 8) bits es decir 8Kbits... la memoria solo tiene 1024 bytes.


----------



## lubeck (Nov 21, 2010)

si esta medio confuso byaxel... pero ya cai en la cuenta...

esta la tabla de control...



entonces se supone que esta divido en cuatro paginas....

en control 1010 0 00 0 -> de 0 a 255 en address
en control 1010 0 01 0 -> de 0 a 255 en address
en control 1010 0 10 0 -> de 0 a 255 en address
en control 1010 0 11 0 -> de 0 a 255 en address
                                  Total 1024 bytes

en lo que no caia es que son 8kilobits no 8kilobytes....

porque todo lo hacen tan confuso...

ok se salvo el winpic800 por esta ocasión...


----------



## ByAxel (Nov 21, 2010)

lubeck dijo:


> porque todo lo hacen tan confuso...


ni idea, eso lo aprendí viendo los data de las memorias de microchip que dicen lo mismo...
24xx08 => 8Kbit
24xx1025 => 1Mbit

supongo que hay alguna norma peerooo 

saludos


----------



## antiworldx (Nov 21, 2010)

lubeck dijo:


> porque todo lo hacen tan confuso...




Por que de otra forma, cualquier muggle (mortal) podria hacerlo. Todas las memorias vienen en Bits y no en Bytes.
Tambien hay que tomar en cuenta si son accesadas en serial, paralelo, byte, word, dword.


----------



## Dr. Zoidberg (Nov 21, 2010)

lubeck dijo:


> si esta medio confuso byaxel... pero ya cai en la cuenta...


Confuso????? Naaaaa...........   
Esto dice el datasheet de ATMEL (que es el mismo para la 24C02/04 y 08):


----------



## lubeck (Nov 21, 2010)

> Confuso????? Naaaaa.



Si EZ si son tan fregones porque no usan las nomenclaturas internacionales...
kb-->Kilobit
kB-->Kilobyte...

Lenguaje Chat
8K (K mayuscula????) ->8que->8q en resumen 8mil que ??? 

o son mas tontos que yo???


----------



## thenot (Nov 21, 2010)

Con respecto a lo de lubeck  (por lo que se hizo el post) yo tuve un problema exactamente igual, es mas diría el mismo. Yo tengo un lcd de 2x16 con el cual no me pasaba absolutamente nada con este código y funcionaba a la perfección.


```
' Setea el port de datos LCD
DEFINE LCD_DREG PORTB
' Setea el bit de comienzo de datos (0 o 4) si el bus es de 4-bit
DEFINE LCD_DBIT 0
' Setea el port LCD Register Select
DEFINE LCD_RSREG PORTB
' Setea el bit LCD Register Select
DEFINE LCD_RSBIT 6
' Setea el port LCD Enable
DEFINE LCD_EREG PORTB
' Setea el bit LCD Enable
DEFINE LCD_EBIT 7
' Setea el tamaño del bus LCD (4 o 8 bits)
DEFINE LCD_BITS 4
' Setea el numero de lineas en el LCD
DEFINE LCD_LINES 2
```

Y todo perfecto con este codigo en mi lcd. Hace unos meses me mandaron a hacer ($$) un entrenadora con un lcd, hice toda la entrenadora y para probarla use un mismo .hex que tenia de ejemplo para el mismo pic y frecuencia de trabajo y me pasaba exactamente lo mismo que a ti, la primera linea mostraba las lineas desde cualquier parte y las mezclaba con las que yo quería poner abajo, y abajo tampoco mostraba nada.. me molesto por un día completo, probaba mi lcd y mostraba todo bien, lo cambiaba por el nuevo y mostraba lo que quería y ya estaba a punto de ir a cambiarlo pensando que estaba malo.. Hasta que me puse a revisar otros códigos y vi que algunos tenían esto mas:

```
' Set command delay time in us
DEFINE LCD_COMMANDUS 2000
' Set data delay time in us
DEFINE LCD_DATAUS 50
```
Y se acabaron los problemas.. ahora mostraba lo que yo quería y mostraba la segunda linea. Asi que deben ser problemas de sincronismo de los lcd y que en algunos es mas sensible, así que quizás ese sea el problema que tienes, claro si es que ya no lo solucionaste.

Bueno es mi aporte... quizás a alguien le sirva XD

Saludos!!


----------



## lubeck (Nov 23, 2010)

Mmm... a ver este... 

Instale los drivers del USB y yo feliz como comente unos cuantos post atras....

ya estaba echo un bolido haciendo pruebas y saz!!!!!



tengo que reinstalar los drivers o reiniciar la maquina cada vez que pruebo algo....
ya probe en dos maquinas diferentes y lo mismo.... 

 me econtre esto en el foro....
https://www.forosdeelectronica.com/f13/problema-proteus-usb-37889/
(ya no soy el unico)


otro punto malo al proteus 7.7SP2 version didactica!!!!


----------



## ByAxel (Nov 24, 2010)

Al parecer ese error no solo es en el Win7 , mmm no error, lo veo que ese driver es inestable o hay cierto conflicto con algo para que no "inicie la simulación"; entre comillas ya que si funciona a la segunda o a la tercera y siempre pruebo con el archivo *.cof (si es que lo genera el compilador).

Otra cosa que noté es que con cada cambio en el programa era necesario cargar nuevamente el archivo en el PIC (solo así me funciona a la primera pero es un proceso incómodo ).

Y con el USB (no se el motivo) no es necesario poner el oscilador del PIC a 48Mhz, por eso sale la advertencia de "excessive CPU load"... lo pongo a 10Mhz o incuso menor e igualito me funciona, claro que ciertas rutinas del PIC que usen delays duran más pero lo importante es que funciona el USB virtual para hacer pruebitas.

No lo defiendo, es un claro y feo error


----------



## lubeck (Nov 24, 2010)

> Al parecer ese error no solo es en el Win7


Uso WinXP, y si creo que como que no quita bien el dispositivo del driver virtual por lo que no lo puede cargar nuevamente... ahora entiendo porque no lo hicieron que se instalara junto con e proteus... ellos ya sabían que no funciona 

con respecto  a la carga del CPU yo pensé que es porque tengo hasta el tope a mi probre pc, pero ya  elimine muchos programas residentes e igual sale, pero eso es menos molesto que lo del driver y solo es una advertencia... nada grave!...

digo sigo pensando que e proteus es un buen simulador pero como todos... tiene errores y horrores....

P.D. encontre uno en el PBP... lo confirmo y posteo...


----------

