|
121
|
Informática / Electrónica / Programador Eprom + Proyecto
|
en: 5 Diciembre 2005, 08:04 am
|
Desde hace tiempo tengo la "curiosidad" y "nececidad" de un Programador de memorias EPROM, en especial las de serie 27CXXX, en concreto la 27C256, el costo de estos dispositivos suele ser muy elevado aun siendo "basicos" estos programadores. Entonces con la experiencia de clases de electronica, de microprocesadores (z80), de PIC, etc. estoy tratando de fabricar mi propio programador de memorias (de moemnto 27C256 y con el tiempo, mediante software abarcar mas memorias y otros IC). Entonces, retomado lo que se habla aqui: http://foro.elhacker.net/index.php/topic,44211.0.htmlPrincipalmente en : ...Mensaje truncado... y pues kon respecto al precio por ahi encontre un katalogo kon varios programadores para todo tipo de dispositivos con sus precios http://www.kyheingenieria.com/catalogo02B.HTMseria interesante hacer uno rudimentario komo los que se hacen para PICs, kien tenga un diagrama y lista de elementos de un universal que lo comparta saludox[/color] Comence a investigar como programar la memoria 27C256, la info la saque del Datasheet el cual lo puedes bajar de mi pagina en la sección "Datasheets"... Observando la tabla de voltajes de Programacion, Lectura, Verificacion, etc. diseñe un circuito que me entregue tanto el voltaje de Lectura (5V) y el de Programacion ( normalmente 12.5 V). El diagrama y placa de circuito impreso lo puedes descargar de aqui: http://k.1asphost.com/NSGSystems/etc/gvpl.zi(Renombrar el archivo a extension ZIP) Todo el proyecto lo haré por Modulos, en este caso coloco el circuito al que llame "Generador de Voltaje de Programacion y Lectura". El circuito tiene un Header de 4 pines: Pin 1: GNDPin 2: VPPPin 3: INPin 4: OUTVPP debe ser de 15 VCD, la entrada IN debe ser de 0 o 5 Volts (señal de microcontrolador o Microprocesador, etc), en OUT tendremos: Con IN = 0 V o "0" logico ; OUT aproximadamente 5 V Con IN = 5 V o "1" logico ; OUT aproximadamente 12.4 a 12.8V Como ven, esto es solo el principio, en papel tengo diseñado la conexion de un PIC 16F84 a la EPROM y a este modulo, falta software, interfazado a la PC, etc... Lo hago con el proposito de recibir correcciones y consejos, ademas de compartir esto con quien quiera fabricar su propio programador "casero" pero profesional... En la proxima quiza tenga otro modulo, de momento les aseguro que el 1er modulo (GVPL) funciona... Cualquier duda, consejo, observacion es bien recibida... saludos
|
|
|
122
|
Programación / Programación Visual Basic / Re: Archivos .ini dentro de .exe
|
en: 3 Diciembre 2005, 11:38 am
|
El siguiente codigo va en un modulo, NO lo escribi yo, el autor es: ©Guillermo 'guille' Som, 1997-2001 < guille@costasol.net> Ver las funciones y subs que escribió, se explica por si solo en los comentarios: '--- Declaraciones para leer ficheros INI --- ' Leer todas las secciones de un fichero INI, esto seguramente no funciona en Win95 ' Esta función no estaba en las declaraciones del API que se incluye con el VB Public Declare Function GetPrivateProfileSectionNames Lib "kernel32" Alias "GetPrivateProfileSectionNamesA" _ (ByVal lpszReturnBuffer As String, ByVal nSize As Long, _ ByVal lpFileName As String) As Long
' Leer una sección completa Public Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" _ (ByVal lpAppName As String, ByVal lpReturnedString As String, _ ByVal nSize As Long, ByVal lpFileName As String) As Long
' Leer una clave de un fichero INI Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _ (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _ ByVal lpDefault As String, ByVal lpReturnedString As String, _ ByVal nSize As Long, ByVal lpFileName As String) As Long
' Escribir una clave de un fichero INI (también para borrar claves y secciones) Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _ (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _ ByVal lpString As Any, ByVal lpFileName As String) As Long
Public Sub IniDeleteKey(ByVal sIniFile As String, ByVal sSection As String, _ Optional ByVal sKey As String = "") '-------------------------------------------------------------------------- ' Borrar una clave o entrada de un fichero INI (16/Feb/99) ' Si no se indica sKey, se borrará la sección indicada en sSection ' En otro caso, se supone que es la entrada (clave) lo que se quiere borrar ' ' Para borrar una sección se debería usar IniDeleteSection ' If Len(sKey) = 0 Then ' Borrar una sección Call WritePrivateProfileString(sSection, 0&, 0&, sIniFile) Else ' Borrar una entrada Call WritePrivateProfileString(sSection, sKey, 0&, sIniFile) End If End Sub
Public Sub IniDeleteSection(ByVal sIniFile As String, ByVal sSection As String) '-------------------------------------------------------------------------- ' Borrar una sección de un fichero INI (04/Abr/01) ' Borrar una sección Call WritePrivateProfileString(sSection, 0&, 0&, sIniFile) End Sub
Public Function IniGet(ByVal sFileName As String, ByVal sSection As String, _ ByVal sKeyName As String, _ Optional ByVal sDefault As String = "") As String '-------------------------------------------------------------------------- ' Devuelve el valor de una clave de un fichero INI ' Los parámetros son: ' sFileName El fichero INI ' sSection La sección de la que se quiere leer ' sKeyName Clave ' sDefault Valor opcional que devolverá si no se encuentra la clave '-------------------------------------------------------------------------- Dim ret As Long Dim sRetVal As String ' sRetVal = String$(255, 0) ' ret = GetPrivateProfileString(sSection, sKeyName, sDefault, sRetVal, Len(sRetVal), sFileName) If ret = 0 Then IniGet = sDefault Else IniGet = Left$(sRetVal, ret) End If End Function
Public Sub IniWrite(ByVal sFileName As String, ByVal sSection As String, _ ByVal sKeyName As String, ByVal sValue As String) '-------------------------------------------------------------------------- ' Guarda los datos de configuración ' Los parámetros son los mismos que en LeerIni ' Siendo sValue el valor a guardar ' Call WritePrivateProfileString(sSection, sKeyName, sValue, sFileName) End Sub
Public Function IniGetSection(ByVal sFileName As String, _ ByVal sSection As String) As String() '-------------------------------------------------------------------------- ' Lee una sección entera de un fichero INI (27/Feb/99) ' Adaptada para devolver un array de string (04/Abr/01) ' ' Esta función devolverá un array de índice cero ' con las claves y valores de la sección ' ' Parámetros de entrada: ' sFileName Nombre del fichero INI ' sSection Nombre de la sección a leer ' Devuelve: ' Un array con el nombre de la clave y el valor ' Para leer los datos: ' For i = 0 To UBound(elArray) -1 Step 2 ' sClave = elArray(i) ' sValor = elArray(i+1) ' Next ' Dim i As Long Dim j As Long Dim sTmp As String Dim sClave As String Dim sValor As String ' Dim aSeccion() As String Dim n As Long ' ReDim aSeccion(0) ' ' El tamaño máximo para Windows 95 sBuffer = String$(32767, Chr$(0)) ' n = GetPrivateProfileSection(sSection, sBuffer, Len(sBuffer), sFileName) ' If n Then ' ' Cortar la cadena al número de caracteres devueltos sBuffer = Left$(sBuffer, n) ' Quitar los vbNullChar extras del final i = InStr(sBuffer, vbNullChar & vbNullChar) If i Then sBuffer = Left$(sBuffer, i - 1) End If ' n = -1 ' Cada una de las entradas estará separada por un Chr$(0) Do i = InStr(sBuffer, Chr$(0)) If i Then sTmp = LTrim$(Left$(sBuffer, i - 1)) If Len(sTmp) Then ' Comprobar si tiene el signo igual j = InStr(sTmp, "=") If j Then sClave = Left$(sTmp, j - 1) sValor = LTrim$(Mid$(sTmp, j + 1)) ' n = n + 2 ReDim Preserve aSeccion(n) aSeccion(n - 1) = sClave aSeccion(n) = sValor End If End If sBuffer = Mid$(sBuffer, i + 1) End If Loop While i If Len(sBuffer) Then j = InStr(sBuffer, "=") If j Then sClave = Left$(sBuffer, j - 1) sValor = LTrim$(Mid$(sBuffer, j + 1)) n = n + 2 ReDim Preserve aSeccion(n) aSeccion(n - 1) = sClave aSeccion(n) = sValor End If End If End If ' Devolver el array IniGetSection = aSeccion End Function
Public Function IniGetSections(ByVal sFileName As String) As String() '-------------------------------------------------------------------------- ' Devuelve todas las secciones de un fichero INI (27/Feb/99) ' Adaptada para devolver un array de string (04/Abr/01) ' ' Esta función devolverá un array con todas las secciones del fichero ' ' Parámetros de entrada: ' sFileName Nombre del fichero INI ' Devuelve: ' Un array con todos los nombres de las secciones ' La primera sección estará en el elemento 1, ' por tanto, si el array contiene cero elementos es que no hay secciones ' Dim i As Long Dim sTmp As String Dim n As Long Dim aSections() As String ' ReDim aSections(0) ' ' El tamaño máximo para Windows 95 sBuffer = String$(32767, Chr$(0)) ' ' Esta función del API no está definida en el fichero TXT n = GetPrivateProfileSectionNames(sBuffer, Len(sBuffer), sFileName) ' If n Then ' Cortar la cadena al número de caracteres devueltos sBuffer = Left$(sBuffer, n) ' Quitar los vbNullChar extras del final i = InStr(sBuffer, vbNullChar & vbNullChar) If i Then sBuffer = Left$(sBuffer, i - 1) End If ' n = 0 ' Cada una de las entradas estará separada por un Chr$(0) Do i = InStr(sBuffer, Chr$(0)) If i Then sTmp = LTrim$(Left$(sBuffer, i - 1)) If Len(sTmp) Then n = n + 1 ReDim Preserve aSections(n) aSections(n) = sTmp End If sBuffer = Mid$(sBuffer, i + 1) End If Loop While i If Len(sBuffer) Then n = n + 1 ReDim Preserve aSections(n) aSections(n) = sBuffer End If End If ' Devolver el array IniGetSections = aSections End Function
Public Function AppPath(Optional ByVal ConBackSlash As Boolean = True) As String ' Devuelve el path del ejecutable (23/Abr/02) ' con o sin la barra de directorios Dim s As String ' s = App.Path If ConBackSlash Then If Right$(s, 1) <> "\" Then s = s & "\" End If Else If Right$(s, 1) = "\" Then s = Left$(s, Len(s) - 1) End If End If AppPath = s End Function '------------------------------------------------------------------------------ ' Fin del código para acceder a los ficheros INIs '------------------------------------------------------------------------------
Para usar algunas funciones veamos el siguiente codigo: Dim sFichero as string, Temp As String, i As Long, tValores() As String
sFichero = App.Path & "\" & App.EXEName & ".exe" 'obtiene todas las llaves y lo mete en el array tValores = IniGetSection(sFichero, "Lista") If UBound(tValores) > 0 Then For i = 0 To UBound(tValores) Step 2 'Lee los valores Temp = IniGet(sFichero, "Lista", tValores(i)) Temp = Trim(Temp) 'Le quita los espacios If Len(Temp) > 0 Then cLista.AddItem Temp End If Next End If
El codigo anterior saca los valores de las llaves de la sección "Lista" y las mete en el ListBox llamado cListaEl INI embedido puede paracerse a esto: [Lista] key1=valor1 key2=valor2 . . . keyN=valorN Checa las demas funciones del modulo, algunas obtienen Todas las secciones, otras borran secciones,otras borran llaves,etc. Si no quedo claro el codigo, postea. saludos
|
|
|
123
|
Informática / Electrónica / Re: aumento de velocidad de internet
|
en: 28 Noviembre 2005, 06:31 am
|
me temo que es algo complicado, de hecho investiga diagramas de modems y cosas asi y verás que no es nada sencillo. De que SE puede SE puede, ( si pudieramos fabricar un modem como los usados en conexiones de alta velocidad ), y aun asi teniendo diagramas de estas cosas la cosa se complica al encontrar los Integrados que usan, otro inconveniente es que serian de montaje superficial (dificiles de soldar a mano), en fin, algo complicado...
|
|
|
124
|
Informática / Electrónica / PICAXE?
|
en: 28 Noviembre 2005, 06:20 am
|
Bueno, como lo dice el "Asunto", alguien sabe de estos dispositivos PICAXE: donde comprarlos, como pedirlos (que # de parte), el costo aproximado. Si no sabes nada de picaxe visita: http://www.rev-ed.co.uk/detail.asp?prodname=PICAXE&quick=1En resumen estos son PIC's con la diferencia que de fabrica le incroporan un Firmaware para que su programacion sea sencilla, de hecho la compañia que los vende le pide a Microchip los PIC's (especiales) y le insertan el firmware. Se programan por diagrama de flujo o BASIC y por tres pines. Los hay de 8,18,28 y 40 pines si no mal recuerdo. Realmete hasta el mas novato en electronica y uProcesadores podra programar y hacer pinitos con estos dispositivos. Lo que me pregunto es que No. de parte son (por ejemplo 16Cxxx) y donde conseguirlos en Mexico pues he preguntado por: ¿Tiene PICAXE 08 o 18? y dicen que no. gracias y saludos
|
|
|
125
|
Informática / Electrónica / Re: Planchar circuito
|
en: 28 Noviembre 2005, 05:59 am
|
Aqui les dejo un ejemplo de los resultados obtenidos con "La planchada de un PCB" y comparen mas o menos la calidad con la que queda nuestro PCB. El pcb en cuestion es este: Y la placa real "atacada" con acido y perforada: Son algo "profesionales" los resultados y bastante sencillo de elaborar; por cierto este PCB es un receptor de 144MHz o banda de 2 metros. saludos
|
|
|
126
|
Programación / Programación Visual Basic / Re: Archivos .ini dentro de .exe
|
en: 26 Noviembre 2005, 09:07 am
|
Que bien que tocan este tema, solo una observacion y/o "truco", como quieran llamarle.
Una vez embedi en un EXE y un INI asi:
.------------, | EXE | '------------' | INI | '...............'
Bueno, resulta ser que el EXE se ejecutaba correctamente y me pregunte:
¿ Porque no leer su contenido desde el mismo EXE sin extraer el INI? (NOTA: Esto con las API's dedicadas para ello)
Y asi lo hice, PUDE leer el contenido de las secciones y claves del INI embedido, el unico problema (obvio) es escribir nuevas secciones y/o claves...
Busco el codigo y lo posteo si alguien lo requiere....
saludos
|
|
|
127
|
Informática / Electrónica / Re: Decoder tipo multiplexor
|
en: 26 Noviembre 2005, 08:13 am
|
Lo que planteas no creo que lo encuentres, lo que nececitarias hacer es un circuito combinacional para que haga lo que quieres. La otra opcion es que en vez de usar un teclado decimal uses uno hexadecimal de conexion matricial y controlarlo por medio de un 74C922. Es facil de interfazar ambas cosas y el codigo de la tecla pulsada sale en un bus de 4 bits codificadas en binario. Revisa su Datasheet del IC para que te quede mas claro... el link: http://k.1asphost.com/NSGSystems/dsheet/74c922.pdfsaludos
|
|
|
128
|
Programación / Programación Visual Basic / Re: AutoEliminar programa
|
en: 22 Noviembre 2005, 11:19 am
|
Otra opcion que se me ocurre es agregar el comando en la llave de registro de inicio de windows, ya sea "Run" o "RunOnce",:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
update = del archivo.ext
el problema es que muestra la consola un "instante"
saludos
|
|
|
130
|
Informática / Electrónica / Re: Planchar circuito
|
en: 12 Noviembre 2005, 09:25 am
|
Oye Syphroot ¿cómo se llama el barniz verde que mencionas y dónde se suele encontrar? lo he buscado pero no lo encuentro :'( ¿en dónde lo compras tú? ya que aquí en mi pequeño rancho no hay nada, la tienda más grande es Steren pero parece que no lo tienen.
una vez lo vi, pero no lo compre (no tenia $$$), no recuerdo su nombre exacto, solo recuerdo que la marca era "Rapid Circuit", voy a investigar como se llama y lo compro, despues les digo su nombre exacto... saludos
|
|
|
|
|
|
|