Autor Tema: pic16f877A a 10 bits!!  (Leído 1414 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado TrufiTrufi

  • PIC10
  • *
  • Mensajes: 1
pic16f877A a 10 bits!!
« en: 18 de Noviembre de 2011, 20:03:22 »
Solucionadoo!!Gracias!!
« Última modificación: 19 de Noviembre de 2011, 16:57:23 por TrufiTrufi »

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: pic16f877A a 10 bits!!
« Respuesta #1 en: 18 de Noviembre de 2011, 21:04:45 »
Pasate a pic18, ellos tienen adc de 10 bits, no tengas miedo.

A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: pic16f877A a 10 bits!!
« Respuesta #2 en: 18 de Noviembre de 2011, 22:30:49 »
  El 16F877 también tiene ADC de 10 bits;

  Para poder usar los 10 bits tenés que utilizar "Right Justified" y así vas a tener en ADRESH los 2 bit de mayor peso y en ADRESL los 8 bit de menor peso. Luego puedes almacenarlos en una variable int y listo. En Hitech podés hacer algo asi...

Código: C
  1. int lectura_adc; // declaracion de la variable
  2.  
  3. lectura_adc = (ADRESH<<8) + ADRESL;

la línea anterior multiplica por 256 ADRESH (para que ocupe el byte alto de la variable int) y luego sumo ADRESL

  Como una sugerencia yo hice lo siguiente para escribir en el timer1 (16bits) en una sola línea de C

Código: C
  1. volatile unsigned int TIMER1 @ &TMR1L; // con eso apunto mi variable a la dirección de TMR1L.
  2.  
  3. TIMER1 = 60000;  // al poner esto, se cargan perfectamente tanto TMR1H como TMR1L

  tal vez se pueda hacer algo similar con ADRESH y ADRESL
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas