43-Servo-Mess-Library (ATMega)

-diese Library dient zur Messung einer
Modellbau-Servo-Impulszeit

-es wird ein 16bit-Timer und ein Interrupt-Eingang benutzt

Funktionen :

1
2
void MK3_INIT_SERVOMESS(void);             // Initialisierung
unsigned int MK3_SERVOMESS_READ_US(void);  // Gemessener Impulswert in us

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//-----------------------------------------------------------------------------
// Title      : bsp_ub069_mk3_servomess
//-----------------------------------------------------------------------------
// Funktion   : Modellbau-Servo-Impuls-Messer
// Schaltung  : myAVR MK3
//-----------------------------------------------------------------------------
// Prozessor  : ATMega2560
// Takt       : 16 MHz
// Sprache    : C
// Date       : 06.02.2013
// Version    : 1.0
// Autor      : UB
//-----------------------------------------------------------------------------
#define F_CPU 16000000
#include <avr/io.h>
#include <ub_mk3_2560/MK3_2560_SERVO_MESS.h>
#include <ub_mk3_2560/MK3_2560_LCD.h>
 
//-----------------------------------------------------------------------------
// Hinweis : Jumper C+A muss gesetzt sein
// > Modellbau-Servo-Signal muss an Port-D Bit4 angeschlossen sein
// > Servo-Impulszeit wird am Display angezeigt
//-----------------------------------------------------------------------------
int main (void)
{
  unsigned int us_wert;
 
  MK3_INIT_LCD();
  MK3_LCD_CLEAR();
  MK3_LCD_LIGHT(true);
  MK3_LCD_STRING_AT(0,0,"Servo-Impuls-Messung");
 
  MK3_INIT_SERVOMESS(); // initialisierung
 
  while (true)
  {
    // Servo-Impuls messen
    us_wert=MK3_SERVOMESS_READ_US();
    if(us_wert<SERVOMESS_IMPULS_OK) {
      // wenn Impuls OK
      MK3_LCD_STRING_AT(0,16,"Impuls [us] =");
      MK3_LCD_PRINT_UINT(us_wert);
      MK3_LCD_STRING_AT(0,24,"    ");
    }
    else {
      // Fehleranzeige
      if(us_wert==SERVOMESS_WAITING) MK3_LCD_STRING_AT(0,24,"Wait");
      if(us_wert==SERVOMESS_IDLE)    MK3_LCD_STRING_AT(0,24,"Idle");
      if(us_wert==SERVOMESS_TOOHIGH) MK3_LCD_STRING_AT(0,24,"High");
      if(us_wert==SERVOMESS_OVF)     MK3_LCD_STRING_AT(0,24,"OVF ");
    }
  }
  return 0;
}

Hier die Library zum download :

UB_MK3_2560_SERVO_MESS_v100


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.