Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter fuer schwierige und grosse Gaerten im Test

K (Planung)
K (Planung)
Zeile 96: Zeile 96:
 
  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/showthread.php?47198-RP6Control-M32-Neue-Library-Version-1.3beta V1.32beta] 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!).
  

Version vom 12. September 2012, 18:15 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_SET_HEARTBEAT			13

#define CMD_SPI_EEPROM_WRITEBYTE	14
#define CMD_SPI_EEPROM_WRITEWORD	15
#define CMD_SPI_EEPROM_ENABLEWRITE 	16
#define CMD_SPI_EEPROM_DISABLEWRITE 17
#define CMD_SPI_EEPROM_READBYTE		18
#define CMD_SPI_EEPROM_READWORD		19
#define CMD_SPI_EEPROM_GETSTATUS	20

#define CMD_INITLCD					21
#define CMD_CLEARLCD				22
#define CMD_WRITECHARLCD			23
#define CMD_WRITEINTEGERLCD			24
#define CMD_SETCURSORPOSLCD			25

#define CMD_BEEP					26
#define CMD_SETBEEPERPITCH			27
#define CMD_SOUND					28
Dabei setzt Befehl 0 die 8 freien I/O-Pins der M32 als Ein- oder Ausgänge.
Befehl 1 schaltet die einzelnen I/O-Portpins.
Befehl 2 ist Platzhalter ohne Funktion (z.B. zur Konfiguration des Slave).
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!).
Befehl 13 schaltet die LCD Heartbeat (Herzschlag) Funktion.
Befehle 14-20 lesen und schreiben von/aus dem SPI-EEPROM auf der M32.
Befehle 21-25 steuern das LCD auf der M32 an.
Befehle 26-28 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 V1.32beta 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