- 3D-Druck Einstieg und Tipps         
Seite 1 von 10 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 92

Thema: Howto Frequenzzähler

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470

    Howto Frequenzzähler

    Anzeige

    Praxistest und DIY Projekte
    Hi Leuts, hab´n klenes problem
    ich will ein [scroll:d9b288b528]Frequenzzähler[/scroll:d9b288b528] aufbauen ( Hardware ist kein Problem)
    aber die software:
    Ich weis das man einen Timer ( 1 oder 0 ) benutzen muss, aber wie?
    Also das brauch ich: ein Codeschnippsel der in 1er Sekunde die impulse an einem pin zählt. est ist wichtig das die sekunde auch eine sekunde ist!!
    Hat mal jemand ein tipp??

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Ja, hab ich auch schonmal gemacht. den eingang der impulse ziehst du mit ner z diode auf 5v, dann hängst du das an nen interrupt.

    timer baust du wie mit dem programm "RNAVR" beschrieben (das rechnet dir alles genau aus)

    wenn interrupt von pin kommt machst du incr variable
    und jede sekunde dann von timer1 kannst du den wert verarbeiten und danach wieder auf 0 setzen

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470

    Logisch

    Hallo, will dich nicht beleidigen aber was genau heist das jezt.
    Ich hab zwar ne menge Bascom und Basic erfahrung aber des mit den Interups peil ich nich. Ein codeschnipsel sagt doch mehr als 10000 Worte!!!!!! Haste mal ein Codeausschnitt, die Variable ( wert ) zeig ich mit ner multiplex an ( die Funktioniert schon ) aber um was anzuzeigen brauch ich was zum anzeigen. danke für deine Hilfe!

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Hoffe es hilft dir ein bisschen weiter.
    bei steigender flanke an int0 (portb.0 beim mega12 wird gezählt.


    Code:
    $regfile = "m128def.dat"
    $crystal = 16000000
    $baud = 9600
    
    Config Timer1 = Timer , Prescale = 256
    
    Ddrb = &B11111100                                           'set portb.0,portb.1, inputs.
    Portd = &B00000001                                          'interner Pullup an PD0 aktivieren
    
    
    Dim Puls As Integer
    Dim Actspeed As Integer
    On Timer1 Timer1int
    Timer1 = 3036
    
    On Int1 Intr
    Config Int1 = Rising
    
    '=======PROGRAMM=====================
    Puls = 0
    Actspeed = 0
    Enable Interrupts
    Enable Int1
    Enable Timer1
    Start Timer1
    
    
    Do
    'Hier könnte deine ausgabe stehen (actpuls)
    Loop
    
    End
    
    
    Timer1int:
    
    Actpuls = Puls 'jetzt übertragen wir den wert
    Puls = 0
    
    Timer1 = 3036                                               '0,3 Sekunde
    Return 'ende des timerinterrupts
    
    Intr:
    If Pind.1 = 1 Then incr Puls
    Enable Int1
    Return

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    tut mir leid ich habs ned verstanden , kanste des ned für ein AT90s2313
    modifizieren?
    hab dir hier mal mein multiplex code:
    Code:
    $regfile = "2313def.dat"
    $crystal = 10000000
    Config Portb = Output
    Config Portd = Output
    Dim A As Byte
    Dim S As String * 5
    Dim X As Byte
    Dim Pos As Byte
    Dim Z As String * 1
    Dim L As Byte
    Dim W As Word
    
    Do
    
        S = Str(w)
        L = Len(s)
    
    For A = 0 To 10
    For X = 1 To L
    
          S = Str(w)
          Pos = L - X
          Pos = Pos + 1
          Z = Mid(s , Pos , 1)
    
        If Z = "0" Then Portb = 63
        If Z = "1" Then Portb = 34
        If Z = "2" Then Portb = 94
        If Z = "3" Then Portb = 118
        If Z = "4" Then Portb = 99
        If Z = "5" Then Portb = 117
        If Z = "6" Then Portb = 125
        If Z = "7" Then Portb = 38
        If Z = "8" Then Portb = 127
        If Z = "9" Then Portb = 119
    
        If X = 1 Then Portd = 1
        If X = 2 Then Portd = 2
        If X = 3 Then Portd = 4
        If X = 4 Then Portd = 8
        If X = 5 Then Portd = 16
    
        If L = 1 Then Waitus 9996
        If L = 2 Then Waitus 4996
        If L = 3 Then Waitus 3327
        If L = 4 Then Waitus 2496
        If L = 5 Then Waitus 1996
    
    Next X
    Next A
    W = W + 1
    Loop
    Schon mal danke für dein bemühen!!
    Grüßle

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    30.01.2004
    Ort
    Hartenholm
    Alter
    75
    Beiträge
    81
    Zitat Zitat von sebastian.heyn
    .... timer baust du wie mit dem programm "RNAVR" beschrieben (das rechnet dir alles genau aus) ....
    wo gibt es denn das Progr. RNAVR zu, Download ??

    Danke !

    Gerhard

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    @Gerhardt: Hier im forum habe ich das mal irgendwo gefunden..

    @Teslanikola: Es ist doch ganz einfach:
    Im hauptprogramm läuft deine Ausgabe...
    Im hintergrund läuft timer1 und löst ein mal pro sekunde einen interrupt aus.wenn du einen impuls am eingang von int0 hast (musst im datenblatt schauen welcher pin es genau ist) wird die variable puls um eins erhöht. (weil frequenz= impulse pro sekunde) dann wird wenn der timer jede sekunde den interrupt auslöst wird PULS in die varible actpuls geschrieben. danach wird puls zurückgesetzt, sodass du von vorne anfangen kannst mit zählen... Versuch es einfach selber zu bauen, da ist der lerneffekt höher

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    anstatt die Frequenzzählung per Software auszuführen,
    bietet es sich doch an die vorhandene
    und dafür vorgesehene Hardware auf dem 2313 zu benutzen.

    Einen TIMER/Counter-0 als Gate für 1sec,
    und einen anderen Timer/COUNTER-1 als Zähler.
    Dann kannnst du wesentlich höhere Frequenzen messen,
    als mit der Software-Methode.
    Per Hardware gehen Frequenzen bis zur halbe Taktfrequenz des 2313.

    Und der Prozessor hat fast nix zu tun damit,
    der kann inzwischen Rechnen, Display, Kommunikation usw. machen.

    Guck dir mal im Datenblatt des 2313 die Input-Capture-Unit des Counter1 an,
    und die Möglichkeit den Counter extern zu takten.

    Gruß Jan

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    Hi janB,
    hab deine idee versanden, bin aber in Bascom ned so sattelfest,
    haste nen codeschnippsel??

    Gruß

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    haste nen codeschnippsel??
    nee, einen fertigen Code hab ich nicht parat.
    Aber dieser Tage, spätestens am Wochenende,
    werd ich das mal testen, interessiert mich auch,
    wie die Timer-Counter zusammenspielen.
    Ist ja nicht soviel Aufwand.
    Wenn du solange warten kannst ?
    Sonst must du eben selbst ran,
    dabei lernst du auch am meisten.

    Wie hoch sind die Frequenzen, die du zählen willst ?

    Gruß Jan

Seite 1 von 10 123 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen