TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: Doctorg en 11 de Mayo de 2005, 13:31:00

Título: Ayuda Programar Atmel en C
Publicado por: Doctorg en 11 de Mayo de 2005, 13:31:00
Tengo un problema: Necesito hacer una funcion para ahorrar espacio en una plaqueta con un microcontrolador en c pero no cazo una goma

La funcion es esta:

   ____________________________
_________________________
Z=p1.1 + p1.2 *(p1.3 (+) p1.1 + p1.4)


Tengo que guardar el valor de z en una posicion de memoria y sacar el resultado por el p1.5 del microcontrolador
Título: RE: Ayuda Programar Atmel en C
Publicado por: xerex en 11 de Mayo de 2005, 16:43:00

Lo primero que tienes que hacer es pasar las sumas a multiplicaciones con  operaciones logicas mediante la simplificacion de la doble negacion:

si no me equivoco queda asi (espero haberlo copiado exactamente):

        Z = !p1.1 && !p1.2 && !(!(p1.3^p1.1) && !p1.4)

||          OR lógico
&&          AND lógico
!           NOT lógico
^             XOR lógico


Creo que la funcion te queda entonces asi, Te devuelve el valor de Z y la pones donde quieras. Te recuerdo que es un bit solamente.

bit funcion(void)
{
bit Z;
   
        Z = (!p1.1) && (!p1.2) && (!(!(p1.3^p1.1) && !p1.4)); // Realizamos operacion
        p1.5=Z; // asignamos el valor de Z y lo sacamos por p1.5
        return (Z); // retornamos el valor de Z a la variable de tipo bit que quieras
}

Revisa la simplificacion y ya esta te deberia funcionar. Un saludo.
Título: RE: Ayuda Programar Atmel en C
Publicado por: xerex en 11 de Mayo de 2005, 16:44:00
me he dado cuenta que tambien podemos utilizar la funcion OR pero bueno cuestion de gustos. la funcion sigue siendo la misma.
Título: RE: Ayuda Programar Atmel en C
Publicado por: Doctorg en 11 de Mayo de 2005, 18:25:00
Eso mismo que me pusiste lo tengo que poner en el keil y deberia funcionar?

Desde ya te agradezco infinitamente Muchas risas
Título: RE: Ayuda Programar Atmel en C
Publicado por: xerex en 12 de Mayo de 2005, 12:06:00
si debe funcionar en keil? pues si, si los puertos se llaman asi y pones correctamente la funcion...

De todas formas me parece una mala gestion del micro si solo vas ha hacer un circuito conbinacional, prueba con logica programable que es mas sencillo y economico que un micro y es para lo que tu quieres, dibujas el esquema o lo programas en VHDL (similar a C) y lo pasas a una FPGA chiquitita y no tienes que aprender a programar los atmel ni ningun microcontrolador. Un saludo.