www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Int 0 und timer bitte um Hilfe


Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$regfile = "m8def.dat"
$crystal = 4000000
Config Timer1 = Timer, Prescale = 64
Config Portc = Output
Config Portd.4 = Output
Led Alias Portc.0
Led2 Alias Portc.1
Led3 Alias Portc.2
Led4 Alias Portc.3
Led5 Alias Portc.4
Led6 Alias Portc.5
Led7 Alias Portd.4

Dim A As Single
Dim B As Single
Dim C As Single
Config Portd.2 = Input
Config Portd.3 = Input
On Timer1 Timer_irq

 Config Int0 = Rising
 Config Int1 = Rising

Const Timervorgabe = 39886
Portd.2 = 1
Portd.3 = 1
Enable Timer1
Enable Interrupts
 Enable Int0
 Enable Int1
 On Int0 Isr_von_int0
 On Int1 Isr_von_int1


Do
If B = 1 Then
Gosub Sub1
End If
If B = 2 Then
B = 0
End If
Loop

Sub1:
If A = 2 Then
   Toggle Led
   Toggle Led2
   Toggle Led3
   Toggle Led4
   Led7 = 0
A = 0
End If
If A = 0 Then
   Led7 = 1
End If
Return

Timer_irq:
  Timer1 = Timervorgabe
        Incr A
   Return

Isr_von_int0:
    Incr B
 Return

Isr_von_int1:
    Incr C
 Return


Irgendwie hab ich nen Brett vorm Kopf

Atmega 8 4 MHZ intern

: Verschoben durch Moderator
Autor: Stefan C. (jaecko)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist das Problem?

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich drück auf den Taster der an INT0 hängt und nix passiert setz ich B 
von anfang an auf 1 geht alles andere

Autor: Stefan C. (jaecko)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liegt u.a. möglicherweise daran, dass in der ISR von INT0 B gewaltig 
schnell hochgezählt wird (Taster prellt).
D.h. es kann durchaus bzw. ziemlich sicher passieren, dass B in der 
Do-Loop-Schleife grösser als 2 ist.

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also

If B > 1 Then

oder wie?

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dim A As Bit
Dim S As Bit

 Isr_von_int0:
Toggle A
 Return

  Isr_von_int1:
  Toggle S
 Return

Autor: Stefan C. (jaecko)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre eine Möglichkeit. Alternativ natürlich auch If B >= 2 Then.

Oder:

Isr_von_int0:
  If B < 2 Then Incr B
 Return

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$regfile = "m8def.dat"
$crystal = 4000000
Config Timer1 = Timer, Prescale = 64
Config Portc = Output
Config Portd.4 = Output
Led Alias Portc.0
Led2 Alias Portc.1
Led3 Alias Portc.2
Led4 Alias Portc.3
Led5 Alias Portc.4
Led6 Alias Portc.5
Led7 Alias Portd.4

Dim A As Single
Dim B As Bit
Dim C As Single
Config Portd.2 = Input
Config Portd.3 = Input
On Timer1 Timer_irq

 Config Int0 = Rising
 Config Int1 = Rising

Const Timervorgabe = 39886
Portd.2 = 1
Portd.3 = 1
Enable Timer1
Enable Interrupts
 Enable Int0
 Enable Int1
 On Int0 Isr_von_int0
 On Int1 Isr_von_int1


Do
If B = 0 Then
Gosub Sub1
End If
If B = 1 Then
Gosub Sub2
End If
Loop

Sub1:
If A = 2 Then
   Toggle Led
   Toggle Led2
   Toggle Led3
   Toggle Led4
   Led7 = 0
A = 0
End If
If A = 0 Then
   Led7 = 1
End If
Return

Sub2:
   Led = 0
   Led7 = 0
   Led3 = 0
   Led2 = 0
   Led4 = 0
   Led5 = 0
   Led6 = 0
Return
Timer_irq:
  Timer1 = Timervorgabe
        Incr A
   Return

Isr_von_int0:
  If B = 1 Then
  Reset B
  Else
  Set B
  End If
 Return

Isr_von_int1:
  If C = 1 Then
  Reset C
  Else
  Set C
  End If
 Return


So funzt es un nu noch INT1

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.