- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Verständnisfrage Counter mit ext. Interrupt

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161

    Verständnisfrage Counter mit ext. Interrupt

    Anzeige

    Praxistest und DIY Projekte
    Hallo Zusammen,

    ich habe mal eine generelle Verstänisfrage.

    Ich habe einen Durchflussmesser der 10.000 Impulse/Liter abgibt.
    Einen Tank mit Inhalt X (ist variabel) Liter => eine Gesamtimpulszahl z.B 55.000 I/Liter.

    Ich möchte nun einen Counter gestalten der die Impulse zählt, der eine definierte Obergrenze hat (gesamte Menge z.B. 5,5 Liter = 55.000 Impulse) der dann auch noch nach jedem 20isten Teil der Gesamtimpulszahl einen zweiten Wert um eins erhöht. Das Ergebnis des 2. Wertes wird dann über RS232 und Funkstrecke an einen zweiten Mega8-Slave AVR gegeben der dann damit weiterarbeitet.

    Ich habe mir das so vorgestellt.


    Counter läuft von 0 - 55.000 getaktet durch Interrupt. Bei jedem Vielfachen von (55.000/20) 2750 muss Varable A=0 mit INCR um eins erhöt werden und akteller Wert über Rx gesandt werden.

    Der Counter muss aber weiterlaufen. Der Gesamtwert soll mit den gezählten Intervallen am Ende verglichen werden ob auch die Werte des Durchflussmessers stimmig waren.

    Nur wie realisiere ich das mit der definierten Zwischenabfrage bei jedem xten Zwanstigstel? Also erste Abfrage bei 2750, zweite bei 5500, dritte bei 8250 usw.

    Stehe hier voll auf dem Schlauch.


    Gruß
    Markus

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Eine Möglichkeit sind 2 Zähler und ein schalter
    Code:
    dim Gesamt    as long  
    dim Vielfache  as word
    dim A as word
    dim sw as byte
    
    Anfang:
    Gesamt    = 0
    Vielfache =  0
    A = 0
    sw = 0
    
    do 
     if sw = 1 then 
         print str(a)
         sw = 0
     end if
    loop
    '---------------------------------------
    Interrupt:
       incr Gesamt
       incr Vielfache
       if   Vielfache = 2750 then 
            Vielfache = 0
            incr A
            sw = 1
      end if
     return
    Was da fehlt, ist CONFIG INT0 etc.
    UND
    Eine Endebedingung.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161

    Mann - ich glaubs net - so einfach geht das??

    Hallo PicNick,

    erstmal vielen Dank für deinen Tip. Ich glaub der SW bei mir im Kopf ist endlich auch auf 1

    Das hilft mir schon einiges weiter.
    Eine Frage noch: Warum die Vari. "vielfache" und "a" als Word? Kann ich "vielfache" als LONG und "a" als Byte definieren? Ich bin in der Proggerei noch gar net lang dabei. Da ist mir der Unterschied noch nicht ganz klar geworden.

    Zumal ich die Werte noch zus. in einem ext. EEprom speichern möchte. So wie ich es aus der Bascom Help Datei rauslese geht das aber nicht mit den "normalen" Variablen, oder verstehe ich das falsch?

    Gruß
    Markus

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Das sind Schätzungen von mir
    Gesamt: monstermäßig, also long 32 Bit 0 - 4294967295
    bei 10000 I/L reicht das für ~429496 Liter
    vielfache: 0-2750 reicht immer ein word 16 Bit
    a mußt ich schätzen, wieviel es denn überhaupt werden könnrn.
    bei 16 Bit könnten dann ~18000 Liter gemessen werden
    bei mehr müßte man für a halt auch ein long nehmen

    EEPROM daten

    DIM epromval as ERAM long ' das genügt, normale behandlung.
    es sollte halt nicht utopisch oft geschrieben werden (< 100000 mal)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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

12V Akku bauen