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

Thema: Taster Doppel- Dreifachbelegung Attiny2313 mit Blinkimpuls für Nixie Projekt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    57
    Beiträge
    2.814
    So Sachen wie delay/wait/sleep kontra Timer/Interrupt sind an sich nicht Sprachabhängig, sondern bei fast allen µC üblich.

    Delay ist fast immer ein KO für die Ausführung mehrerer Aktionen, da es die Programausführung einfach anhält. Sprich es wird nichts anderes verarbeitet (außer Hardwaretimer und Interrupts).

    Für so was zwei Attiniy zu nehmen, ist tatsächlich nicht schön. Ob es einfacher umzusetzen ist weis ich nicht, da ja immer noch der eine per Delay auf nichts reagiert. also auch nicht auch ein Signal von außen.
    Der führt dann 2068 Millisekunden pluß ein paar CPU Zykluszeiten das Blinken aus und reagiert da genau einmal auf einen eventuell grade dann anstehenden Pegel an einem Eingang.

    Entweder man baut das ganze mit diskreter Schaltlogik auf oder muß sich einmal mit µCs an sich und dem C-Dialekt vom Amtel Studio im besonderen auseinander setzen.

    Letzteres würde ich jetzt empfehlen.

    Der Code von:
    https://startingelectronics.org/tuto...-polled-timer/
    scheint mir ganz gut zu sein.
    Das Tutorial drumrum hilft dann vermutlich auch noch mal etwas weiter.
    Code:
    #include <avr/io.h>
    
    int main(void)
    {
        char toggle = 0;
    
        DDRD |= (1 << PD6); // LED on PD6
        
        TCCR0A = 0x02;      // Clear Timer on Compare Match (CTC) mode
        OCR0A  = 0xFF;      // number to count up to
        TCCR0B = 0x05;      // clock source CLK/1024, start timer
    
        while(1)
        {
            if (TIFR & 0x01) {      // timer timed out?
                TIFR |= 0x01;       // reset timer flag
                // toggle LED each time the timer times out
                if (toggle) {
                    toggle = 0;
                    PORTD &= ~(1 << PD6);
                }
                else {
                    toggle = 1;
                    PORTD |=  (1 << PD6);
                }
            }
        }
    }
    Eventuell klinkt sich hier ja auch noch jemand ein der mit der Kombination "Attiny2313, Amtel Studio 7 und C" vertraut ist.

    Bei dem Code oben wäre der Port für die LED anzupassen und der prescaler für den Timer, damit der Blinkintervall zu Deinen Anforderungen passt.

    Dann könnte man die Tasterabfrage hinter dem while (direkt vor dem If) einbauen.


    Zitat Zitat von Jens1 Beitrag anzeigen
    zu den Tastendrücken hatte ich mir gedacht:
    1x drücken, Blinken ein
    ein weiters mal drücken LED´s einschalten
    ein weiters mal drücken, alles aus und optional PD5 gegen Masse
    dann wieder von vorn
    Bei dieser Logik, kann man Blinken wählen, Blinken und LED's sowie alles aus.
    LED's ohne Blinken ist nicht auswählbar.
    Ist das so gewollt?
    Oder hast Du diese Option übersehen?
    Geändert von i_make_it (02.03.2017 um 09:14 Uhr)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2017
    Beiträge
    7
    Hallo i_make_it,

    die Logik ist so gewollt. Die Hauptsache sind die Blinkenden Trenner, Nebensache die LED Beleuchtung. Vielen Dank für den Hinweis.

    Mit dem zweiten Attiny2313 dachte ich mir das so:

    Klicke auf die Grafik für eine größere Ansicht

Name:	Blink.jpg
Hits:	6
Größe:	44,1 KB
ID:	32457

    Dann könnte der Delaycode in den 2. 2313, und der erste versorgt den zweiten nur mit der Betriebsspannung wenn gewünscht.

    Dann wäre nur das Problem mit der mit den 3-4 Tastendrücken zu lösen.

    Ich werd mich jetzt erstmal mit deinen Links befassen und versuchen da was draus zu lernen.

    Danke schön
    Geändert von Jens1 (02.03.2017 um 19:19 Uhr)

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2017
    Beiträge
    7
    Ich hab versucht etwas zu verstehen, aber momentan hab ich information overload und versteh grad nix mehr. Ich schlaf jetzt erstmal drüber.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    57
    Beiträge
    2.814
    Häppchenweise, nicht alles auf einmal.

    Die Blinkfunktion ist das wichtigste, da es die einzige Funktion ist die eine ständige Überwachung und Akrion (PIN Toggle) des µC's erfordert.
    Die Funktion muß als erstes sauber implementiert werden.
    Der Rest regiert ja nur bei Tastendruck.

    Da wäre dann die IRQ Auswertung eines Eingangs sinnvoll.
    In der ISR wird dann nur eine Zählervariable immer um 1 hochgezählt.
    In der normalen Programmschleife wird dann bei Zählerstand = 1 eine Variable fürs Blinken gesetzt.
    Bei Zählerstand = 2 eine Variable für die Beleuchtung
    Und bei Zählerstand = 3 wird der Zählerstand auf 0 gesetzt und beide Variablen gelöscht.

    Danach wird einmal geprüft ob die Variable für die Beleuchtung = 1 oder = 0 ist und dementsprechend der PIN für die Beleuchtung von 0 auf 1 oder von 1 auf 0 umgeschaltet.

    Beim Blinken wird das "toggle = 1;" in eine weitere Abfrage gepackt und dort geprüft, ob die Variable fürs Blinken = 1 ist.
    Somit lauft die Mimik fürs Blinken nach Zeit, ständig durch.
    Aber ob Die LED's wirklich leuchten hängt vom Zustand der Blinkvariable ab.

    Das ist so wie wenn Du das Rechtecksignal mit einem astabilen Multivibrator erzeugst und dann einen Transistor als Schalter hast, der das nur weiterleitet wenn an er durchgeschaltet ist.

    Bei einem Hardwaraufbau würde man auch genau das machen.
    Den Schalter/Taster als Takt für einen binären Zähler bis 3 nehmen (0-2). und dann per logischer Verknüpfung der Ausgangbits für den Zustand 1 und den Zustand 2 die jeweiligen Transistoren durchschalten die einmal die Versorgung der Beleuchtung und einmal das Rechtecksignal des Blinkens weiterleiten.
    Aus dem Kopf raus müsste man da mit 2 Flipflops und einem Exklusiv-Oder hinkommen.

    Wäre vermutlich auch eine interesannte Prä-Computer Lösungsvariante der Aufgabenstellung.
    Geändert von i_make_it (03.03.2017 um 18:43 Uhr)

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2017
    Beiträge
    7
    das hier klingt auch interessant.

    klick

    Je tiefer ich da reingucke, umso undurchsichtiger wird es, find ich.
    Ich hatte ganz früher mal mit meinem C64 kleine Programme in Basic geschrieben. Lang ist es her. Ein paar Sachen kann ich mit Probieren anpassen, dann hört es aber schon wieder auf. Ich verstehe den Aufbau und die Zusammenhänge nur bedingt. Wie gesagt die 2 AT2313 Variante wäre mir auch recht, die hätte ich da und müsste nicht erst noch Teile bestellen.

    Dein anderer Lösungsvorschlag hat mir gezeigt, dass ich mal sowas von den falschen Ausbildungsweg eingeschlagen bin. Ich musste 90% davon googlen.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    57
    Beiträge
    2.814
    Dein Link erklärt in Deutsch und ausführlicher das was in:
    https://startingelectronics.org/tuto...-polled-timer/
    Beschrieben wird.
    Mit dem Code von dort und den Erklärungen in deutsch solltest Du das Blinken mit Timern hinbekommen.

    Ich habe auch mit C64 und Sinclair ZX81 angefangen.
    Hab dann halt weitergemacht.
    Aber meine Ausbildung ist das auch nicht. Als Werkzeugmacher und Maschinenbauer kommt nur etwas Elektrik mit Schützen und Stern-Dreieck Schaltung für Motoren in der Ausbildung vor.
    Es kommt drauf an ob Du da mehr machen willst oder nur eine einmalige Lösung für ein Problem brauchst.
    Willst Du zukünftig mehr mit µC's machen, macht das einlesen Sinn.
    Denn Du kannst dann auch das Wissen auf andere µC's und andere Sprachen adaptieren.

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    57
    Beiträge
    2.814
    Wo hängen eigentlich die LED's für die Beleuchtung dran?

    Aus dem von Dir am Anfang geposteten Code Stücken komme ich auf:
    Blinkende LED's >> PD5
    Taster >> PD2 (hier wird INT0 ausgelöst. an PD3 wäre es INT1)

Ähnliche Themen

  1. Beratung zu einem Projekt, Schrittmotor, Taster, Display
    Von amieXchen im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 07.04.2014, 21:24
  2. Poppige Nixie-Röhren
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 06.02.2014, 10:10
  3. Meine kleine Nixie Uhr
    Von Kampi im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 14
    Letzter Beitrag: 21.05.2013, 21:14
  4. Screens wechseln mit 2 Taster (oder mit einem Taster)
    Von tordy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 14.07.2009, 13:39
  5. NIXIE UHR
    Von MarkusLudwig im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 15.08.2006, 13:46

Berechtigungen

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

Solar Speicher und Akkus Tests