Aus RN-Wissen.de
Dirk (Diskussion | Beiträge) K (→Planung) |
Dirk (Diskussion | Beiträge) K (→Planung) |
||
Zeile 39: | Zeile 39: | ||
#define CMD_SOUND 25 | #define CMD_SOUND 25 | ||
</pre> | </pre> | ||
− | + | 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. | |
− | 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. |
− | Befehl 3 schaltet die LEDs. Befehle 4, 5 gehen mit dem Mikro um. | + | Befehle 6-10 sind die SPI-Befehle. |
− | Befehle 6-10 sind die SPI-Befehle. | + | Befehle 11,12 gehören zum Watchdog-Timer (wie bei der Base!). |
− | 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 13-17 lesen und schreiben von/aus dem SPI-EEPROM auf der M32. | + | Befehle 18-22 steuern das LCD auf der M32 an. |
− | Befehle 18-22 steuern das LCD auf der M32 an. | + | 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> | ||
Zeile 81: | Zeile 79: | ||
#define I2C_REG_LEDS 29 | #define I2C_REG_LEDS 29 | ||
</pre> | </pre> | ||
− | + | Die REGs 0,1 sind die Interrupt- und Status-Register wie beim Base-Slave. | |
− | 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). |
− | 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 3-10 sind Leseregister der SPI- und SPI-EEPROM-Funktionen. | + | REGs 11-23 sind die freien ADC-Kanäle der M32. |
− | REGs 11-23 sind die freien ADC-Kanäle der M32. | + | REGs 23,24 sind der ADC-Wert des Mikro. |
− | REGs 23,24 sind der ADC-Wert des Mikro. | + | REGs 25,26 sind der ADC-Keypad-Wert. |
− | REGs 25,26 sind der ADC-Keypad-Wert. | + | 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!). |
Version vom 12. September 2012, 17:53 Uhr
Inhaltsverzeichnis
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)