- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 20

Thema: 5 Minuten Timer mit Attiny 13

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2006
    Ort
    Dortmund
    Alter
    36
    Beiträge
    379
    Hallo!
    Also du hast ein paar Fehler in deinem Programm. Zunächst musst du lernen die If Abfrage richtig anzuwenden. Das Grundkonstrukt sieht folgendermaßen aus:
    Code:
    If BEDINGUNG then
    Hier der code der ausgeführt werden soll wenn If zutrifft
    End If
    Bei dir kommt das Wort "then" mehrfach vor. Das ist nicht notwendig, da alles was zwischen If und End If steht ausgeführt wird. Korrigiert würde dein Code so aussehen:
    Code:
    if PINB.1 = 1 Then
          Portb.2 = 1 
          Portb.3 = 1
          Waitms 300000
          Portb.4 = 1
          Portb.2 = 0
          Portb.3 = 0
          Waitms 1000 
          Portb.4 = 0
    Unter das letzte Loop gehört zusätzlich noch das Wort END. Was du auch noch beachten musst ist die richtige Schreibweise der eingebundenen Bibliothek.
    Du hast attiny13.dat geschrieben aber die Datei heißt glaube ich ATtiny13.dat. Also groß und kleinschreibung beachten!
    Das Confic Timer0 in deinem Quellcode ist überflüssig da du keinen Timer in deinem Programm benutzt und wie schon erwähnt wurde: Bei Inputs nimmt man
    PinX.X anstelle von PortX.X auch wenn viele sagen das es auch anders geht.
    Hoffe ich konnte helfen!

  2. #2
    nicht vergessen, den Summer wieder auszuschalten.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.03.2011
    Beiträge
    57
    kann man eigentlich irgendwie errechnen, wie weit der waitms-Befehl vom wirklichen Timer abweicht? Ich habe die Timerfunktion noch nie benutzt / benötigt würd mich aber mal interessieren, damit ich weiß, wann es Zeit wird sich das mal anzuschauen

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    02.04.2011
    Beiträge
    7
    Hallo,

    ich habe den Quellcode nun folgendermaßen Programmiert:

    Code:
    '10 Minuten Timer mit 2 Schaltausgängen PB2 und PB3 / Buzzer an PB4
    'Taktfrequenz 1200 KHz
    '-------------------------------------------------------------------------------
    'Grundeinstellungen
    '-------------------------------------------------------------------------------
    
    $regfile = "attiny13.dat"
    $crystal = 1200000                                          'Standard- Takt 9,6 MHz / 8
    $hwstack = 0
    $swstack = 0
    $framesize = 0
    Baud = 9600
    
    Config Pinb.1 = Input                                       'Taster(S1)
    Config Portb.2 = Output                                     'Schaltausgang1
    Config Portb.3 = Output                                     'Schaltausgang2
    Config Portb.4 = Output                                     'Buzzer
    
    '-------------------------------------------------------------------------------
    'Hauptprogramm
    '-------------------------------------------------------------------------------
    
    Do                                                          'Beginn der Schleife
         If Pinb.1 = 1 Then                                     'Anfang Der If Bedingung
         Portb.2 = 1                                            'Schaltausgang1 wird gesetzt
         Portb.3 = 1                                            'Schaltausgang2 wird gesetzt
         Wait 600                                               '10 Minuten warten
         Portb.2 = 0                                            'Schaltausgang1 wird resetet
         Portb.3 = 0                                            'Schaltausgang2 wird resetet
         Portb.4 = 1                                            'Buzzer wird gesetzt
         Wait 2                                                 '2 Sekunden warten
         Portb.4 = 0                                            'Buzzer wird resetet
         End If                                                 'Ende der If Bedingung
    Loop                                                        'Ende der Schleife
    
    End                                                         'Programm Ende
    Dieser funktioniert nun auch schon sehr gut. Deshalb schon einmal ein großes Danke für die Hilfe.

    Mich würde aber auch noch einmal interessieren, wie man das mit dem Ton für den Buzzer programmiert? Und was müsste ich ändern wenn ich zwei Zeiten haben möchte ( 5 Minuten über einen Taster S1 einschaltbar und 10 Minuten über einen Taster S2 einschaltbar ). Den Taster S2 würde ich dann an PB0 anschließen.

    Gruß
    John13

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hallo,
    es ist nicht einfach auf Deine Fragen zu antworten, weil sie sehr allgemein sind.

    Ton für Buzzer: es gibt so viele Töne... Wie funktioniert Dein Buzzer (wie muß der angesteuert werden)? Anscheinend, nach Deinem Programm (Gratuliere übrigends), hast Du den ja schon in Betrieb.
    Zwei Zeiten: ???
    Müßtest genau, Schritt für Schritt beschreiben, was genau passieren soll wenn Du was machst.

    Danach kannst Du das Programm schon fast selbst schreiben. Konkrete Fragen zu einem geposteten Programm lassen sich viel einfacher beantworten.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    02.04.2011
    Beiträge
    7
    Hallo Searcher,

    ich habe mal das Datenblatt von meinem verwendeten Piezo Signalgeber angehängt. Dann werde ich jetzt mal die gewünschte Funktion beschreiben:

    Wenn ich den Taster (S1) kurz betätige, soll eine Zeit von 5 Minuten ablaufen. Wird anstatt dem Taster (S1) der Taster (S2) betätigt sollen 10 Minuten ablaufen. Wärend dieser Zeit sollen die Schaltausgänge 1 und 2 geschaltet werden. Nachdem die Zeit Abgelaufen ist, sollen die Schaltausgänge 1 und 2 wieder abgeschaltet werden. Sobalt die Schaltausgänge 1 und 2 abgeschaltet wurden soll am Schaltausgang 3 ein Piezo Signalgeber / Summer für 2 Sekunden angesteuert werden. Den Port ( PB5) habe ich mir als Reset Option überlegt.

    Taster (S1) --> PB0
    Taster (S2) --> PB1
    Taster (S3) (Reset) --> PB5
    Schaltausgang 1 --> PB2
    Schaltausgang 2 --> PB4
    Schaltausgang 3 (Piezo Signalgeber / Summer) --> PB3

    Gruß
    John13
    Angehängte Dateien Angehängte Dateien
    Geändert von John13 (12.04.2011 um 17:35 Uhr)

Ähnliche Themen

  1. Wartezeiten von mehreren Minuten
    Von MechMac im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 24.08.2010, 20:41
  2. Timer ATTiny - keine Funktion?
    Von dl1akp im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 19.02.2010, 16:03
  3. Antworten: 6
    Letzter Beitrag: 04.02.2009, 20:49
  4. Nach ca 15 Minuten etwas auslösen, ohne Timer zu benutzen?
    Von x8r im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 21.03.2007, 17:36
  5. Timer bei ATTINY 26 manuell reseten
    Von The Man im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 30.12.2006, 22:48

Berechtigungen

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

LiFePO4 Speicher Test