Forum: Mikrocontroller und Digitale Elektronik BASCOM TIMER A resetten


von Anton (Gast)


Lesenswert?

Hab am atmega 8 ein poti und nen max232

Do

W = Getadc(channel)

Waitms 900

Print W
Print A

Loop
If W = A Then
Print "RELAIS"
Reset A

End If

Timer_irq:
  Timer1 = Timervorgabe
  A = A + 1

  Return

er zählt A auch braf hoch nur wenn A = W ist, resettet er A nicht 
sondern zählt munter weiter. Wo liegt mein Fehler?

von Kay (Gast)


Lesenswert?

Hi,

leg die Abfrage in die Loop Schleife. Dann sollte es funktionieren. 
Deine Abfrage steht auserhalb der Schleife.

Gruß Kay

von Kay (Gast)


Lesenswert?

Also so:

Do

W = Getadc(channel)

Waitms 900

Print W
Print A

If W = A Then
Print "RELAIS"
Reset A

Loop


End If

Timer_irq:
  Timer1 = Timervorgabe
  A = A + 1
Return

Gruß Kay

von Karl H. (kbuchegg)


Lesenswert?

Du kannst dir Ärger dieser Art ersparen, wenn du dir angewöhnst Code 
einzurücken.

Vergleiche dein Lösung mit der hier
1
Do
2
3
  W = Getadc(channel)
4
5
  Waitms 900
6
7
  Print W
8
  Print A
9
10
  If W = A Then
11
    Print "RELAIS"
12
    Reset A
13
  End If
14
15
Loop
16
17
Timer_irq:
18
  Timer1 = Timervorgabe
19
  A = A + 1
20
  Return

Nota Bene ist dadurch auch aufgefallen, dass du das End If nicht 
innerhalb der do-Loop Schleife hattest.

von Anton (Gast)


Lesenswert?

stimmt das Loop stand außerhalb ... Wenn man den Wald vor lauter Bäumen 
nicht sieht ...

von Anton (Gast)


Lesenswert?

Do

  W = Getadc(channel)

  Waitms 900

  Print W
  Print A

  If W = A Then
    Print "RELAIS"
     A = 0
  End If

Loop

Timer_irq:
  Timer1 = Timervorgabe
  A = A + 1
  Return


So geht das ganze auch noch

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.