Umdrehung zählen und Aktion durchführen

#1201871
Lesenswert?

hi @ all,

ich bin in dem gebiet noch ziemlich neu und habe schon die ersten 
tutorials gemacht. besitze das myavrmultiprog usb board mit dem atmega8 
von conrad.

ich möchte an meinem motorrad über einen reedkontakt einen controller 
ansteuern. sprich je radumdrehung = 1 signal. nach 50000x signalen 
sollte der controller einen ausgang für ca 5sek ansteuern. danach wieder 
von vorne.
hab da was mit interrupts gelesen komme aber noch nicht ganz weiter.

könnt ihr mir ein gutes tutorial zeigen oder einen tipp geben wie ich 
das auch als anfänger schnellstmöglich realisieren könnte?

gruss ralph
Gast #1201961
Lesenswert?

Hallo Ralph,

wenn das mal nichts mit einer Kettenschmierung zu tun hat.....

Als Link könnte Dir: 
http://www.mikrocontroller.net/articles/Fahrradcomputer helfen.

Evtl. ist für ein Moped ein Hall-Sensor besser geeignet, als ein 
Reed-Schalter.

Worüber Du Dir Gedanken machen musst, ist der störsichere Aufbau:

- Stromversorgung
- Sensoreingangsbeschaltung
- Ausgangsstufe

Gruss Otto
#1210288
Lesenswert?

Ja den kenn ich schon, daher ja die Idee es selber zu machen :P

Was haltet ihr davon:
1
;Reset and Interrupt vector             ;VNr.  Beschreibung
2
  rjmp  main  ;1   POWER ON RESET
3
  rjmp  takt  ;2   Int0-Interrupt (ext. Impuls)
4
  reti    ;3   Int1-Interrupt
5
  reti    ;4   TC2 Compare Match
6
  reti    ;5   TC2 Overflow
7
  reti    ;6   TC1 Capture
8
  reti    ;7   TC1 Compare Match A
9
  reti    ;8   TC1 Compare Match B
10
  reti    ;9   TC1 Overflow
11
  reti    ;10  TC0 Overflow
12
  reti    ;11  SPI, STC Serial Transfer Complete
13
  reti    ;12  UART Rx Complete
14
  reti    ;13  UART Data Register Empty
15
  reti    ;14  UART Tx Complete
16
  reti    ;15  ADC Conversion Complete
17
  reti    ;16  EEPROM Ready
18
  reti    ;17  Analog Comparator
19
  reti    ;18  TWI (I²C) Serial Interface
20
  reti    ;19  Store Program Memory Ready
21
;------------------------------------------------------------------------
22
;Start, Power ON, Reset
23
main:  ldi  r16,lo8(RAMEND)
24
  out  SPL,r16
25
  ldi  r16,hi8(RAMEND)
26
  out  SPH,r16
27
  ldi  r16,0b00000011
28
  in  r17,MCUCR
29
  or  r17,r16
30
  out  MCUCR,r17  ;ext.Interrupt mit Steigender Flanke auslösen
31
  ldi  r16,0b01000000
32
  out  GICR,r16
33
  ldi  r17,0  ;innerer Zähler (bis 250)
34
  ldi  r18,0  ;äußerer Zähler (bis 200)
35
  sei
36
;------------------------------------------------------------------------
37
mainloop:  wdr    ;endlosschleife
38

39
  rjmp  mainloop
40
;------------------------------------------------------------------------
41
takt:  ldi  r16,0b11111111
42
  dec  r17
43
  cp  r16,r17
44
  breq  outloop  ;wenn innerer Zähler = 255  springen
45
  reti
46

47

48
outloop:  ldi  r17,0
49
  ldi  r16,0b11001000
50
  dec  r18
51
  cp  r18,r16  ;wenn äußerer Zähler = 200 springen
52
  breq  aktion
53
  reti
54

55
aktion:  "Fehlt noch"

R17 zählt bis 250 und springt wieder auf 0. R18 inkrementiert immer wenn 
R17 voll ist. Wenn R18 bei 200 liegt soll die Aktion durchgeführt 
werden.
Sprich 250x200 = 50000 Signale vom Reedschalter, entspricht ca. 50km.

Könnte das so klappen?

Gruss Ralph

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren