- LiFePO4 Speicher Test         
Ergebnis 1 bis 3 von 3

Thema: Signalverlängerung Schalter / PIC

  1. #1

    Signalverlängerung Schalter / PIC

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ich möchte eine Signalverlängerung in Assemblersprache realisieren nach folgendem Muster:

    Drücke ich Schalter 1, passiert Ereignis A, Drücke ich Schalter 1 für beispielsweise 5 Sekunden, passiert Ereignis B.

    Ich habe schon alles (mir) mögliche versucht. Entweder meine Matrixsteuerung zur Ansteuerung von 4 Stück 7-Segmentanzeigen funktioniert dann nicht mehr richtig, oder der PIC macht gar nichts mehr.

    Bin für jeden Denkanstoß dankbar, D. Johnson

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    09.07.2005
    Ort
    Hangover
    Alter
    58
    Beiträge
    45
    Also in PicBASIC habe ich das so gelöst:
    Mit Timer1 und einem CCP habe ich einen 1/2-Sekunden-Timer erstellt, der immer wieder selbst startet, aber ein IF setzt, der von der Software gelöscht werden muß.
    Da kann man einfach die Zeit messen, die der Taster gedrückt ist, indem man bei gedrücktem Taster anfängt zu zählen und beim Loslassen nachsieht, wieviel Impulse (CCP1IF) gezählt wurden.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    so hätt ichs auch gemacht, das ist auch in assembler leicht machbar. nur musst du die tasten dann per hardware entprellen, oder erst entprellen und dann die zeitnahme starten. sonst könnte es passieren, dass der CCP das prellen des tasters als zweites ereignis versteht und aufhört zu zählen, dann hättest du einen tastendruck von wenigen millisekunden.

    was auch noch geht, und ohne CCP modul: du löst einen interrupt aus oder prüfst in einer schleife, wenn du die taste drückst, machst eine entprellung und prüfst in regelmäßigen abständen, ob die taste noch gedrückt ist. wenn es um einige sekunden geht, brauchst du es nicht auf 1ms genau, deswegen kannst du einfach deinen Prozessortakt nehmen, mit der Anzahl der Befehle berechnen wie lange du brauchst, bist du erneut abfragst, und dann einfach die abfragen zählen.
    kurz: schleife basteln die den zustand abfragt, schleife so auslegen, dass alle mh 100ms oder wie es eben passt wieder nachgesehen wird. Bei gedrückter taste zählst du eine Variable um eins hoch. und lässt das ding weiterlaufen, ist im nächsten durchgang die taste immernoch gedrückt, weiter hochzählen. ist die taste dann irgendwann nichtmehr gedrückt, kannst du aus dem zählerstand ablesen, wie lang die taste für gedrückt war, eben zählerstand x 100ms.

Berechtigungen

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

Solar Speicher und Akkus Tests