Komparator Interrupt

Gast #2438405
Lesenswert?

Hallo,

ich programmiere zur Zeit einen Tiny13 in Assembler.

Der µC läuft eine bestimmte Zeit (StBy-Schleife) bis er dann auf den
Ausgang durchschaltet.
Wenn ein Ereignis passiert (ÜBER EIN COMPARATOR INTERRUPT REALISIERT),
dann zählt der µC eine separate Zeit.

Die Zeit, die während des Interrupts verstreicht möchte ich
in der StBy-Schleife addieren (d.h. Zeit des Interrupts wird in 
StBy-Schleife eingerechnet)

PROBLEM: - am Simulator wird die Int-Zeit eingerechnet ->OK
         - sobald ich es an der Hardware(µC-Peripherie + Relais am 
Ausgang)
           anwende, wird der µC-Ausgang in der Form durchgeschaltet, 
dass
           die Abschaltzeit StBy-Zeit+Int-Zeit beträgt!!!???

Im Anhang ist die Syntax zu finden.
Angehängte Dateien:
#2438462
Lesenswert?

Bitte:
Poste doch Programmtext nicht als PDF.
Ein Programm ist erst mal nur ein Text. Für verschiedene Arten von Text 
kann das Forum da ein Syntaxhighlighting machen.
Das ist für dich angenehmer (weil du weniger Arbeit hast) und auch für 
uns (weil es besser lesbar ist)
1
;********************* StBySchleife **********************
2
NulldurchgangStBy:
3
  cbr Flagregister, pFlanke
4
  rjmp FlankeStBy0
5

6
FlankeStBy1:
7
  sbr Flagregister, pFlanke
8

9
FlankeStBy0:
10
  sbis pinb, 0
11
  rjmp FlankeStBy1
12
  sbrs Flagregister, 5
13
  rjmp FlankeStBy0
14

15
StBy:
16
  inc Timertaktzaehler
17
  cpi Timertaktzaehler, 50 ; entspricht 1 Sec
18
  brne Sprungziel11
19
  clr Timertaktzaehler
20
  add StBySec, IntSec ; hier die Addition: am Simulator klappts, aber an der Hardware
21
;läuft der Controller über die 35 Sec, und zwar der Zeit
22
;entsprechend (Faktor x 5Sec), wie oft ein Interrupt am
23
;Komparator passiert!!!
24
;-> d.h. er addiert die im Interrupt verstrichene Zeit im Register
25
;anscheinend nicht dazu
26
;BITTE UM HILFE falls Ideen vorhanden
27
  clr IntSec
28
  inc StBySec
29
  cpi StBySec, 35 ;Bei voller Minutenzahl auf 60 stellen.
30
  brne Sprungziel11
31
  clr StBySec
32
  rcall Schalter_abschalten
33

34
Sprungziel11:
35
  rjmp NulldurchgangStBy
36

37
;**************** Comparator Interruptroutine **************
38
Comparator:
39
  inc ImpulsZaehler
40
  cpi ImpulsZaehler, 2
41
  brne ersterInt
42
  dec ImpulsZaehler
43
  rjmp Timer_Countdown
44
ersterInt:
45
  reti
46

47
Nulldurchgang:
48
  cbr Flagregister, pFlanke
49
  rjmp Flanke0
50
Flanke1:
51
  sbr Flagregister, pFlanke
52
Flanke0:
53
  sbis pinb, 0
54
  rjmp Flanke1
55
  sbrs Flagregister, 5
56
  rjmp Flanke0
57
Timer_Countdown:
58
  sbr Flagregister, Timerroutine
59
  inc Timertaktzaehler
60
  cpi Timertaktzaehler, 50
61
  brne Sprungziel1
62
  clr Timertaktzaehler
63
  inc BruehSec
64
  mov IntSec, BruehSec ; IntSec wird immer überschrieben, bis 5Sec erreicht
65
                       ;sind-> dann reti
66
                       ;-> diese Zeit wird dann in der StBy-Schleife addiert,
67
                       ;damit die Interrupt-Zeit im ganzen Programm
68
                       ;mitberücksichtigt wird
69
                       ;geht der μC in reti, so zählt der μC nur Nettozeit der
70
                       ;StBy-Schleife, da die Zeit, die im Interrupt verstreicht
71
                       ;im Register draufaddiert wird-> siehe StBy-Schleife
72
  cpi BruehSec, 5
73
                       ;Zeit, wo Druckmatic abschaltet
74
  brne Sprungziel1 ;Bei voller Minutenzahl auf 60 stellen
75
  clr BruehSec
76
  reti
77
Sprungziel1:
78
  rjmp Nulldurchgang

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