Autor Tema: Acelerómetro 7660 QT necesidad de código base  (Leído 2398 veces)

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

Desconectado venerable13

  • PIC10
  • *
  • Mensajes: 45
Acelerómetro 7660 QT necesidad de código base
« en: 12 de Noviembre de 2010, 21:12:47 »
Hola, recibí muestras del 7660, he buscado en muchos foros sobre cómo programarlo (algún programa de ejempo) pero he leído que habían algunos que tenían problemas al programarlo con códigos dudosos, podrían hacerme el favor de pasarme un código simple de lectura de x y z y muestra en una lcd? Es mucho pedir? Al menos díganme donde está la librería que no la encuentro.

Mi objetivo sería hacer esto, pero con su versión digital (7260 analógico).

http://extremeelectronics.co.in/avr-tutorials/interfacing-mma7260-triple-axis-accelerometer-with-atmega32-avr-tutorial/

Alguien que me de código fresco para programarlo sobre esa base? No entiendo cómo podéis crear programas leyendoos los datasheets

Como puede que necesitase un giroscopio, es para obtener detalles de las aceleraciones aún cuando el móvil está girando conjuntamente con un acelerómetro no? O me equivoco, perdonen pero es que soy nobel en este tipo de sensores

Se supone que con esto ya debería saber programarlo? Primer enlace

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA7660FC&nodeId=01126911184209&fpsp=1&tab=Design_Tools_Tab


Muchas gracias, lo necesito para un proyecto de fisica. Saludos

« Última modificación: 12 de Noviembre de 2010, 22:23:18 por venerable13 »

Desconectado XAVICOROSS

  • PIC12
  • **
  • Mensajes: 93
Re: Acelerómetro 7660 QT necesidad de código base
« Respuesta #1 en: 13 de Noviembre de 2010, 20:49:46 »
Tengo un programa en codevision avr, dime en qué lenguaje y compilador programas tú...

Desconectado venerable13

  • PIC10
  • *
  • Mensajes: 45
Re: Acelerómetro 7660 QT necesidad de código base
« Respuesta #2 en: 15 de Noviembre de 2010, 10:32:56 »
ccs, el pic se manejarlo, la lcd también, me falta el acelerómetro que no lo he tocado nunca.

Leí esto, de aquí puedo coger la base?

http://www.8051projects.net/forum-t36313.html

la librería es esta:

Código: [Seleccionar]
/* Based on MMA7660FC */
/*
** ###################################################################
**     Filename  : MMA7660.h
**     DataSheet : MMA7660FC Rev 3 Release Date: April 2009
**     Compiler  : CodeWarrior compiler
**     Date/Time : 5/14/09, 11:11 AM
**     Abstract  :
**         This header implements the register set for the MMA7660FC.
**
** ###################################################################
*/

#ifndef _MMA7660_H
#define _MMA7660_H

/****************************************Registers****************************************/
#define XOUT        0x00
#define YOUT        0x01
#define ZOUT        0x02
#define TILT        0x03
#define SRST        0x04
#define SPCNT       0x05
#define INTSU       0x06
#define MODE        0x07
#define SR          0x08
#define PDET        0x09
#define PD          0x0A


/********************XOUT 0x00********************/
typedef union {
 byte Byte;
 struct{
   byte XOUT0           :1;
   byte XOUT1           :1;
   byte XOUT2           :1;
   byte XOUT3           :1;
   byte XOUT4           :1;
   byte XOUT5           :1;
   byte ALERT           :1;
   byte                 :1;         
 }  Bits;
 struct {
   byte  grpXOUT        :6;
   byte                 :1;
   byte                 :1;
 }  Merged;
} XOUT_STR;

extern volatile XOUT_STR _XOUT;
#define XOUT_REG               _XOUT.Byte
#define XOUT_XOUT0          _XOUT.bits.XOUT0
#define XOUT_XOUT1          _XOUT.bits.XOUT1
#define XOUT_XOUT2          _XOUT.bits.XOUT2
#define XOUT_XOUT3          _XOUT.bits.XOUT3
#define XOUT_XOUT4          _XOUT.bits.XOUT4
#define XOUT_XOUT5          _XOUT.bits.XOUT5
#define XOUT_ALERT          _XOUT.bits.ALERT

#define XOUT_XOUT           _XOUT.Merged.grpXOUT

#define XOUT_XOUT0_MASK             1
#define XOUT_XOUT1_MASK             2
#define XOUT_XOUT2_MASK             4
#define XOUT_XOUT3_MASK             8
#define XOUT_XOUT4_MASK             16
#define XOUT_XOUT5_MASK             32
#define XOUT_ALERT_MASK             64

#define XOUT_XOUT_MASK      127


/********************YOUT 0x01********************/
typedef union {
 byte Byte;
 struct{
   byte YOUT0           :1;
   byte YOUT1           :1;
   byte YOUT2           :1;
   byte YOUT3           :1;
   byte YOUT4           :1;
   byte YOUT5           :1;
   byte ALERT           :1;
   byte                 :1;         
 }  Bits;
 struct {
   byte  grpYOUT        :6;
   byte                 :1;
   byte                 :1;
 }  Merged;
} YOUT_STR;

extern volatile YOUT_STR _YOUT;
#define YOUT_REG               _YOUT.Byte
#define YOUT_YOUT0          _YOUT.bits.YOUT0
#define YOUT_YOUT1          _YOUT.bits.YOUT1
#define YOUT_YOUT2          _YOUT.bits.YOUT2
#define YOUT_YOUT3          _YOUT.bits.YOUT3
#define YOUT_YOUT4          _YOUT.bits.YOUT4
#define YOUT_YOUT5          _YOUT.bits.YOUT5
#define YOUT_ALERT          _YOUT.bits.ALERT

#define YOUT_YOUT           _YOUT.Merged.grpYOUT

#define YOUT_YOUT0_MASK             1
#define YOUT_YOUT1_MASK             2
#define YOUT_YOUT2_MASK             4
#define YOUT_YOUT3_MASK             8
#define YOUT_YOUT4_MASK             16
#define YOUT_YOUT5_MASK             32
#define YOUT_ALERT_MASK             64


#define YOUT_YOUT_MASK      127


/********************ZOUT 0x02********************/
typedef union {
 byte Byte;
 struct{
   byte ZOUT0           :1;
   byte ZOUT1           :1;
   byte ZOUT2           :1;
   byte ZOUT3           :1;
   byte ZOUT4           :1;
   byte ZOUT5           :1;
   byte ALERT           :1;
   byte                 :1;         
 }  Bits;
 struct {
   byte  grpZOUT        :6;
   byte                 :1;
   byte                 :1;
 }  Merged;
} ZOUT_STR;

extern volatile ZOUT_STR _ZOUT;
#define ZOUT_REG            _ZOUT.Byte
#define ZOUT_ZOUT0          _ZOUT.bits.ZOUT0
#define ZOUT_ZOUT1          _ZOUT.bits.ZOUT1
#define ZOUT_ZOUT2          _ZOUT.bits.ZOUT2
#define ZOUT_ZOUT3          _ZOUT.bits.ZOUT3
#define ZOUT_ZOUT4          _ZOUT.bits.ZOUT4
#define ZOUT_ZOUT5          _ZOUT.bits.ZOUT5
#define ZOUT_ALERT          _ZOUT.bits.ALERT

#define ZOUT_ZOUT           _ZOUT.Merged.grpZOUT

#define ZOUT_ZOUT0_MASK             1
#define ZOUT_ZOUT1_MASK             2
#define ZOUT_ZOUT2_MASK             4
#define ZOUT_ZOUT3_MASK             8
#define ZOUT_ZOUT4_MASK             16
#define ZOUT_ZOUT5_MASK             32
#define ZOUT_ALERT_MASK             64


#define ZOUT_ZOUT_MASK      127


/********************TILT 0x03********************/
typedef union {
 byte Byte;
 struct{
   byte BAFRO0           :1;
   byte BAFRO1           :1;
   byte POLA0            :1;
   byte POLA1            :1;
   byte POLA2            :1;
   byte PULSE            :1;
   byte ALERT            :1;
   byte SHAKE            :1;         
 }  Bits;
 struct {
   byte  grpBAFRO        :2;
   byte  grpPOLA         :3;
   byte                  :3;
 }  Merged;
} TILT_STR;

extern volatile TILT_STR _TILT;
#define TILT_REG            _TILT.Byte
#define TILT_BAFRO0         _TILT.bits.BAFRO0
#define TILT_BAFRO1         _TILT.bits.BAFRO1
#define TILT_POLA0          _TILT.bits.POLA0
#define TILT_POLA1          _TILT.bits.POLA1
#define TILT_POLA2          _TILT.bits.POLA2
#define TILT_PULSE          _TILT.bits.PULSE
#define TILT_ALERT          _TILT.bits.ALERT
#define TILT_SHAKE          _TILT.bits.SHAKE

#define TILT_BAFRO          _TILT.Merged.grpBAFRO
#define TILT_POLA           _TILT.Merged.grpPOLA

#define TILT_BAFRO0_MASK            1
#define TILT_BAFRO1_MASK            2
#define TILT_POLA0_MASK             4
#define TILT_POLA1_MASK             8
#define TILT_POLA2_MASK             16
#define TILT_PULSE_MASK             32
#define TILT_ALERT_MASK             64
#define TILT_SHAKE_MASK             128

#define TILT_BAFRO_MASK              3
#define TILT_POLA_MASK              28


/********************SRST 0x04********************/
typedef union {
 byte Byte;
 struct{
   byte AMSRS           :1;
   byte AWSRS           :1;
   byte                 :1;
   byte                 :1;
   byte                 :1;
   byte                 :1;
   byte                 :1;
   byte                 :1;         
 }  Bits;
 struct {
   byte                 :8;
 }  Merged;
} SRST_STR;

extern volatile SRST_STR _SRST;
#define SRST_REG           _SRST.Byte
#define SRST_AMSRS         _SRST.bits.AMSRS
#define SRST_AWSRS         _SRST.bits.AWSRS

#define SRST_AMSRS_MASK            1
#define SRST_AWSRS_MASK            2


/********************SPCNT 0x05********************/

typedef union {
 byte Byte;
 struct{
   byte SC0            :1;
   byte SC1            :1;
   byte SC2            :1;
   byte SC3            :1;
   byte SC4            :1;
   byte SC5            :1;
   byte SC6            :1;
   byte SC7            :1;         
 }  Bits;
 struct {
   byte  grpSC         :8;
 }  Merged;
} SPCNT_STR;

extern volatile SPCNT_STR _SPCNT;
#define SPCNT_REG         _SPCNT.Byte
#define SPCNT_SC0         _SPCNT.bits.SC0
#define SPCNT_SC1         _SPCNT.bits.SC1
#define SPCNT_SC2         _SPCNT.bits.SC2
#define SPCNT_SC3         _SPCNT.bits.SC3
#define SPCNT_SC4         _SPCNT.bits.SC4
#define SPCNT_SC5         _SPCNT.bits.SC5
#define SPCNT_SC6         _SPCNT.bits.SC6
#define SPCNT_SC7         _SPCNT.bits.SC7

#define SPCNT_SC          _SPCNT.Merged.grpSC

#define SPCNT_SC0_MASK             1
#define SPCNT_SC1_MASK             2
#define SPCNT_SC2_MASK             4
#define SPCNT_SC3_MASK             8
#define SPCNT_SC4_MASK             16
#define SPCNT_SC5_MASK             32
#define SPCNT_SC6_MASK             64
#define SPCNT_SC7_MASK             128

#define SPCNT_SC_MASK              255



/********************INTSU 0x06********************/

typedef union {
 byte Byte;
 struct{
   byte FBINT            :1;
   byte PLINT            :1;
   byte PDINT            :1;
   byte ASINT            :1;
   byte GINT             :1;
   byte SHINTZ           :1;
   byte SHINTY           :1;
   byte SHINTX           :1;         
 }  Bits;
 struct {
   byte                  :8;
 }  Merged;
} INTSU_STR;

extern volatile INTSU_STR _INTSU;
#define INTSU_REG           _INTSU.Byte
#define INTSU_FBINT         _INTSU.bits.FBINT
#define INTSU_PLINT         _INTSU.bits.PLINT
#define INTSU_PDINT         _INTSU.bits.PDINT
#define INTSU_ASINT         _INTSU.bits.ASINT
#define INTSU_GINT          _INTSU.bits.GINT
#define INTSU_SHINTZ        _INTSU.bits.SHINTZ
#define INTSU_SHINTY        _INTSU.bits.SHINTY
#define INTSU_SHINTX        _INTSU.bits.SHINTX


#define INTSU_FBINT_MASK            1
#define INTSU_PLINT_MASK            2
#define INTSU_PDINT_MASK            4
#define INTSU_ASINT_MASK            8
#define INTSU_GINT_MASK             16
#define INTSU_SHINTZ_MASK           32
#define INTSU_SHINTY_MASK           64
#define INTSU_SHINTX_MASK           128


/********************MODE 0x07********************/

typedef union {
 byte Byte;
 struct{
   byte MDE            :1;
   byte                :1;
   byte TON            :1;
   byte AWE            :1;
   byte ASE            :1;
   byte SCPS           :1;
   byte IPP            :1;
   byte IAH            :1;         
 }  Bits;
 struct {
   byte                  :8;
 }  Merged;
} MODE_STR;

extern volatile MODE_STR _MODE;
#define MODE_REG           _MODE.Byte
#define MODE_MODE        _MODE.bits.MDE
#define MODE_TON         _MODE.bits.TON
#define MODE_AWE         _MODE.bits.AWE
#define MODE_ASE         _MODE.bits.ASE
#define MODE_SCPS        _MODE.bits.SCPS
#define MODE_IPP         _MODE.bits.IPP
#define MODE_IAH         _MODE.bits.IAH


#define MODE_MODE_MASK           1
#define MODE_TON_MASK            4
#define MODE_AWE_MASK            8
#define MODE_ASE_MASK            16
#define MODE_SCPS_MASK           32
#define MODE_IPP_MASK            64
#define MODE_IAH_MASK            128


/********************SR 0x08********************/
typedef union {
 byte Byte;
 struct{
   byte AMSR0            :1;
   byte AMSR1            :1;
   byte AMSR2            :1;
   byte AWSR0            :1;
   byte AWSR1            :1;
   byte FILT0            :1;
   byte FILT1            :1;
   byte FILT2            :1;         
 }  Bits;
 struct {
   byte  grpAMSR         :3;
   byte  grpAWSR         :2;
   byte  grpFILT         :3;
 }  Merged;
} SR_STR;

extern volatile SR_STR _SR;
#define SR_REG           _SR.Byte
#define SR_AMSR0         _SR.bits.AMSR0
#define SR_AMSR1         _SR.bits.AMSR1
#define SR_AMSR2         _SR.bits.AMSR2
#define SR_AWSR0         _SR.bits.AWSR0
#define SR_AWSR1         _SR.bits.AWSR1
#define SR_FILT0         _SR.bits.FILT0
#define SR_FILT1         _SR.bits.FILT1
#define SR_FILT2         _SR.bits.FILT2

#define SR_AMSR          _SR.Merged.grpAMSR
#define SR_AWSR          _SR.Merged.grpAWSR
#define SR_FILT          _SR.Merged.grpFILT

#define SR_AMSR0_MASK             1
#define SR_AMSR1_MASK             2
#define SR_AMSR2_MASK             4
#define SR_AWSR0_MASK             8
#define SR_AWSR1_MASK             16
#define SR_FILT0_MASK             32
#define SR_FILT1_MASK             64
#define SR_FILT2_MASK             128

#define SR_AMSR_MASK              7
#define SR_AWSR_MASK              24
#define SR_FILT_MASK              224



/********************PDET 0x09********************/
typedef union {
 byte Byte;
 struct{
   byte PDTH0            :1;
   byte PDTH1            :1;
   byte PDTH2            :1;
   byte PDTH3            :1;
   byte PDTH4            :1;
   byte XDA              :1;
   byte YDA              :1;
   byte ZDA              :1;         
 }  Bits;
 struct {
   byte  grpPDTH         :5;
   byte                  :3;
 }  Merged;
} PDET_STR;

extern volatile PDET_STR _PDET;
#define PDET_REG           _PDET.Byte
#define PDET_PDTH0         _PDET.bits.PDTH0
#define PDET_PDTH1         _PDET.bits.PDTH1
#define PDET_PDTH2         _PDET.bits.PDTH2
#define PDET_PDTH3         _PDET.bits.PDTH3
#define PDET_PDTH4         _PDET.bits.PDTH4
#define PDET_XDA           _PDET.bits.XDA
#define PDET_YDA           _PDET.bits.YDA
#define PDET_ZDA           _PDET.bits.ZDA

#define PDET_PDTH          _PDET.Merged.grpPDTH

#define PDET_PDTH0_MASK             1
#define PDET_PDTH1_MASK             2
#define PDET_PDTH2_MASK             4
#define PDET_PDTH3_MASK             8
#define PDET_PDTH4_MASK             16
#define PDET_XDA_MASK               32
#define PDET_YDA_MASK               64
#define PDET_ZDA_MASK               128

#define PDET_AMPDET_MASK            31


/********************PD 0x0A********************/
typedef union {
 byte Byte;
 struct{
   byte PD0            :1;
   byte PD1            :1;
   byte PD2            :1;
   byte PD3            :1;
   byte PD4            :1;
   byte PD5            :1;
   byte PD6            :1;
   byte PD7            :1;         
 }  Bits;
 struct {
   byte  grpPD         :8;
 }  Merged;
} PD_STR;

extern volatile PD_STR _PD;
#define PD_REG         _PD.Byte
#define PD_PD0         _PD.bits.PD0
#define PD_PD1         _PD.bits.PD1
#define PD_PD2         _PD.bits.PD2
#define PD_PD3         _PD.bits.PD3
#define PD_PD4         _PD.bits.PD4
#define PD_PD5         _PD.bits.PD5
#define PD_PD6         _PD.bits.PD6
#define PD_PD7         _PD.bits.PD7

#define PD_PD          _PD.Merged.grpPD

#define PD_PD0_MASK             1
#define PD_PD1_MASK             2
#define PD_PD2_MASK             4
#define PD_PD3_MASK             8
#define PD_PD4_MASK             16
#define PD_PD5_MASK             32
#define PD_PD6_MASK             64
#define PD_PD7_MASK             128

#define PD_PD_MASK              255




#endif    //_MMA7660_H

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Acelerómetro 7660 QT necesidad de código base
« Respuesta #3 en: 15 de Noviembre de 2010, 12:31:51 »
Hola venerable, te hago una consulta. Compraste una demoboard? O soldaste vos mismo el integrado? Porq yo tengo un par de esos integrados pero son muy pequeños y no se como voy a hacer para soldarlos.
saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado venerable13

  • PIC10
  • *
  • Mensajes: 45
Re: Acelerómetro 7660 QT necesidad de código base
« Respuesta #4 en: 15 de Noviembre de 2010, 16:02:35 »
Tengo que soldarlo, ya veré como lo hago, alguien que nos diga como? Haré una placa normal con el orcad en modo SMD, y soldarlo puedes con una pistola de aire caliente especial, o creo que hay por ahi tutoriales para hacerlo de otra forma. Cualquier duda pregunta, la mía es cómo programarlo, xd porque he buscado ejemplos pero no los entiendo.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Acelerómetro 7660 QT necesidad de código base
« Respuesta #5 en: 15 de Noviembre de 2010, 19:56:18 »
Yo soldé un par de MMA7260 con el metodo q presenta nocturno aqui
Pero el 7660 es mucho mas pequeño y no se si podre hacer la plaquita inclusive.
Si logras soldarlo contanos como te fue.
Saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado venerable13

  • PIC10
  • *
  • Mensajes: 45
Re: Acelerómetro 7660 QT necesidad de código base
« Respuesta #6 en: 16 de Noviembre de 2010, 13:56:21 »
Lo soldaré cuando alguien me de una explicación consistente, tener un chip soldado que no se sabe manejar....

Desconectado venerable13

  • PIC10
  • *
  • Mensajes: 45
Re: Acelerómetro 7660 QT necesidad de código base
« Respuesta #7 en: 18 de Noviembre de 2010, 19:16:48 »
http://www.forosdeelectronica.com/f24/pic16f88-acelerometro-mma7660-46471/
http://forums.freescale.com/t5/8-Bit-Microcontrollers/Problems-with-MMA7660/m-p/54971
https://www.8051projects.net/forum-t36313-last.html

Encontré esos  alguien puede unirlos para leer y mostrar resultados en una lcd o qué me diga cómo inicializarlo, leer las coordenadas, guardarlas en variables y yo ya me ocupo de mostrarlas en una lcd?

No creo que sea tan complicado no? xd