This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:competition:cart:software [2012/04/12 11:32] – raivo.sell | et:competition:cart:software [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| Järgnev näide ei kasuta Kodulabori teegi alalisvoolu mootorite kiiruse juhtimise teeki, vaid on tehtud riistvaralise PWM väljundi peale, mis on Mootori moodulil ühendatud servo pistikutesse. | Järgnev näide ei kasuta Kodulabori teegi alalisvoolu mootorite kiiruse juhtimise teeki, vaid on tehtud riistvaralise PWM väljundi peale, mis on Mootori moodulil ühendatud servo pistikutesse. | ||
| + | |||
| + | |||
| + | ====== Lihtsustatud näide ====== | ||
| + | Lihtsustatud näide suunab UH anduri lugemi otse mootori kiiruseks. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | <code c> | ||
| + | // | ||
| + | // Vajalik riistvara: | ||
| + | // 1. Kodulabori kontrollermoodul ATmega2561 | ||
| + | // 3. Kodulabori mootorite moodul ja andurite moodul või Kombo moodul | ||
| + | // 4. UH andur | ||
| + | // 5. Alalisvoolumootor | ||
| + | // | ||
| + | // Kirjeldus: | ||
| + | // Programm seadistab riistvaralise PWM-i kasutama servopistikuid. Ultraheli anduri näit antakse otse | ||
| + | // mootori kiiruseks. Kiiruse vahemik 0-255 | ||
| + | // | ||
| + | // Kasutamine: | ||
| + | // Ühenda moodulid kokku. Ühenda UH andur Viiku ADC3 / PF3 | ||
| + | // Ühenda mootori maa Servo pistiku GND viiguga ja mootori juhtkaabel servo pistiku signaali viiguga. | ||
| + | // Servo pistiku keskmine viik (+5 V) jääb ühendamata. | ||
| + | // | ||
| + | // Autor: Heiko Pikner, Raivo Sell | ||
| + | // | ||
| + | // Compiler: AVR-GCC | ||
| + | // Chip type: Atmega2561 | ||
| + | // | ||
| + | //#include < | ||
| + | #include " | ||
| + | #include " | ||
| + | #include < | ||
| + | |||
| + | #define PWM_PERIOD | ||
| + | |||
| + | // Kasutusel servopistik. Protsessori viigud PB5 ja PB6 | ||
| + | static pin servo_pins[2] = | ||
| + | { | ||
| + | PIN(B, 5), PIN(B, 6) | ||
| + | }; | ||
| + | |||
| + | void hv_pwm_init(unsigned char index) | ||
| + | { | ||
| + | // Seadista PWM viik väljundiks. | ||
| + | pin_setup_output(servo_pins[index]); | ||
| + | |||
| + | // Seadista timeri kontrollregister | ||
| + | // Clear OUTA and OUTB on compare match | ||
| + | // Fast PWM mode with ICR = TOP | ||
| + | // Prescaler 8 | ||
| + | timer1_init_fast_pwm( | ||
| + | TIMER1_PRESCALE_8, | ||
| + | TIMER1_FAST_PWM_TOP_ICR, | ||
| + | TIMER1_FAST_PWM_OUTPUT_CLEAR_ON_MATCH, | ||
| + | TIMER1_FAST_PWM_OUTPUT_CLEAR_ON_MATCH, | ||
| + | TIMER1_FAST_PWM_OUTPUT_DISABLE); | ||
| + | |||
| + | // TOP period | ||
| + | timer1_set_input_capture_value(PWM_PERIOD); | ||
| + | } | ||
| + | |||
| + | |||
| + | // | ||
| + | // PWM väärtuse muutmine | ||
| + | // index - Servo pins 0-1. | ||
| + | // position 0-255. PWM value. | ||
| + | // | ||
| + | void hv_pwm_value(unsigned char index, unsigned int value) | ||
| + | { | ||
| + | switch (index) | ||
| + | { | ||
| + | case 0: | ||
| + | |||
| + | timer1_set_compare_match_unitA_value(value); | ||
| + | if(OCR1A == 0) | ||
| + | { | ||
| + | DDRB &= ~(1 << DDB5); | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | DDRB |= (1 << DDB5); | ||
| + | } | ||
| + | |||
| + | |||
| + | break; | ||
| + | |||
| + | case 1: | ||
| + | timer1_set_compare_match_unitB_value(value); | ||
| + | if(OCR1B == 0) | ||
| + | { | ||
| + | DDRB &= ~(1 << DDB6); | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | DDRB |= (1 << DDB6); | ||
| + | } | ||
| + | |||
| + | break; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // | ||
| + | // Põhiprogramm | ||
| + | // | ||
| + | int main(void) | ||
| + | { | ||
| + | // UH anduri viik | ||
| + | pin pin_trigger_echo = PIN(F, 3); | ||
| + | // Anduriplaadi väliste andurite viik | ||
| + | pin sensors = PIN(G, 0); | ||
| + | pin_setup_output(sensors); | ||
| + | pin_set(sensors); | ||
| + | // Mootori seadistamine | ||
| + | hv_pwm_init(0); | ||
| + | |||
| + | // Lõputu tsükkel | ||
| + | while (true) | ||
| + | { | ||
| + | // UH anduri mõõtetulemuse (cm) suunamine mootori kiiruseks (0-255) | ||
| + | // | ||
| + | hv_pwm_value(0, | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== Keerukam näide ====== | ||
| Failid pakituna projektiks: | Failid pakituna projektiks: | ||
| - | | + | * {{: |
| - | | + | |
| ===== Peaprogramm - main.c ===== | ===== Peaprogramm - main.c ===== | ||