Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: UITDSP_ADDA_Example2
tim4_slaveSelect.hpp@0:46d099dfd9d6, 2015-03-14 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sat Mar 14 06:49:49 2015 +0000
- Revision:
- 0:46d099dfd9d6
1
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MikamiUitOpen | 0:46d099dfd9d6 | 1 | //------------------------------------------------------ |
| MikamiUitOpen | 0:46d099dfd9d6 | 2 | // Class for generate SPI slave select using TIM4 |
| MikamiUitOpen | 0:46d099dfd9d6 | 3 | // |
| MikamiUitOpen | 0:46d099dfd9d6 | 4 | // Default pin assignments: PB_6 (D10) |
| MikamiUitOpen | 0:46d099dfd9d6 | 5 | // PB_7, PB_8 (D15), and PB_9 (D14) also can be used |
| MikamiUitOpen | 0:46d099dfd9d6 | 6 | // 2014/12/21, Copyright (c) 2014 MIKAMI, Naoki |
| MikamiUitOpen | 0:46d099dfd9d6 | 7 | //------------------------------------------------------ |
| MikamiUitOpen | 0:46d099dfd9d6 | 8 | |
| MikamiUitOpen | 0:46d099dfd9d6 | 9 | #ifndef TIM4_SLAVESELECT_HPP |
| MikamiUitOpen | 0:46d099dfd9d6 | 10 | #define TIM4_SLAVESELECT_HPP |
| MikamiUitOpen | 0:46d099dfd9d6 | 11 | |
| MikamiUitOpen | 0:46d099dfd9d6 | 12 | #include "mbed.h" |
| MikamiUitOpen | 0:46d099dfd9d6 | 13 | |
| MikamiUitOpen | 0:46d099dfd9d6 | 14 | namespace Mikami |
| MikamiUitOpen | 0:46d099dfd9d6 | 15 | { |
| MikamiUitOpen | 0:46d099dfd9d6 | 16 | class Tim4_ss |
| MikamiUitOpen | 0:46d099dfd9d6 | 17 | { |
| MikamiUitOpen | 0:46d099dfd9d6 | 18 | public: |
| MikamiUitOpen | 0:46d099dfd9d6 | 19 | Tim4_ss(uint16_t psc, // prescaler |
| MikamiUitOpen | 0:46d099dfd9d6 | 20 | uint16_t arr = 18, // auto-reload register |
| MikamiUitOpen | 0:46d099dfd9d6 | 21 | PinName pin = PB_6) // pin name |
| MikamiUitOpen | 0:46d099dfd9d6 | 22 | : myTim_(TIM4) |
| MikamiUitOpen | 0:46d099dfd9d6 | 23 | { |
| MikamiUitOpen | 0:46d099dfd9d6 | 24 | PwmOut css(pin); |
| MikamiUitOpen | 0:46d099dfd9d6 | 25 | myTim_->CR1 |= TIM_CR1_OPM; // one-pulse mode |
| MikamiUitOpen | 0:46d099dfd9d6 | 26 | myTim_->PSC = psc; // prescaler |
| MikamiUitOpen | 0:46d099dfd9d6 | 27 | myTim_->ARR = arr; // pulse width |
| MikamiUitOpen | 0:46d099dfd9d6 | 28 | if (pin == PB_6) myTim_->CCR1 = 1; |
| MikamiUitOpen | 0:46d099dfd9d6 | 29 | if (pin == PB_7) myTim_->CCR2 = 1; |
| MikamiUitOpen | 0:46d099dfd9d6 | 30 | if (pin == PB_8) myTim_->CCR3 = 1; |
| MikamiUitOpen | 0:46d099dfd9d6 | 31 | if (pin == PB_9) myTim_->CCR4 = 1; |
| MikamiUitOpen | 0:46d099dfd9d6 | 32 | if ( (pin != PB_6) && (pin != PB_7) |
| MikamiUitOpen | 0:46d099dfd9d6 | 33 | &&(pin != PB_8) && (pin != PB_9) ) |
| MikamiUitOpen | 0:46d099dfd9d6 | 34 | { |
| MikamiUitOpen | 0:46d099dfd9d6 | 35 | fprintf(stderr, "\r\nIllegal pin name in Tim4_ss class\r\n"); |
| MikamiUitOpen | 0:46d099dfd9d6 | 36 | while (true) {} |
| MikamiUitOpen | 0:46d099dfd9d6 | 37 | } |
| MikamiUitOpen | 0:46d099dfd9d6 | 38 | } |
| MikamiUitOpen | 0:46d099dfd9d6 | 39 | // Generate slave select |
| MikamiUitOpen | 0:46d099dfd9d6 | 40 | void SlaveSelect() |
| MikamiUitOpen | 0:46d099dfd9d6 | 41 | { |
| MikamiUitOpen | 0:46d099dfd9d6 | 42 | myTim_->CNT = 0; // Set counter 0 |
| MikamiUitOpen | 0:46d099dfd9d6 | 43 | myTim_->CR1 |= TIM_CR1_CEN; // Enable TIM4 |
| MikamiUitOpen | 0:46d099dfd9d6 | 44 | __NOP(); |
| MikamiUitOpen | 0:46d099dfd9d6 | 45 | __NOP(); |
| MikamiUitOpen | 0:46d099dfd9d6 | 46 | __NOP(); |
| MikamiUitOpen | 0:46d099dfd9d6 | 47 | __NOP(); |
| MikamiUitOpen | 0:46d099dfd9d6 | 48 | #ifdef __STM32F411xE_H |
| MikamiUitOpen | 0:46d099dfd9d6 | 49 | __NOP(); |
| MikamiUitOpen | 0:46d099dfd9d6 | 50 | __NOP(); |
| MikamiUitOpen | 0:46d099dfd9d6 | 51 | #endif // __STM32F411xE_H |
| MikamiUitOpen | 0:46d099dfd9d6 | 52 | } |
| MikamiUitOpen | 0:46d099dfd9d6 | 53 | private: |
| MikamiUitOpen | 0:46d099dfd9d6 | 54 | TIM_TypeDef* myTim_; |
| MikamiUitOpen | 0:46d099dfd9d6 | 55 | |
| MikamiUitOpen | 0:46d099dfd9d6 | 56 | // Forbid to use copy constructor |
| MikamiUitOpen | 0:46d099dfd9d6 | 57 | Tim4_ss(const Tim4_ss&); |
| MikamiUitOpen | 0:46d099dfd9d6 | 58 | // Forbid to use substitution operator |
| MikamiUitOpen | 0:46d099dfd9d6 | 59 | Tim4_ss operator=(const Tim4_ss&); |
| MikamiUitOpen | 0:46d099dfd9d6 | 60 | }; |
| MikamiUitOpen | 0:46d099dfd9d6 | 61 | } |
| MikamiUitOpen | 0:46d099dfd9d6 | 62 | #endif // TIM4_SLAVESELECT_HPP |