Przeglądaj źródła

Modification des Drivers reste a faire modification avec include des ports

CLUZE Remy -EXT 6 lat temu
rodzic
commit
5935e6fc5f
4 zmienionych plików z 58 dodań i 16 usunięć
  1. 8 2
      Include/Eeprom.h
  2. 2 0
      Include/RTC.h
  3. 46 9
      Source/Eeprom.c
  4. 2 5
      Source/RTC.c

+ 8 - 2
Include/Eeprom.h

@@ -25,13 +25,19 @@ void writeEeprom(int add, uint8_t *tab, int len){
 #ifndef EEPROM_H_
 #define EEPROM_H_
 
+#include <stdint.h>
+
+extern void readEeprom(int add, uint8_t *tab, int len);
+extern void writeEeprom(int add, uint8_t *tab, int len);
+
 #define EepromADD 0XA0
 
 uint16_t readPointerEcriture();
-void readPointerEcriture();
+void writePointerEcriture(uint16_t p);
+
 
 uint16_t readPointerLecture();
-void readPointerLecture();
+void writePointerLecture(uint16_t p);
 
 void writeData(uint8_t *tab, uint8_t size);
 

+ 2 - 0
Include/RTC.h

@@ -73,6 +73,8 @@ typedef struct {
 	uint8_t heure;
 }Heure;
 
+extern void readRTC(uint8_t add, uint8_t *tab, int len);
+extern void writeRTC(uint8_t add, uint8_t *tab, int len);
 void readHeure(Heure *heure);
 
 void readDate(Date *date);

+ 46 - 9
Source/Eeprom.c

@@ -1,31 +1,68 @@
 #include "Eeprom.h"
 
 
-uint16_t readPointerEcriture(){
 
+uint16_t readPointerEcriture(){
+	uint8_t t[2];
+	t[0]=0x00;
+	t[1]=0x00;
+	writeEeprom(EepromADD,t,2);
+	readEeprom(EepromADD,t,2);
+	uint16_t res = t[0]<<8 & t[1];
+	return res;
 }
 
-void readPointerEcriture(){
-
+void writePointerEcriture(uint16_t p){
+	uint8_t t[4];
+	t[0]=0x00;
+	t[1]=0x00;
+	t[2]=(uint8_t)p>>8;
+	t[3]=(uint8_t)p>>8;
+	writeEeprom(EepromADD,t,4);
 }
 
 uint16_t readPointerLecture(){
-
+	uint8_t t[2];
+	t[0]=0x00;
+	t[1]=0x01;
+	writeEeprom(EepromADD,t,2);
+	readEeprom(EepromADD,t,2);
+	uint16_t res = t[0]<<8 & t[1];
+	return res;
 }
 
-void readPointerLecture(){
-
+void writePointerLecture(uint16_t p){
+	uint8_t t[4];
+	t[0]=0x00;
+	t[1]=0x01;
+	t[2]=(uint8_t)p>>8;
+	t[3]=(uint8_t)p>>8;
+	writeEeprom(EepromADD,t,4);
 }
 
-void writeData(uint8_t *tab, uint8_t size){
 
+//ne fonctionne pas a refaire on eccrit même si on arrivent a la fin
+void writeDataFifo(uint8_t *tab, uint8_t size){
+	uint8_t t[size+2];
+	uint16_t pr = readPointerEcriture();
+	t[0]=(uint8_t)pr>>8;
+	t[1]=(uint8_t)pr;
+	for (int i= 0; i<size;i++)
+		t[i+2]=tab[i];
+	writeEeprom(EepromADD,t,size+2);
+
+	pr=pr+(size/2);//
+	if (pr>0x800)
+	writePointerEcriture(pr);
 }
 
-void readData(uint8_t *tab, uint8_t size){
+void readDataFifo(uint8_t *tab, uint8_t size){
 
 }
 
 //fonction pour tester le hard de l'Eeprom
 void testEeprom(){
-
+	uint16_t add = 0x04AA;
+	writePointerEcriture(add);
+	add = readPointerEcriture();
 }

+ 2 - 5
Source/RTC.c

@@ -6,7 +6,6 @@
  */
 
 #include "RTC.h"
-#include "i2c.h"
 
 void readHeure(Heure *heure){
 	uint8_t tab[2];
@@ -18,8 +17,6 @@ void readHeure(Heure *heure){
 void readDate(Date *date){
 	uint8_t tab[7];
 	readRTC(SECOND,tab,7);
-	//uint8_t sec10 = (((tab[0]&0X70)>>4)*10);
-	//uint8_t	sec =  tab[0]&0X0F;
 	date->second=(((tab[0]&0X70)>>4)*10)+(tab[0]&0X0F);
 	date->minute=(((tab[1]&0x70)>>4)*10)+(tab[1]&0X0F);
 	date->heure=(((tab[2]&0X30)>>4)*10)+(tab[2]&0X0F);
@@ -61,13 +58,13 @@ void testRTC(){
 	writeDate(&d);
 	redemareRTC();
 	HAL_Delay(2000);
-	readDate(d);
+	readDate(&d);
 	HAL_Delay(1);
 }
 
 void testBatteryRTC(){
 	redemareRTC();
 	Date d;
-	readDate(d);
+	readDate(&d);
 	HAL_Delay(1);
 }