Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
LiFePO4 Speicher Test

K (Planung)
K (Planung)
Zeile 3: Zeile 3:
 
Erst mal die Planung:
 
Erst mal die Planung:
  
1. Der I2C-Slave für die M32 soll genauso arbeiten, wie der RP6Base I2C-Slave (RP6Base_I2CSlave.c) in den Demos.
+
* 1. Der I2C-Slave für die M32 soll genauso arbeiten, wie der RP6Base I2C-Slave (RP6Base_I2CSlave.c) in den Demos.
2. Er soll möglichst (fast) alle Funktionen/Ressourcen der M32 über I2C "fernsteuerbar" bzw. abfragbar machen.
+
* 2. Er soll möglichst (fast) alle Funktionen/Ressourcen der M32 über I2C "fernsteuerbar" bzw. abfragbar machen.
3. Er soll als I2C-Master eine andere M32, die CCPRO M128 oder die M256 WiFi akzeptieren.
+
* 3. Er soll als I2C-Master eine andere M32, die CCPRO M128 oder die M256 WiFi akzeptieren.
4. Er soll die I2C-Adresse 12 bekommen.
+
* 4. Er soll die I2C-Adresse 12 bekommen.
5. Er soll über XBUS INT2 mit dem Master verbunden sein.
+
* 5. Er soll über XBUS INT2 mit dem Master verbunden sein.
6. Er soll wie der Base-Slave auch eine Timeout-Funktion haben.
+
* 6. Er soll wie der Base-Slave auch eine Timeout-Funktion haben.
7. Er soll folgende Befehle (commands) über I2C verstehen:
+
* 7. Er soll folgende Befehle (commands) über I2C verstehen:
 
<pre>
 
<pre>
 
 
// Commands:
 
// Commands:
 
#define CMD_CONFIGIOS    0
 
#define CMD_CONFIGIOS    0
Zeile 49: Zeile 48:
 
Befehle 23-25 steuern den Sound mit dem Beeper.
 
Befehle 23-25 steuern den Sound mit dem Beeper.
  
8. Er soll folgende Register zum Lesen durch den Master vorhalten:
+
* 8. Er soll folgende Register zum Lesen durch den Master vorhalten:
 
+
 
<pre>
 
<pre>
 
#define I2C_REG_STATUS1    0
 
#define I2C_REG_STATUS1    0
Zeile 92: Zeile 90:
 
REGs 27,28 sind die Nummern der zuletzt losgelassenen bzw. gedrückten Taste.
 
REGs 27,28 sind die Nummern der zuletzt losgelassenen bzw. gedrückten Taste.
 
Mit REG 29 läßt sich der aktuelle Stand der 4 LEDs auslesen (an/aus).
 
Mit REG 29 läßt sich der aktuelle Stand der 4 LEDs auslesen (an/aus).
 
+
* 9. Er soll auf die RP6Control Library http://www.roboternetz.de/community/...ersion-1.3beta aufsetzen. Grund: Die aktuelle Lib V1.32beta ist voll kompatibel zur neuesten Version 1.3 und stellt mit eigenen Tasks schon regelmäßig die ADC-Werte und Werte der I/O-Ports zur Verfügung.
9. Er soll auf die RP6Control Library http://www.roboternetz.de/community/...ersion-1.3beta aufsetzen. Grund: Die aktuelle Lib V1.32beta ist voll kompatibel zur neuesten Version 1.3 und stellt mit eigenen Tasks schon regelmäßig die ADC-Werte und Werte der I/O-Ports zur Verfügung.
+
* 10. Bei Timeout soll die M32 funktionsfähig bleiben (Base-Slave bleibt dann in einer Endlosschleife stehen und muss resettet werden!).
+
10. Bei Timeout soll die M32 funktionsfähig bleiben (Base-Slave bleibt dann in einer Endlosschleife stehen und muss resettet werden!).
+
  
 
=I2C-Slave=
 
=I2C-Slave=

Version vom 12. September 2012, 17:51 Uhr

Planung

Erst mal die Planung:

  • 1. Der I2C-Slave für die M32 soll genauso arbeiten, wie der RP6Base I2C-Slave (RP6Base_I2CSlave.c) in den Demos.
  • 2. Er soll möglichst (fast) alle Funktionen/Ressourcen der M32 über I2C "fernsteuerbar" bzw. abfragbar machen.
  • 3. Er soll als I2C-Master eine andere M32, die CCPRO M128 oder die M256 WiFi akzeptieren.
  • 4. Er soll die I2C-Adresse 12 bekommen.
  • 5. Er soll über XBUS INT2 mit dem Master verbunden sein.
  • 6. Er soll wie der Base-Slave auch eine Timeout-Funktion haben.
  • 7. Er soll folgende Befehle (commands) über I2C verstehen:
// Commands:
#define CMD_CONFIGIOS    0
#define CMD_SETIOS     1
//#define CMD_CONFIG    2
#define CMD_SETLEDS     3
#define CMD_DISCHARGEPEAKDETECTOR 4
#define CMD_GETMICROPHONEPEAK  5
#define CMD_SETMEM_CS2    6
#define CMD_WRITESPI    7
#define CMD_WRITEWORDSPI   8
#define CMD_READSPI     9
#define CMD_READWORDSPI    10
#define CMD_SET_WDT     11
#define CMD_SET_WDT_RQ    12
#define CMD_SPI_EEPROM_WRITEBYTE 13
#define CMD_SPI_EEPROM_ENABLEWRITE  14
#define CMD_SPI_EEPROM_DISABLEWRITE 15
#define CMD_SPI_EEPROM_READBYTE  16
#define CMD_SPI_EEPROM_GETSTATUS 17
#define CMD_INITLCD     18
#define CMD_CLEARLCD    19
#define CMD_WRITECHARLCD   20
#define CMD_WRITEINTEGERLCD   21
#define CMD_SETCURSORPOSLCD   22
#define CMD_BEEP     23
#define CMD_SETBEEPERPITCH   24
#define CMD_SOUND     25

Dabei setzt Befehl 0 die 8 freien I/O-Pins der M32 als Ein- oder Ausgänge, Befehl 2 schaltet die einzelnen I/O-Portpins. Befehl 3 schaltet die LEDs. Befehle 4, 5 gehen mit dem Mikro um. Befehle 6-10 sind die SPI-Befehle. Befehle 11,12 gehören zum Watchdog-Timer (wie bei der Base!). Befehle 13-17 lesen und schreiben von/aus dem SPI-EEPROM auf der M32. Befehle 18-22 steuern das LCD auf der M32 an. Befehle 23-25 steuern den Sound mit dem Beeper.

  • 8. Er soll folgende Register zum Lesen durch den Master vorhalten:
#define I2C_REG_STATUS1     0
#define I2C_REG_STATUS2     1
#define I2C_REG_IO_STATUS     2
#define I2C_REG_MEM_CS2    3
#define I2C_REG_SPIBYTE    4
#define I2C_REG_SPIWORD_L   5
#define I2C_REG_SPIWORD_H   6
#define I2C_REG_SPIEEPROMSTATUS  7
#define I2C_REG_SPIEEPROMBYTE  8
#define I2C_REG_SPIEEPROMWORD_L  9
#define I2C_REG_SPIEEPROMWORD_H  10
#define I2C_REG_ADC_4_L      11
#define I2C_REG_ADC_4_H      12
#define I2C_REG_ADC_3_L      13
#define I2C_REG_ADC_3_H      14
#define I2C_REG_ADC_2_L      15
#define I2C_REG_ADC_2_H      16
#define I2C_REG_ADC_6_L     17
#define I2C_REG_ADC_6_H     18
#define I2C_REG_ADC_5_L    19
#define I2C_REG_ADC_5_H    20
#define I2C_REG_ADC_7_L      21
#define I2C_REG_ADC_7_H    22
#define I2C_REG_ADC_MIC_L     23
#define I2C_REG_ADC_MIC_H     24
#define I2C_REG_ADC_KEYPAD_L    25
#define I2C_REG_ADC_KEYPAD_H   26
#define I2C_REG_RELEASEDKEYNUMBER 27
#define I2C_REG_PRESSEDKEYNUMBER  28
#define I2C_REG_LEDS      29

Die REGs 0,1 sind die Interrupt- und Status-Register wie beim Base-Slave. IO-Status (REG 2) sind die 8 freien I/O-Ports (sofern auf Eingänge geschaltet). REGs 3-10 sind Leseregister der SPI- und SPI-EEPROM-Funktionen. REGs 11-23 sind die freien ADC-Kanäle der M32. REGs 23,24 sind der ADC-Wert des Mikro. REGs 25,26 sind der ADC-Keypad-Wert. REGs 27,28 sind die Nummern der zuletzt losgelassenen bzw. gedrückten Taste. Mit REG 29 läßt sich der aktuelle Stand der 4 LEDs auslesen (an/aus).

  • 9. Er soll auf die RP6Control Library http://www.roboternetz.de/community/...ersion-1.3beta aufsetzen. Grund: Die aktuelle Lib V1.32beta ist voll kompatibel zur neuesten Version 1.3 und stellt mit eigenen Tasks schon regelmäßig die ADC-Werte und Werte der I/O-Ports zur Verfügung.
  • 10. Bei Timeout soll die M32 funktionsfähig bleiben (Base-Slave bleibt dann in einer Endlosschleife stehen und muss resettet werden!).

I2C-Slave

I2C-Master (M256 WiFi)

Siehe auch


Weblinks


Autoren

--Dirk 16:31, 12. Sep 2012 (CET)


LiFePO4 Speicher Test