Forum: Projekte & Code Simon sagt mit ATtiny44


von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

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).

von G. Ast (Gast)


Lesenswert?

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.

von Schaltung Lesa (Gast)


Lesenswert?

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?

von Schaltung Lesa (Gast)


Lesenswert?

Schaltung Lesa schrieb:
> Abblock-Kondensatoren gehören -->direkt<-- an die Pins von Vcc und GND.

.... des jeweiligen abzublockenden Bausteins.

von Mario M. (thelonging)


Lesenswert?

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.

von Ralph S. (jjflash)


Lesenswert?

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).

von Al3ko -. (al3ko)


Lesenswert?

Schaltung Lesa schrieb:
> Du könntest jetzt argumentieren: wieso? geht doch auch so? ....

Ralph S. schrieb:
> sie tut genau das was sie soll.

?

von Schaltung Lesa (Gast)


Lesenswert?

Ralph S. schrieb:
> Es sind 2 ICs und jeder hat 10uF und 100nF.

Wahrnehmungsstörungen?

von Ralph S. (jjflash)


Lesenswert?

... 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???

von Frank (Gast)


Lesenswert?

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

von jemand (Gast)


Lesenswert?

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.

von Ralph S. (jjflash)


Lesenswert?

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
Noch kein Account? Hier anmelden.