[Aporte] Generador de Señales (DDS)

¿En que sentido te sale deformado? ¿La frecuencia es relativamente baja? ¿Cristal y fuses configurados para trabajar a 16MHz?
 
¿En que sentido te sale deformado? ¿La frecuencia es relativamente baja? ¿Cristal y fuses configurados para trabajar a 16MHz?

Senoidal:
senoida.jpg

Diente de sierra +:
d sierra.jpg

Triangular:
triangular.jpg


Fuses Leidos con AVRDUDES
Low: 0xEF
High: 0xC9
E: 0xFF ==> Desconozco que es.
LB: 0x3F

El codigo esta tal cual el tuyo solo cambiado de dispositivo a atmega32.

Fotos de Salida del conversor D/A
 
El el senoidal pareciera que les estuviera restando/sumando una continua (valor) en el recorrido de la tabla de valores. En la triangular invierte cada una por medio, como si cambiara de mendiente de positiva a negativa. mmmmm :unsure:
 
Pareciera como si los niveles bajos tuvieran el mismo peso que los altos.

Te tiro dos alternativas, quitá el amplificador de la salida del DAC y:

Alternativa 1- Con 7 cables conectados al zócalo del uC del puerto C, llevalos a un protoboard y juga con los niveles de los bits, probá con todos a GND, menos 1 que vaya a 5V. Con un tester deberías ir midiendo una tensión continua en la salida del DAC.

Alternativa 2- Esperame mañana a la tardecita que te hago un programa que haga esa secuencia de los bits para ver la salida del DAC.

En ambos casos deberías comprobar que:

VDAC=(2^n)*5V/256

Donde n es el número de bit (0 a 7) que está a 5V y el resto a GND.

Ejemplo bit 7 => VDAC=(2^7)*5/256=2,5V
Ejemplo bit 6 => VDAC=(2^6)*5/256=1,25V
... etc
 
Pareciera como si los niveles bajos tuvieran el mismo peso que los altos.

Te tiro dos alternativas, quitá el amplificador de la salida del DAC y:

Alternativa 1- Con 7 cables conectados al zócalo del uC del puerto C, llevalos a un protoboard y juga con los niveles de los bits, probá con todos a GND, menos 1 que vaya a 5V. Con un tester deberías ir midiendo una tensión continua en la salida del DAC.

Alternativa 2- Esperame mañana a la tardecita que te hago un programa que haga esa secuencia de los bits para ver la salida del DAC.

En ambos casos deberías comprobar que:

VDAC=(2^n)*5V/256

Donde n es el número de bit (0 a 7) que está a 5V y el resto a GND.

Ejemplo bit 7 => VDAC=(2^7)*5/256=2,5V
Ejemplo bit 6 => VDAC=(2^6)*5/256=1,25V
... etc

Si te espero, si no es mucha molestia. Voy a revisar una vez mas los valores de la red R2R y buscar errores en el pcb pero no creo que venga por ahi. Tambien lo realice con altium y el esquemático esta bien, sería raro que este mal el impreso.

Quedan dos opciones que el orden de los bits del puerto este cambiado "magicamente" o en el impreso. Veré y Veré el impreso
 
Dale, mañana te subo un programa que te haga la secuencia del puerto C.

Por otro lado, subí el esquemático en PDF, usá el smart pdf.

PD: verificá que el puerto 7 no esté en corto con 6 o que siempre esté a 5V, usá el OCR con una señal para ver eso.
 
Última edición:
Cosme, esta solucionado esto. Resulta que cuando estaba verificando lo anterior desolde parte de la R2R y al volver soldarla quedó un falso contacto. Ya genera sin problema en estos dias termino de arreglar otros detalles y lo subo por si alguien quiere hacerlo con este encapsulado!

Por otro lado debido al layout del pcb con este encapsulado me vi forzado a cambiar el puerto de los led y del Potenciómetro. Quedando de la siguiente manera:
dds.jpg

En vez de tu propuesta original:
dds cosme.png

En que secciones debo modificar el código para que funcionen los led y el pote correctamente?

Gracias por la buena onda!
 
Última edición:
Si no me equivoco (si, el soft lo hice yo, pero puede fallar :D), tenés que hacer las siguientes modificaciones:

1- En el archivo "Conversor_ADC.c", al principio de todo reemplazar:

Código:
//----------------- Señales Analógicas a convertir ---------//
#define CURSOR		PA7
//----------------- Señales Analógicas a convertir ---------//

Por...

Código:
//----------------- Señales Analógicas a convertir ---------//
#define CURSOR		PA0
//----------------- Señales Analógicas a convertir ---------//

2- En el archivo "defines.c", reemplazar:

Código:
/*	PUERTO SALIDA TTL		*/

#define PORT_SALIDA_TTL		PORTA
#define DDR_PORT_SALIDA_TTL	DDRA
#define PIN_PORT_SALIDA_TTL	PINA
#define BIT_SALIDA_TTL		PA4

/*	PUERTO SALIDA LEDS		*/

#define PORT_SALIDA_LED_TTL		PORTA
#define DDR_PORT_SALIDA_LED_TTL	DDRA
#define PIN_PORT_SALIDA_LED_TTL	PINA
#define BIT_LED_ANALOG			PA0
#define BIT_LED_TTL				PA1

Por...

Código:
/*	PUERTO SALIDA TTL		*/

#define PORT_SALIDA_TTL		PORTA
#define DDR_PORT_SALIDA_TTL	DDRA
#define PIN_PORT_SALIDA_TTL	PINA
#define BIT_SALIDA_TTL		PA3

/*	PUERTO SALIDA LEDS		*/

#define PORT_SALIDA_LED_TTL		PORTD
#define DDR_PORT_SALIDA_LED_TTL	DDRD
#define PIN_PORT_SALIDA_LED_TTL	PIND
#define BIT_LED_ANALOG			PD4
#define BIT_LED_TTL				PD5

3- En el archivo "main.c", reemplazar:

Código:
configura_puertos((1<<BIT_SALIDA_TTL)|(1<<BIT_LED_TTL)|(1<<BIT_LED_ANALOG),0x00,0xff,0x00);

Por...

Código:
configura_puertos((1<<BIT_SALIDA_TTL),0x00,0xff,(1<<BIT_LED_TTL)|(1<<BIT_LED_ANALOG));

Creo no olvidarme de nada, cualquier cosa avisá.

Saludos.
 
Genial Cosme, solucionado todo. Exceptuando todo menos el pote lo solucione un rato despues de consultarte, el pote lo tenía bien configurado pero el ruido me afectaba muchisimo. Me fue muy util tu ayuda para confirmar que esta todo ok!
Por otro lado no logro hacer correr el software de java, instale las ultimas versiones de java x64 y x86. Coloqué las librerías adjuntas en el soft en ambas carpetas jre y no se que mas se puede hacer.

Algun centro de que mas hacer? Nunca he ejecutado un .jar. Muchas gracias
 
Desde Windows 64 bits los pasos son los siguientes:

1- Abrir una ventana de comandos (Inicio -> escribir 'cmd' -> enter).
2- Escribir el siguiente comando: java -version (te tira un diálogo con la versión).
3- Ir a "...Archivos de Programas\Java\jre VERSION del paso 2" y copiar los archivos del RxTx64:
Copy RXTXcomm.jar ---> <JAVA_HOME>\jre\lib\ext
Copy rxtxSerial.dll ---> <JAVA_HOME>\jre\bin
Copy rxtxParallel.dll ---> <JAVA_HOME>\jre\bin
4- Copiar la carpeta "Generador de Señal" en la ubicación deseada.
5- En esa carpeta, manteniendo apretado el shift y tocando el botón derecho seleccionar "Abrir Ventana de comandos aquí".
6- Ejecutar el programa con el siguiente comando:java -jar Generador_de_Senial.jar

Se que hay una forma de hacer un .bat para que ejecute directamente desde el explorador de windows y evitar la línea de comandos.
 
Arriba