mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variabeln ändern in ISR


Autor: AT32_Bascom_Programmierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich sitze nun schon mehrere Stunden an einem kniffligen Problem...
in einer Interruput Servis Routine gebe ich einer Variablen einen Wert 
zwischen 0 und 4 ( mit einbegriffen) . wenn ich aber nun aus der ISR 
Raus springe nimmt die Variable den Wert 0 an woran liegt das? sie wird 
nirgends  auf 0 gesetzt...ich verstehe es einfach nicht...

Ich arbeite mit Bascom!

Gruss AT32

Autor: blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
deinen quelltext ??
wo isser ??

Autor: ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
globale Variable?

Autor: AT32_Bascom_Programmierer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo hier ist der Hauptteil, der ISR im Anhang ist mein Komplettes 
Programm

ich muss bemerken das ich noch beim programmieren bin und noch nicht 
alles Perfekt ist... aber ich möchte eins nach dem andren machen...

Hoffe ihr erkennt was...

'*********************************************************************** 
***


 If Taste = "#" Then                                   'wird die taste 
"#" gedrückt werden  soll eine Ziffer im Passwort gelöscht werden

         Anzahl = Len(eingabe)

               If Anzahl < 2 Then                           ' ist die 
Anzahl kleiner als 2 , also 1 oder 0
                  Anzahl = 0                                ' wird sie 0
                  Eingabe = ""                              'Der string 
"Eingabe" wird gelöscht
               Else                                         'sollte die 
Zahl grösser oder gleich 2 sein,
                  Anzahl = Anzahl - 1                       'wird Anzahl 
um eins minimiert
                  Eingabe = Left(eingabe , Anzahl)          'auch der 
string wird um ein Zichen minimiert
               End If


      Else                                                  'sollte eine 
andere Taste gedrücht werden:

               If Len(eingabe) < 4 Then                     'muss die 
gesamt länge unter 4 zeichen sein
                  Eingabe = Eingabe + Chr(taste)            'dann wird 
eine Ziffer dran gehangen
               End If
      End If



    End If

          Locate 2 , 1                                      'der gesamte 
String wird angezeigt "zur Kontrolle"
           Lcd Eingabe ; "  "
            Waitms 100                                      ' durch den 
Getadc Befehl müssen 100ms gewachtet werden


    If Len(eingabe) = 4 Then                                'sollte der 
eingegebene Code dem vorgegebenen Password nicht entsprechen, dann




         If Taste = "*" Then

            Incr Versuche




               If Eingabe <> Passwort Then

               Passwort_stimmt = 0
                  Locate 2 , 10                             'wird ein 
Nicht OK angezeigt
                     Lcd "NOK"
                  Wait 1




                     If Versuche >= 3 Then

                         Schluessel_sperren = Schluessel_nummer

                        Locate 2 , 1


                           Lcd "3 Versuche      " 
'!!!!!!!!!!!!!!!              'nur zum Test hier kommt später ein 
Zeitvergleich und schlässel wird für eine gewisse Zeit gesperrt



                              Wait 1 
'!!!!!!!!!!!!!!!!!!!!!!!!!nur zur Anzeige...

                              Enable Timer1                 '???ovf1

                           Entsperren = Zeitvariable + 15   ' Variable 
die Minuten hochzählt + 15 !!!!!!!!!
                      End If



                     If Versuche >= 3 Then
                          Versuche = 0                      'somit 
erhält die erste if Versuche schleige ein end IF <<<<<<<Test!!!!!!
                          Return

                     End If


               Else                                         'ansonsten

                  Locate 2 , 10
                     Lcd "OK "                              'ein ok

                  Versuche = 0

                  Portd.6 = 1                               'und eine 
Led an PortD.6 leuchtet (ist nur zum testen)
                     Wait 1
                  Portd.6 = 0
                     Waitms 500

                  Passwort_stimmt = 1                       'wenn das 
Passwort stimmt (1) dann kann aus der Do loop schleife gesprungn werden.
                  Schluessel_sperren = 0
               End If


            Eingabe = ""                                    'der String 
gelöcht
            Locate 2 , 1 : Lcd "                "           ' dann wird 
die anzeige überschrieben

         End If


    End If
                                                             'und das 
wars
Loop Until Passwort_stimmt = 1

Reti

Autor: AT32_Bascom_Programmierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mir fällt grade auf das ich die Uhr schon mit drin getan habe... lasst 
euch bitte nicht von der ersten Do loop schleife verwirren... die wird 
noch nicht benutzt und kann raus raus genommen genommen werden...

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.