Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
et:competition:cart:software [2012/04/10 18:01] – tekitatud raivo.sellet:competition:cart:software [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Tarkvaranäide ====== ====== Tarkvaranäide ======
 +
 +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.
 +
 +{{:software:codes:uh_anduri_yhendus.jpg?250|}}{{:software:codes:mootori_yhendus.jpg?250|}}
 +
 +<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 <stdio.h>
 +#include "homelab/pin.h"
 +#include "homelab/delay.h"
 +#include <homelab/module/sensors.h>
 +
 +#define PWM_PERIOD      (F_CPU / 8 / 5000)
 +
 +// 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)
 + //Väärtus on korrutatud läbi 10-ga, seegamax kiirusele vastab 2,55 m
 + hv_pwm_value(0, ultrasonic_measure_srf05(pin_trigger_echo)*10);
 + }
 +}
 +</code>
 +
 +
 +
 +
 +
 +
 +====== Keerukam näide ======
 +
 +Failid pakituna projektiks:
 +  * {{:software:codes:uh_andur_eclipse.zip| Eclipse projekt}}
 +===== Peaprogramm - main.c =====
 +
 +
 <code c> <code c>
  
Line 23: Line 163:
 // Autor: Heiko Pikner // Autor: Heiko Pikner
 // //
-// Compiler :AVR-GCC +// Compiler: AVR-GCC 
-// Chip type           :Atmega2561 +// Chip type: Atmega2561 
 //***************************************************************************** //*****************************************************************************
  
Line 38: Line 178:
 // UH anduri viik // UH anduri viik
 pin pin_trigger_echo = PIN(F, 2); pin pin_trigger_echo = PIN(F, 2);
 +pin sensors = PIN(G, 0);
  
 // LEDide viigud // LEDide viigud
Line 68: Line 208:
  pin_setup_output(led_yellow);  pin_setup_output(led_yellow);
  pin_setup_output(led_green);  pin_setup_output(led_green);
 +    // Anduriplaat välistele anduritele
 +        pin_setup_output(sensors);
 + pin_set(sensors);
    
  // Seab nupud töökorda  // Seab nupud töökorda
Line 179: Line 322:
  
  
-====== PWM Teek ======+===== PWM Teek - HvPWM.c =====
  
 <code c> <code c>
Line 284: Line 427:
 </code> </code>
  
-====== PWM teegi päisfail ======+===== PWM teegi päisfail - HvPWM.h =====
 <code c> <code c>
 #ifndef HVPWM_H  #ifndef HVPWM_H 
Line 303: Line 446:
  
 </code> </code>
- 
et/competition/cart/software.1334080873.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0