kevin eccli
/
Freescale_CupV4
Adaptation K22F
Diff: Camera.cpp
- Revision:
- 0:6004a7230f87
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Camera.cpp Tue Dec 16 15:52:17 2014 +0000 @@ -0,0 +1,54 @@ +#include "Camera.h" + + +Camera::Camera(PinName pin_si, PinName pin_clk, PinName pin_ao, int periode_us) : ao(pin_ao),si(pin_si),clk(pin_clk) +{ + this->periode = periode_us; +} + +/*Quelques infos +Voir la doc de la cam +On genere une impulsion sur SI pour terminer l'acquisition en cours et signaler que l'on va lire les valeurs des pixels +La valeur d'un pixel est mis analogiquement sur AO apres chaque front montant d'horloge +SI et clk sont en quadratures de phase +Le temps d'intégration est le temps entre la lecture du 28 eme pixel et le prochain signal SI*/ +void Camera::capture(unsigned short *valeurs) +{ + //ENVOI DU SIGNAL DE START SUR SI(QUADRATURE DE PHASE AVEC CLK) + this->si.write(1); + wait_us(this->periode); + this->clk.write(1); + wait_us(this->periode); + this->si.write(0); + wait_us(this->periode); + this->ao.read_u16(); + this->clk.write(0); + + //RECUPERATION DES DONNEES + wait_us(this->periode); + for (int i = 0; i < 128; i++) + { + wait_us(this->periode); + wait_us(this->periode); + this->clk.write(1); + wait_us(this->periode); + wait_us(this->periode); + //this->ao.read(); pour avoir des flottants sur [0;1] + valeurs[i] = this->ao.read_u16(); + this->clk.write(0); + } + + //PROCEDURE DE TERMINAISON + wait_us(this->periode); + wait_us(this->periode); + this->clk.write(1); + wait_us(this->periode); + wait_us(this->periode); + this->clk.write(0); + +} + +void Camera::setPeriod(int periode) +{ + this->periode = periode; +} \ No newline at end of file