- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 29

Thema: Unlösbares Problem mit PULSEIN ?? Tips gesucht!! Hilfe

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

    Unlösbares Problem mit PULSEIN ?? Tips gesucht!! Hilfe

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen,

    habe ein Problem bei dem ich nicht weis wie ich es lösen könnte.


    Ich möchte mit "Pulsein" in einem Datenlogger einen RC-Kanal auf den Status abfragen.

    Eigentlich ja kein Problem, aber....

    mein Programm bleibt stehen wenn gar kein Signal anliegt, das muss ich irgendwie lösen. Das kann vorkommen.

    Ich kann KEINEN externen INT verwenden - ist schon belegt!
    Ich kann den 16bit Timer nicht verwenden - ist auch schon belegt!

    Momentan läuft die "Pulsein" abfrage neben dem externen Int, dem Timer1, über den Timer0 (20mal pro Sek.) Der RC-Kanal braucht nicht öfter abgefragt werden, da das zur Statusabfrage reicht und ich fesgestellt habe das über den Timer0 keine Konfilikte mit den INT0 und Timer1 auftreten.

    Wie kann ich das Problem lösen, das ohne Puls der Pulsein nicht "hängenbleibt"? Ich habe KEIN Bitwait verwendet.

    IDEEN - VORSCHLÄGE?????

    Danke

    Gruß
    Markus

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    "Pulsein" hat nach einem Timeout auf jeden Fall ein Ende, also wirklich hängen sollt# er nicht bleiben, auch ohne Puls.
    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
    Kann es sein, das der Timeout so lange dauert das der Timer0 ihn dann schon wieder zum erneuten warten schickt. Dadurch würde dann irgendwie eine "Dauerschleife" entstehen. Am Terminal sehe ich das die Impulse gezählt werden(nur bei weitem nicht alle) und auch das Datensenden funktioniert. Nur in die Hauptschleife gehts nicht mehr. Das sehe ich an einer LED die eigentlich dann blinken sollte.

    Grob sieht mein Programm so aus. Die Config Timer und Interrupt usw. habe ich jetzt mal weggelassen. Das passt scho.

    .....
    On Int0 Zähleimpulse
    On Timer1 Datensenden
    On Timer0 RCmessen


    Do

    "Hauptschleife"

    Loop

    Zähleimpulse: (kommt von einem Durchflussmesser)
    incr A
    Return

    Datensenden: (werden und sollen nur alle 0,25 Sek. übermittelt werden)
    Printbin Stb;B(1);C
    Return

    RCmessen: (hier ist mein Problem )
    Pulsein RC ,Pinc, 4,0

    Stimmt da was an der Grundstruktur nicht? Oder gibts da noch einen anderen Trick?

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Mit der Dauerschleifentheorie könntest du vielleicht recht haben.
    Mach den Pulsein in der Hauptschleife und lass ihn vom Timer triggern
    Code:
    DIM trigger as byte
    
    DO     "hauptschleife"
       if trigger = 1  then 
               trigger = 0
               pulsein rc, pinc, 4, 0
       end if
     '------  andere Beschäftigung ----
      LOOP
    
    RCmessen: 
      trigger = 1
     return
    dadurch kann pulsein vom anderen Timer unterbrochen werden und hält nicht den Betrieb auf.

    Wenn pulsein wirklich zu lange sein sollte, wird's natürlich eng, da brauchen wir eine andere Idee

    FÜr mein Verständnis: Du willst alle 0,05 sekunden sehen, ob sich auf der Rc-Leitung irgendwas tut ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hallo Robert,
    beim RC will ich alle 0,05 Sek. sehen ob sich was tut, das "Datensenden" darf nur alle 0,25 Sek. passieren.

    Hmm... das mit dem Trigger werde ich mal ausprobieren.

    Kann der pulsein dann auch vom INT0 unterbrochen werden?

    Gruß
    Markus

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Kann der pulsein dann auch vom INT0 unterbrochen werden?
    definitiv. versuch es mal. "Pulsein" in einer ISR Routine ist so oder so nicht gut.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    hallo robert,

    funktioniert so perfekt, danke für den Tip!!!

    gruß
    Markus

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    .... hmm so jetzt habe ich aber ein anderes Problem:

    Wenn der Int0 kommt, liefert mir Pulsein total falsche Werte. Wenn ich während Pulsein den Int0 disable dann fehlen mir ein haufen Impulse die vom Int0 laufend gemessen werden müssen.

    Kann ich den den Timeout für den Pulsein irgendwie verkürzen?

    Gruß
    Markus

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Hmm ... wie wäre es, dieses per Hand zu Coden, oder den Code "etwas" zu optimieren ?

    Das Problem ist im endeffekt das folgende:

    solange du nicht weißt, wie pulsein umgesetzt wird von BASIC ist es defakto "Sackhüpfen im Minenfeld" was hier betrieben wird.

    Optimierungsmöglichkeiten wären im übrigen z.B. das entmisten von ISR's etc.

    Nachtrag: Wenn dein µC nen Pin Change Interupt hat könnte auch dieser helfen ... aber daran hast du sicherlich schon gedacht.

    Grüße,

    da Hanni.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hi Hanni,

    nix für ungut aber irgendwie check ich jetzt nicht was Du damit sagen willst. Fakt ist, das ich erst vor 4 Monaten überhaupt begonnen habe mich mit MCs zu beschäftigen und dabei so nebenbei mir das Bascom proggen selber beigebracht habe. Für nen richtigen Tip wäre ich dankbar, mit nem Satz
    solange du nicht weißt, wie pulsein umgesetzt wird von BASIC ist es defakto "Sackhüpfen im Minenfeld" was hier betrieben wird.
    kann ich leider gar nix anfangen.

    Ich weis zwar wie in Bascom der Pulsein funktioniert aber nicht wie ich daran schrauben kann. (Timeout beeinflussen)

    Das die Geschichte mit den Interupt nicht ganz ohne ist, das ist mir auch bekannt. Leider habe ich keine andere Möglichkeit (bis jezt) gefunden.

    Wie gesagt ich bin bereit jederzeit dazuzulernen.

    gruß
    Markus

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen