- Labornetzteil AliExpress         
Seite 8 von 10 ErsteErste ... 678910 LetzteLetzte
Ergebnis 71 bis 80 von 92

Thema: Howto Frequenzzähler

  1. #71
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Anzeige

    Praxistest und DIY Projekte
    Hallo Teslanikola,

    schick mal Deinen Code.

    Ciao,
    Werner

  2. #72
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    problem 1 gelöst: Irn realität springt er zu Test1!!!
    Problem 2 ( neu ): Counter zählt nicht, hab die verschiedensten Signale eingespeist ( Rechteck, Sinus, Dreieck, Sägezahn ) nix geht, habs mit Taster probiert ( mit Pull-Down-Widerstand von 10k ), liegt woll am Prog.
    HELP!!!

  3. #73
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    Code:
    $regfile = "2313def.dat"
    Dim Var1 As Byte
    Dim Var2 As Long
    Dim Freq As Long
    Config Portb = Output
    Config Portd = Output
    
    
    
    Enable Interrupts
    Enable Timer0
    Enable Timer1
    
    
    
    Config Timer0 = Timer , Prescale = 1024
    Config Timer1 = Counter , Edge = Rising
    Config Pinb.5 = Input
    
    Portb.5 = 0
    
    On Timer0 Test1:                                            ' Springe zu Test1 wenn Timer0 "voll"
    On Timer1 Test2:                                            ' Springe zu Test2 wenn Timer1 "voll"
    
    Timer0 = 216                                                ' Constante zum erzeugen einer "Exacten" Sek.
    Timer1 = 0
    
    
    Start Timer0
    Start Timer1                                                'Auf die Pins, Fertig, Messen!
    
    Do                                                          ' Anzeige Schlaufe
    
    Loop
    
    
    Test1:
                                                                  ' Wenn Timer0 (Gatetimer) voll, dann Var1 + 1
    Incr Var1
    
    If Var1 = 39 Then                                           'Wenn Timer0 39 überlief (1 Sek) dann:
      If Portd.5 = 0 Then Portd.5 = 1 Else Portd.5 = 0          ' Wenn Sek. vorbei schaltet LED an oder aus ( zur Kontrolle )
    
      Freq = Timer1                                             ' Lese Timer1 aus ( Counter )
    
      Freq = Freq + Var2                                        ' Addiere Timer1 und Anzahl der überlaufe von Timer1*256
    
      Var1 = 0
      Var2 = 0
    
      Stop Timer0                                               ' Starte Messung erneut
      Stop Timer1
      Timer0 = 126
      Timer1 = 0
      Start Timer0
      Start Timer1
    
      Return
    
      End If
    
    Return
    
    
    Test2:                                                      ' Wenn counter (Timer1) überlauft, dann addiere 65536
    
    Var2 = Var2 + 65536
    
    Return

  4. #74
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    servus Werner haste ICQ

  5. #75
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo Teslanikola

    no, ich hab kein ICQ.

    Also bei mir funktioniert Dein Code bis auf die immer noch eingebauten offensichtlichen Fehler. Die haben aber nichts mit der prinzipiellen Funktion zu tun.

    Überlauf Timer0 springt nach test1: und erhöht Var1.
    Wenn Var1 = 39, dann wird Freq berechnet und die Timer neu gestartet.
    Anschließend verabschiedet sich der Controller ins Nirvana, was zwar nicht OK ist, aber bei dem 2. Return innerhalb der IF-Schleife normal seien dürfte.

    Überlauf Timer1 springt nach Test2: und erhöht Var2 um 2^16.

    Soweit alles OK.


    Was nicht funktioniert ist das Zählen der externen Impulse mit Timer1.
    Zum einen könnte das daran liegen, daß Du den Counter-Eingang von Timer1 nicht als Eingang definierst. Dann gehst Du hin und toggelst den Pin auch noch in Deiner Interrupt Routine. (Warum überhaupt?)

    Wenn ich beides ändere, dann gehts aber trotzdem nicht. In der Zeile "config Timer1..." könnte noch der Eintrag zum Prescale fehlen. Ob Bascom den zwingend braucht weiß ich aber nicht. Den eingesetzt ergibt aber auch keine Änderung.

    Sprich es sind mehrer Fehler drin und mindestens einen davon sehe oder verstehe ich im Moment auch nicht.

    Ciao,
    Werner

  6. #76
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    Hallo, der Counter geht, hatte nen wackelkontakt, aber wenn ich meinen anzeigecode einfüge zeigt er als freq immer nur 0 an. der müsste doch den counter auslesen und als freq speichern., wenn ich den counter aber in der Anzeigeschlaufe auslese ziegt er mir ne zahl an ( zählt schnell aufw. und wird nach ner sek. wieder auf 0 gesezt).wieso speichert er bei Test1 nicht den counter auf Freq?????????????????????????

  7. #77
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo Teslanikola,

    Hallo, der Counter geht, hatte nen wackelkontakt, aber wenn ich meinen anzeigecode einfüge zeigt er als freq immer nur 0 an.
    der müsste doch den counter auslesen und als freq speichern.
    tut er auch, das Problem tritt erst unmittelbar danach auf.
    Lösch das 'Return' aus der IF-Abfrage in der Interrupt-Routine Test1:
    Code:
     [Test1: [...]
      Timer0 = 126 ' ??? 
      Timer1 = 0
      Start Timer0
      Start Timer1
      '  Return
      End If
    Return
    dann müsste es funktionieren.
    Wenn ich Deinen Code im Simulator teste, dann zählt Timer1 nicht. Schreibe ich aber ein Testprogramm, in dem nur der Counter und der Überlauf drin ist, dann gehts. Very Strange!


    Du hast übrigens vergessen das Timer0=126 in der Interrupt-Routine zu ändern. Geändert hast Du es nur bei der Erstinitalisierung.
    Wenn Du bestimmte Werte mehrfach in einem Programm brauchst, dann ist es sinnvol die im Quelltext als Konstanten zu definieren.

    z.B. Const OvF_1s = 126

    Im Programm schreibst Du anschließend überall wo Du die 126 haben willst einfach OvF_1s. Wenn Du die 126 in 226 ändern willst, dann brauchst Du nur noch an der einen Stelle den Wert zu ändern und mußt nichtmehr den Code durchsuchen wo Du überall 126 geschrieben hast..

    Ciao,
    Werner

  8. #78
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    OH HAPPY DAY, OH JESUS CHRIST!!!!!

    Danke Werner du bist der GRÖÖÖÖÖÖÖÖÖÖÖÖSTE [schild=1 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Thank you!!![/schild] , es funkt.
    Eslag nur an dem sch*** RETURN . Hab in der Praxis noch nen paar Probs mit der Anzeige ( nen paar Segmente leuchten nicht mehr [ schon wieder nen Wackelkontakt ] )
    Werde die Schaltung und das Prog zu ner Anleitung zusammenstellen, ne Platine entwickle ich au noch, dann werde ich es hier Veröffentlichen ( darf ich deinen Namen nennen? Als Quellcodekontolleur? )
    Echt noch mal fett Danke!!!!!

  9. #79
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo Teslanikola,

    freut mich das es läuft.
    Ich hoffe Du hast die anderen 'Fehler' auch noch ausgemerzt.


    Meinen Namen darfst Du nennen, aber bitte nicht als Quellcodekontrolleur. Nachher denkt noch jemand ich hätte den Code abgesegnet. Dabei hätte ich ALLES ganz angers gemacht!

    Kannst ja behaupten ich hätte mit 'nem Holzhammer hinter Dir gestanden und Dir bei jedem Fehler einen übergebraten. Den Vorschlaghammen, den es für eleganten Code benötigt hätte, den hatte ich leider nicht.

    Hauptsache es läuft!

    Ciao,
    Werner

  10. #80
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    Um genauigkeit zu verbessern könnte man auch ein 8MHz Quarz nehmen
    mit ner Teilung von 8. Dann muss man der Timer bei 192 Starten und 3906 mal überlaufen lassen. Das gibt EXACT 1,0 Sek.
    Oder ich nehme ein 10MHz Quartz mir ner Teilung von 8, dann bei 184 Starten und 4882 mal überlaufen lassen. Auch ned EXACTE Sek.

Seite 8 von 10 ErsteErste ... 678910 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress