Bascom Timer flag

Gast #1582520
Hallo ich hab ein kleines Problem mit dem setzen eines Timerflags.

Hier erstmal das Programm:
######################################################################## 
####
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 38400
Config Portb.2 = Output

Config Timer1 = Timer , Prescale = 256 Timer1 = 34285
'Vorladewert 8mhz / 256 = 31250 Der Zähler Würde Normal Von 0 Bis 65535 
Zählen
'Wenn Er Jedoch Bei 34285 Beginnt Läuft Er Jede Sek über


Config Adc = Single , Prescaler = Auto , Reference = Avcc
 Start Adc

Dim Ad_w(25) As Word                                        '25 
Variablen als Word dimensioniert
Dim Wert As Word                                            'Variable 
als Word Variable als Word dimensioniert
Dim I As Byte                                               'Variable 
als Byte dimensioniert
Dim Puffer As Single                                        'Variable 
als Single dimensioniert

Dim Float As Single                                         'Variable 
als Single dimensioniert
Float = 3.48
Dim Flag As Byte
Enable Interrupts
Enable Timer1
On Timer1 Isr_timer1



Do
If Flag.1 = 1 Then
   Flag.1 = 0
 For I = 0 To 24                                            'Beginn 
For-Schleife mit Zählen bis 24
   Ad_w(i) = Getadc(0)                                      'Messen 
AD-Wert an Pin A0
   Waitms 5                                                 '5ms warten
 Next                                                       'weiter wenn 
For-Schleife abgearbeitet ist

 For I = 0 To 24                                            'Beginn 
For-Schleife mit Zählen bis 24
   Wert = Wert + Ad_w(i)                                    'addiere 
Wert mit dem AD-Wert der Variabele Ad_w entsprechend I
 Next                                                       'weiter wenn 
For-Schleife abgearbeitet ist

 Wert = Wert / 25                                           'Bilden des 
Mittelwert durch division mit 25

 Puffer = Wert                                              'Inhalt 
Variable Wert wird in Variable Puffer geschrieben
 Puffer = Puffer - 425                                      'Vom Puffer 
wird der 0 °C Offset abgezogen

 Puffer = Puffer / Float                                    'Berechung 
der Temperatur (5.3125 = Bit pro °C Änderung)


 Print "Temp " ; "; " ; Puffer ; " ; " ; " AD_Wert" ; "; " ; Wert 
'Ausgabe der Variablen Puffer und Wert im Terminalprogramm
 Waitms 875                                                 '875ms 
warten um Programmlaufzeit von 1s zu erreichen

 Wert = 0
End If

Loop

Isr_timer1:

Flag.1 = 1

Timer1 = 34285
Return
####################################################################

Das Problem liegt darin das der Timer nur einmal beim EInschalten oder 
Reset aufgerufen wird.

Wenn ich das Programm ohne jede Berechnung ausführe sondern nur beim 
Flag den Adc ausgebe funktioniert es.

Könnt ihr mir einen Tip geben?
#1582550
der erste Fehler ist mal, das Bascom Arrays ab 1 beginnt nicht mit 0

also :

an stelle von
For I = 0 To 24

dann

For I = 1 To 25


wozu das Waitms 875 ? du nutzt doch nen Timer, für das Flag,
dann mach den Preload halt so groß, dass 1 Sekunde kommt.
Gast #1582647
Das ändert aber auch nichts an dem Problem das es nur geht wenn der ADC 
ausgelesen wird und das es nicht geht wenn man berechnet.

Wäre für weitere Tips sehr dankbar.
Gast #1582666
OK es wird jetzt Sekündlich ausgegeben.

Aber noch eine Frage wie kommt es das die Ausgabe bei Print nicht 
richtig Sauber ist

bsp:

Temp ; 15.804596898 ;  AD_Wert; 480ŠTemp ; 15.804596898 ;  AD_Wert; 480
Temp ; 15.804596898 ;  AD_Wert; 480
Temp ; 16.091953276 ;  AD_Wert; 481ŠTemp ; 15.804596898 ;  AD_Wert; 
480
                                                                         Temp 
;
15.804596898 ;  AD_Wert; 480
Temp ; 15.804596898 ;  AD_Wert; 480ŠTemp ; 15.804596898 ;  AD_Wert; 480
Temp ; 15.804596898 ;  AD_Wert; 480
ŠTemp ; 15.804596898 ;  AD_Wert; 480
Temp ; 15.804596898 ;  AD_Wert; 480
Temp ; 15.804596898 ;  AD_Wert; 480

Also es wird nicht immer auf einer neuen Teile ausgegeben und manchmal 
kommen auch zusätzliche zeichen rein, habt ihr nen tip.

die Baud, Pari etc sind alles identisch eingestellt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.