nachdem ich mich jetzt schon eine Weile mit der Codesammlung / Framework für einen ATtiny44 beschäftigt habe, habe ich nach dem UKW Radio eine zweite Software geschrieben die auch wirklich aufgebaut (auf Platine) werden wird (sie wird als Lötübung für SMD Bausteine Verwendung finden) Die Platine wird als extrem preiswerte Übungsplatine fungieren, die aber schon minimale I/O Komponenten hat: - zweistellige 7-Segmentanzeige (LED) - 4 externe LED - 4 Taster - Lautsprecheranschluss Die Ansteuerung des 7-Segmentanzeige sowie der externen LEDs erfolgen über das extrem preiswerte (altbekannte) Schieberegister SN74HC595, die Anzeigen selbst werden von Controllerpins gemultiplext. Mittels Timerinterrupt ist ein einfacher (Rechteck)Tongenerator implementiert. Weil ein Interrupt eines AVR nicht von einem anderen Interrupt unterbrochen werden kann, hab ich mich entschlossen, das multiplexen der Anzeige und die Tongenerierung mit einem Interrupt zu realisieren (was zur Folge hat, dass die Anzeige mit unterschiedlichen Frequenzen gemultiplext wird). Damit der Umgang und Einstieg sehr einfach bleibt, habe ich die Ansteuerung in eine einzige .c / .h Kombination gepackt (mini_io). ------------------------------------------------------ Mit dieser gegebenen Hardware wurde das bekannte Spiel "Simon sagt" realisiert: Computer gibt eine Abfolge von 4 verschiedenen Tönen vor, die der Spieler nachspielen muss. Die 7-Segmentanzeige zeigt an, wieviele Abfolgen man erreicht hat. Ein Video kann man hier sehen: https://www.youtube.com/watch?v=iyRL2CKWwao ------------------------------------------------------- Weil mir die Standardanzeigen zu groß waren, habe ich mich in EBAY auf die Suche begeben und deshalb ist es eine Anzeige mit gemeinsamer Kathode geworden (obwohl ich aus bestimmten Gründen gemeinsame Anode ansonsten bevorzuge). Ebayquellen waren / sind: (10 Stück zweistellige Anzeige 0,28" Anzeigenhöhe) https://www.ebay.de/itm/253836689791 (Schieberegister SN74HC595: Wahnsinn, 5 Cent per Stück) https://www.ebay.de/itm/202464991525 (ATtiny44) https://www.ebay.de/itm/201539508026 -------------------------------------------------------- (ich weiß: würde es nur um das Spiel gehen, würde man einen ATmega8 oder einen STM8 verwenden ohne ein externes Schieberegister verwenden zu müssen).
Ralph S. schrieb: > Weil ein Interrupt eines AVR nicht von einem anderen Interrupt > unterbrochen werden kann, Wer sagt das? Abgesehen davon, dass man natürlich auch in einer Interrupt routine die Interrupts wieder freigeben kann ist es eigentlich ausreichend einen einzigen Interrupt zu verwenden von dem dann die nötigen Frequenzen für Multiplexing, Tongenerator, Tastenabfrage und -entprellung usw. abgeleitet werden.
Ralph S. schrieb: > Die Platine wird als extrem preiswerte Übungsplatine fungieren, die aber > schon minimale I/O Komponenten hat: Es ehrt dich das du im Schatplan nicht die Abblock-Kondensatoren unterlassen hast vorzusehen (viele argumentieren: wieso? geht doch auch ohne), jedoch sehe ich auf dem Aufbau nur einen. Und dieser eine ist auch noch völlig de-platziert. Abblock-Kondensatoren gehören -->direkt<-- an die Pins von Vcc und GND. Du könntest jetzt argumentieren: wieso? geht doch auch so? .... Und wenn "seltsame" Effekte im Ablauf der Software auftreten, sagst du dann: an der Hardware kann's nicht liegen, da ist alles super .... ? Ich kenne deinen Schallwandler nicht, aber bist du sicher dass der ohne weitere Beschaltung direkt am Portpin eines Controllers hängen darf?
Schaltung Lesa schrieb: > Abblock-Kondensatoren gehören -->direkt<-- an die Pins von Vcc und GND. .... des jeweiligen abzublockenden Bausteins.
Schaltung Lesa schrieb: > ohne weitere Beschaltung direkt am Portpin Gleiches gilt für den Anschluss der Siebensegmentanzeige. Außerdem sollten die Anoden über Transistoren getrieben werden, wenn mehr als ca. 5 mA pro Segment fließen.
unglaublich: Es sind 2 ICs und jeder hat 10uF und 100nF. Lautsprecher könnte auch über Transistor getrieben werden... aaaaber, für solche Sachen hab ich einen Testlautsprecher (8 Ohm) OHNE Membran, der Controller hat 2 Stunden Dauerdudeln überlebt. Das gleiche gilt für die Anzeige. Immer auch dran denken, dass das gemultiplext ist (allerdings hab ich keine Messung gemacht, wie groß die Spitzenströme sind... auch immer dran denken: das ist ein Spielzeug... ein billiges. Die Lebensdauer ist nicht so arg relevant). Im übrigen gilt beim Schaltplan: Es muss aus dem Plan NICHT die spätere Zuordnung auf dem PCB zu sehen sein, ein Schaltplan dient zum Verständnis einer Schaltung um die Funktionsweise zu sehen. Ich hasse Pläne sehr, bei dem die Pins eines ICs so gezeichnet sind als würde es eine Draufsicht auf den Baustein sein. Das macht den Plan in aller Regel dann sehr unleßbar. Hm, Blockkondensatoren an LEDs... das... mach ich dann nicht. An Schaltungs Lesa: Die Schaltung hat keine merkwürdigen Nebeneffekte, sie tut genau das was sie soll. Im Übrigen mit 3,3V und mit 5V (bei 3,3V leuchten die LEDs logischerweise etwas dunkler).
Schaltung Lesa schrieb: > Du könntest jetzt argumentieren: wieso? geht doch auch so? .... Ralph S. schrieb: > sie tut genau das was sie soll. ?
... die Platine hat die Kondensatoren ! An den Aufbau vom Foto hab ich nicht mehr gedacht. Grins, da gibt es aber dennoch einen (aber nur eine) Kondensator und den hab ic im Sockel für den Tiny reingebastelt, einen Sockel mit C für das Schieberegister hab ich auch gemacht gehabt, den aber in einer anderen Schaltung verwendet. Aaaaaaaaber: Wo? sollte bei einer gemultiplexten Anzeige ein Kondensator hin bitteschön???
Er meint sicher vorwiderstände vor der anzeige. Aber auch der rest is so ok da die meisten gängigen co troller den portpin strom sowieso begrenzen
Frank schrieb: > Er meint sicher vorwiderstände vor der anzeige. Aber auch der rest > is so > ok da die meisten gängigen co troller den portpin strom sowieso > begrenzen Hab schon mal einen gehimmelt auf die Art. Danach war der Port putt. Ich würd zumindest einen Serienwidestand vorsehen. Kannst ja eine Brücke bestücken. Blos dazubasteln wenn man ihn doch braucht ist ziemlich lästig, weil man alles aufkratzen muss.
Frank schrieb: > ok da die meisten gängigen co troller den portpin strom sowieso > begrenzen Der Strom wird in erster Linie durch das Schieberegister begrenzt, aaaaaaaber (meine Güte): Nur zum Verifizieren mal gemacht (an 2 verschiedenen ATtiny44 und einem ATtiny84): Stromversorgung 5V aus Labornetzteil (Innenwiderstand kenne ich nicht, hat aber maximalen Ausgangsstrom 3A). Gesamtstrommessung über einen 0,47 Ohm Meßwiderstand aufgenommen und über einen Instrumentenverstärker am Speicherscope (Bandbreite 200 MHz) dargestellt (bei Anzeige= "88" und alle 4 LED an, kein Ton - okay: Programm extra für diesen Fall der größten Stromaufnahme geflasht - ). Summenspitzenstrom (für kleiner 10µS) ca. 53 mA. Mittlerer Summenstrom (Fluke 45) ca. 38mA. Delta Theta (bei 23°C Umgebungstemperatur) nach 10 Minuten Laufzeit < 3 Kelvin (Temperaturfühler PT1000) bei beiden Chips. (Fehlerquelle: Fühler nur mit TESA auf dem Chip fixiert und ja ich weiß: widerspricht der Vorbeugung der ESD Vorschriften). Datenblattauszüge: ----------------------------------------------------------------------- Gesamtstromaufnahme des Tiny (lt. Datenblatt) max. 200mA zulässig. Gesamtstrom per I/O Pin max. 40mA. Ausgangsstrom Ausgangspins SN74HC595 = 35mA max. Maximaler Gesamtstrom SN74HC595 = 70mA max. ----------------------------------------------------------------------- Von einer Strommessung der I/O Pins des Tiny und des Schieberegisters sehe ich jetzt mal ab. Aus meiner Sicht der Dinge werden hier keine LED Serienwiderstände benötigt. Wer mag, kann dennoch 7 Serienwiderstände einbauen. Macht die Anzeige halt dunkler - für die 4 einzelnen Spieleleuchtdioden vielleicht gar nicht schlecht, weil meine schon bei 3 mA (im statischen Betrieb) fast zu hell sind. So, jetzt könnt ihr mich steinigen, weil ihr meint, dass man so etwas nicht macht! (ich weiß nicht, wieviele gemultiplexte LED's ich schon aufgebaut hab, auch in Geräten. Bisher ist noch keines - auch nach jahrelangem Betrieb - "abgeraucht" ). ------------------------------------------------------------------------ Irgendwie scheint vergessen zu werden, dass das eine Bastelei ist und ganz pragmatisch: Wenn es funktioniert (und es lange funktioniert), ist alles gut.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.