29-Counter-Library (ATMega)

-die Library implementiert Funktionen um Impulszeiten und Periodendauern zu messen.

-es wird ein 16Bit-Timer und ein Interrupt-Eingang dafür benutzt.

Funktionen :

1
2
3
4
5
6
7
void MK3_INIT_COUNTER(void);                              // zum initialisieren
void MK3_COUNTER_SET(CNT_TYP c_typ, START_TRG c_on, STOP_TRG c_off);  // zum setzen
void MK3_COUNTER_START(void);                             // zum starten
void MK3_COUNTER_STOP(void);                              // zum stoppen
bool MK3_COUNTER_CHECK(void);                             // test auf Event
CNT_EVENT MK3_COUNTER_READ_EVENT(void);                   // Event auslesen
unsigned int MK3_COUNTER_READ_TIME(void);                 // Wert auslesen

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
55
56
57
58
59
60
61
62
63
64
//-----------------------------------------------------------------------------
// Title      : bsp_ub050_mk3_counter3
//-----------------------------------------------------------------------------
// Funktion   : Counter Test3
// Schaltung  : myAVR MK3
//-----------------------------------------------------------------------------
// Prozessor  : ATMega2560
// Takt       : 16 MHz
// Sprache    : C
// Date       : 16.06.2012
// Version    : 1.0
// Autor      : UB
//-----------------------------------------------------------------------------
#define F_CPU 16000000
#include <avr/io.h>
#include <ub_mk3_2560/MK3_2560_COUNTER.h>
#include <ub_mk3_2560/MK3_2560_LCD.h>
#include <UB_MK3_2560/MK3_2560_PWM.h>
 
//-----------------------------------------------------------------------------
// Hinweis :
// - Quick-Jumper Port-C+A muss gesetzt sein
// - Verbindung vom PWM-2 (Port-G, Bit-5)
//   zum ICP1-Pin (Port-D, Bit-4) muss gemacht werden
// - benutzt Counter Funktion um eine
//   Periodendauer am ICP-1 Pin zu messen
// - Frq wird per PWM Nr.2 erzeugt
//
//-----------------------------------------------------------------------------
int main (void)
{
  float a=0.0;
  float b=123.4;
  float c=5678.9;
  unsigned int n=0;
 
  MK3_INIT_COUNTER(); // init vom Counter
  MK3_INIT_LCD(); // Init vom Display
 
  MK3_INIT_PWM(PWM_2,PWM_LO);
  MK3_PWM_SET(PWM_2,128);
 
  MK3_LCD_CLEAR();
  MK3_LCD_LIGHT(true);
 
  MK3_LCD_STRING_AT(0,0,"Counter-Test 3");
  MK3_LCD_STRING_AT(0,16,"Messung : ICP-1");
 
  // Counter starten im Mode : Millisekunden
  // und Periodenmessung an ICP1-Pin
  MK3_COUNTER_SET(TYP_US_10000,START_NOW,CYCLE_ICP);
 
  while (true)
  {
    // Daueranzeige vom Ergebnis
    // Ergebnis muesste ca 250 us sein
    if(MK3_COUNTER_CHECK()==true) {
      n=MK3_COUNTER_READ_TIME();
      MK3_LCD_UINT_AT(0,40,n);
      MK3_LCD_STRING_AT(35,40,"us");
    }
  }
  return 0;
}

Hier die Library zum download :

UB_MK3_2560_COUNTER_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.