MacroRat / MouseCode

Dependencies:   ITG3200 QEI

Committer:
christine222
Date:
Thu May 18 02:52:22 2017 +0000
Revision:
21:9a6cb07bdcb6
Parent:
18:6a4db94011d3
better PID constants for forwardWallIR and added no wall encoder pid moveForwardEncoder() function that is used in forwardWallIR()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sahilmgandhi 18:6a4db94011d3 1 /* mbed Microcontroller Library
sahilmgandhi 18:6a4db94011d3 2 * Copyright (c) 2006-2013 ARM Limited
sahilmgandhi 18:6a4db94011d3 3 *
sahilmgandhi 18:6a4db94011d3 4 * Licensed under the Apache License, Version 2.0 (the "License");
sahilmgandhi 18:6a4db94011d3 5 * you may not use this file except in compliance with the License.
sahilmgandhi 18:6a4db94011d3 6 * You may obtain a copy of the License at
sahilmgandhi 18:6a4db94011d3 7 *
sahilmgandhi 18:6a4db94011d3 8 * http://www.apache.org/licenses/LICENSE-2.0
sahilmgandhi 18:6a4db94011d3 9 *
sahilmgandhi 18:6a4db94011d3 10 * Unless required by applicable law or agreed to in writing, software
sahilmgandhi 18:6a4db94011d3 11 * distributed under the License is distributed on an "AS IS" BASIS,
sahilmgandhi 18:6a4db94011d3 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sahilmgandhi 18:6a4db94011d3 13 * See the License for the specific language governing permissions and
sahilmgandhi 18:6a4db94011d3 14 * limitations under the License.
sahilmgandhi 18:6a4db94011d3 15 */
sahilmgandhi 18:6a4db94011d3 16 #ifndef MBED_SPISLAVE_H
sahilmgandhi 18:6a4db94011d3 17 #define MBED_SPISLAVE_H
sahilmgandhi 18:6a4db94011d3 18
sahilmgandhi 18:6a4db94011d3 19 #include "platform/platform.h"
sahilmgandhi 18:6a4db94011d3 20
sahilmgandhi 18:6a4db94011d3 21 #if DEVICE_SPISLAVE
sahilmgandhi 18:6a4db94011d3 22
sahilmgandhi 18:6a4db94011d3 23 #include "hal/spi_api.h"
sahilmgandhi 18:6a4db94011d3 24
sahilmgandhi 18:6a4db94011d3 25 namespace mbed {
sahilmgandhi 18:6a4db94011d3 26 /** \addtogroup drivers */
sahilmgandhi 18:6a4db94011d3 27 /** @{*/
sahilmgandhi 18:6a4db94011d3 28
sahilmgandhi 18:6a4db94011d3 29 /** A SPI slave, used for communicating with a SPI Master device
sahilmgandhi 18:6a4db94011d3 30 *
sahilmgandhi 18:6a4db94011d3 31 * The default format is set to 8-bits, mode 0, and a clock frequency of 1MHz
sahilmgandhi 18:6a4db94011d3 32 *
sahilmgandhi 18:6a4db94011d3 33 * @Note Synchronization level: Not protected
sahilmgandhi 18:6a4db94011d3 34 *
sahilmgandhi 18:6a4db94011d3 35 * Example:
sahilmgandhi 18:6a4db94011d3 36 * @code
sahilmgandhi 18:6a4db94011d3 37 * // Reply to a SPI master as slave
sahilmgandhi 18:6a4db94011d3 38 *
sahilmgandhi 18:6a4db94011d3 39 * #include "mbed.h"
sahilmgandhi 18:6a4db94011d3 40 *
sahilmgandhi 18:6a4db94011d3 41 * SPISlave device(p5, p6, p7, p8); // mosi, miso, sclk, ssel
sahilmgandhi 18:6a4db94011d3 42 *
sahilmgandhi 18:6a4db94011d3 43 * int main() {
sahilmgandhi 18:6a4db94011d3 44 * device.reply(0x00); // Prime SPI with first reply
sahilmgandhi 18:6a4db94011d3 45 * while(1) {
sahilmgandhi 18:6a4db94011d3 46 * if(device.receive()) {
sahilmgandhi 18:6a4db94011d3 47 * int v = device.read(); // Read byte from master
sahilmgandhi 18:6a4db94011d3 48 * v = (v + 1) % 0x100; // Add one to it, modulo 256
sahilmgandhi 18:6a4db94011d3 49 * device.reply(v); // Make this the next reply
sahilmgandhi 18:6a4db94011d3 50 * }
sahilmgandhi 18:6a4db94011d3 51 * }
sahilmgandhi 18:6a4db94011d3 52 * }
sahilmgandhi 18:6a4db94011d3 53 * @endcode
sahilmgandhi 18:6a4db94011d3 54 */
sahilmgandhi 18:6a4db94011d3 55 class SPISlave {
sahilmgandhi 18:6a4db94011d3 56
sahilmgandhi 18:6a4db94011d3 57 public:
sahilmgandhi 18:6a4db94011d3 58
sahilmgandhi 18:6a4db94011d3 59 /** Create a SPI slave connected to the specified pins
sahilmgandhi 18:6a4db94011d3 60 *
sahilmgandhi 18:6a4db94011d3 61 * mosi or miso can be specfied as NC if not used
sahilmgandhi 18:6a4db94011d3 62 *
sahilmgandhi 18:6a4db94011d3 63 * @param mosi SPI Master Out, Slave In pin
sahilmgandhi 18:6a4db94011d3 64 * @param miso SPI Master In, Slave Out pin
sahilmgandhi 18:6a4db94011d3 65 * @param sclk SPI Clock pin
sahilmgandhi 18:6a4db94011d3 66 * @param ssel SPI chip select pin
sahilmgandhi 18:6a4db94011d3 67 */
sahilmgandhi 18:6a4db94011d3 68 SPISlave(PinName mosi, PinName miso, PinName sclk, PinName ssel);
sahilmgandhi 18:6a4db94011d3 69
sahilmgandhi 18:6a4db94011d3 70 /** Configure the data transmission format
sahilmgandhi 18:6a4db94011d3 71 *
sahilmgandhi 18:6a4db94011d3 72 * @param bits Number of bits per SPI frame (4 - 16)
sahilmgandhi 18:6a4db94011d3 73 * @param mode Clock polarity and phase mode (0 - 3)
sahilmgandhi 18:6a4db94011d3 74 *
sahilmgandhi 18:6a4db94011d3 75 * @code
sahilmgandhi 18:6a4db94011d3 76 * mode | POL PHA
sahilmgandhi 18:6a4db94011d3 77 * -----+--------
sahilmgandhi 18:6a4db94011d3 78 * 0 | 0 0
sahilmgandhi 18:6a4db94011d3 79 * 1 | 0 1
sahilmgandhi 18:6a4db94011d3 80 * 2 | 1 0
sahilmgandhi 18:6a4db94011d3 81 * 3 | 1 1
sahilmgandhi 18:6a4db94011d3 82 * @endcode
sahilmgandhi 18:6a4db94011d3 83 */
sahilmgandhi 18:6a4db94011d3 84 void format(int bits, int mode = 0);
sahilmgandhi 18:6a4db94011d3 85
sahilmgandhi 18:6a4db94011d3 86 /** Set the spi bus clock frequency
sahilmgandhi 18:6a4db94011d3 87 *
sahilmgandhi 18:6a4db94011d3 88 * @param hz SCLK frequency in hz (default = 1MHz)
sahilmgandhi 18:6a4db94011d3 89 */
sahilmgandhi 18:6a4db94011d3 90 void frequency(int hz = 1000000);
sahilmgandhi 18:6a4db94011d3 91
sahilmgandhi 18:6a4db94011d3 92 /** Polls the SPI to see if data has been received
sahilmgandhi 18:6a4db94011d3 93 *
sahilmgandhi 18:6a4db94011d3 94 * @returns
sahilmgandhi 18:6a4db94011d3 95 * 0 if no data,
sahilmgandhi 18:6a4db94011d3 96 * 1 otherwise
sahilmgandhi 18:6a4db94011d3 97 */
sahilmgandhi 18:6a4db94011d3 98 int receive(void);
sahilmgandhi 18:6a4db94011d3 99
sahilmgandhi 18:6a4db94011d3 100 /** Retrieve data from receive buffer as slave
sahilmgandhi 18:6a4db94011d3 101 *
sahilmgandhi 18:6a4db94011d3 102 * @returns
sahilmgandhi 18:6a4db94011d3 103 * the data in the receive buffer
sahilmgandhi 18:6a4db94011d3 104 */
sahilmgandhi 18:6a4db94011d3 105 int read(void);
sahilmgandhi 18:6a4db94011d3 106
sahilmgandhi 18:6a4db94011d3 107 /** Fill the transmission buffer with the value to be written out
sahilmgandhi 18:6a4db94011d3 108 * as slave on the next received message from the master.
sahilmgandhi 18:6a4db94011d3 109 *
sahilmgandhi 18:6a4db94011d3 110 * @param value the data to be transmitted next
sahilmgandhi 18:6a4db94011d3 111 */
sahilmgandhi 18:6a4db94011d3 112 void reply(int value);
sahilmgandhi 18:6a4db94011d3 113
sahilmgandhi 18:6a4db94011d3 114 protected:
sahilmgandhi 18:6a4db94011d3 115 spi_t _spi;
sahilmgandhi 18:6a4db94011d3 116
sahilmgandhi 18:6a4db94011d3 117 int _bits;
sahilmgandhi 18:6a4db94011d3 118 int _mode;
sahilmgandhi 18:6a4db94011d3 119 int _hz;
sahilmgandhi 18:6a4db94011d3 120 };
sahilmgandhi 18:6a4db94011d3 121
sahilmgandhi 18:6a4db94011d3 122 } // namespace mbed
sahilmgandhi 18:6a4db94011d3 123
sahilmgandhi 18:6a4db94011d3 124 #endif
sahilmgandhi 18:6a4db94011d3 125
sahilmgandhi 18:6a4db94011d3 126 #endif
sahilmgandhi 18:6a4db94011d3 127
sahilmgandhi 18:6a4db94011d3 128 /** @}*/