Hallo erstmal^^
Ich bin zukünftiger Abiturient und habe nächste Woche Montag meine
mündliche Präsentationsprüfung in Computertechnik.
Ich habe bereits mit dem AT89C51ED2 gearbeitet und diesen mit Assembler
programmiert.
In meiner Präsentation darf ich aber nicht mit einem µC arbeiten, den
ich bereits in einem Projekt benutzt habe.
Also brauche ich jetzt eure Hilfe.
Das Thema lautet im konkreten:
"
Auswahl eines geeigneten Mikrocontrollers für das Projekt
"Stadionanzeige"
- Erarbeitung von Auswahlkriterien
- Projektierung mit ausgewähltem Mikrocontroller
"
Soweit so gut. Jetzt zur Stadionanzeige und wie ich diese realisieren
will:
Die Anzeige soll die Spieldauer in Form von MM:SS und von 2 Mannschaften
je die Punkte in Form von PP anzeigen.
Das ganze soll mit 7-Segment Anzeigen (Gibt es da so Große?) oder per
LED-Bänder erstrahlen.
So nun jetzt zu den Anforderungen:
- Timer für die Spielzeit.
- Die Fähigkeit Externe Interrupts bearbeiten zu können, um die Punkte
hochzuzählen.
- Genügend Register um die Punkte und die Minuten/Sekunden zu speichern
(Punkte werden durch die Externe Interrupts hoch gezählt und Zeit wird
nach Timer Interrupt runter gezählt).
- Desweiteren hätte ich gerne (wenn ich richtig gerechnet habe ;)) min.
26 Pins.
Auf die Zahl komme ich durch die 2 Signale für Externe Interrupts und
pro Ziffer 4 Pins, die dann zu einem 7-Segment Wandler führen.
Die 2 Minuten und die 2 Sekunden Ziffern will ich per Multiplex Betrieb
laufen lassen.
Wenn es µC bzw. µC-Platinen mit integriertem 7-Segment Wandler gibt, sag
ich natürlich auch nicht Nein ;).
Am liebsten wäre es mir, wenn ihr mir direkt 2 Microcontroller empfehlen
könnt, da ich ja einen Microcontroller "auswählen" soll und bei der
Präsentation auch erklären soll, warum ich den oder den benutzt habe.
Ich hoffe ich habe euch genug Infos gegeben, Schreibkehler vermeidet ;)
und ich hoffe, dass ihr mir helfen könnt!
Im voraus schonmal vielen Dank!
Grüße,
Bagorolin
Jetzt habe ich doch noch was vergessen...
Also nur als Anmerkungen:
- Ich muss den µC nicht kaufen, sondern nur Vorstellen im Zusammenhang
mit dem Projekt.
- Programmcode muss ich im Normalfall nicht zeigen, sondern nur PAPs.
Guck die mal die STM8S-Reihe von ST Mircoeletronics an
(http://www.st.com/mcu/inchtml-pages-stm8s.html).
Lassen sich, dank fertiger C-Bibliotheken, sehr schnell programmieren.
Zudem gibt es ein nettes Starterboard names STM8S Discovery
(http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html). Da ist
neben dem µC, wo alle Pinne ausgeführt sind, auch direkt ein Programmer
integriert ... das Board bekommt man für unter 10€ bei Farnell, wäre
also auch noch günstig im Einstieg.
Einziger Nachteil: Es gibt nur bis 16k einen kostenlosen Compiler,
danach wirds teuer.
Hallo Bagorolin,
für diese Aufgabe braucht der Controller nicht viel zu können.
Sinnvoll ist jedoch, wenn man das Programm einfach realisieren kann.
AVR geht mit Assembler, C oder Basic.
Für die Anzeige würde ich was fertiges nehmen mit der Möglichkeit
über Kabel etwas Abstand zu überbrücken.
Vorschlag:
Prozessor Mega8 :http://www.rn-wissen.de/index.php/RN-MiniControl
Anzeige Über I²C:http://www.rn-wissen.de/index.php/RN-Digi
Mit I²C sind (ohne Treiber) ca. 50 - 70 cm möglich, mit
Treiber auch mehr. Der Anzeige "sagt" man einfach, was sie anzeigen
soll. I²C ist hier beschrieben:http://www.rn-wissen.de/index.php/I2C
Softwarebeispiele sind ausreichend vorhanden ;)
Noch eine 5 Volt Versorgung und fertig.
avr
Bagorolin schrieb:> Die Anzeige soll die Spieldauer in Form von MM:SS und von 2 Mannschaften> je die Punkte in Form von PP anzeigen.> Das ganze soll mit 7-Segment Anzeigen (Gibt es da so Große?) oder per> LED-Bänder erstrahlen.
Das größte, was es an 7-Segment Anzeigen gibt, sind 20 cm Zeichenhöhe:
http://de.farnell.com/forge-europa/fem-7902r0300gw/led-display-200mm-rot-gem-anode/dp/1200619
Wenn das nicht reicht, musst Du die Segmente aus einzelnen LEDs
zusammensetzen. Alternativ gibts auch die von Tankstellen bekannten
elektromechanischen Anzeigen, wo Segmente per Elektromagnete
sichtbar/unsichtbar gemacht werden.
http://www.pwm.com/index.php?id=70
Ich empfehle Dir, die Ansteuerung der Segmente mit Schieberegistern zu
machen, d.h. für jede Stelle ein Schieberegister mit 8 Ausgängen (z.B.
74HC595 oder mit integriertem Leistungstreiber TI TPIC6A596), jedes
Segment an einen Ausgang eines Schieberegisters (ggf über
Leistungstreiber, wenn das Schieberegister nicht genug Ausgangsleistung
hat) und die Umwandlung Binär->7-Segment softwaremäßig zu machen.
Warum? Wenn Du multiplext, wird ja jede Stelle nur 1/n'tel der Zeit
eingeschaltet. Dadurch erscheint sie dunkler. Um das auszugleichen,
musst Du den Strom erhöhen. Bei großen Anzeigen brauchst Du ohnehin
schon einiges an Saft, und wenn dann noch Multiplexing dazukommt, mußt
Du Spannung und Strom unter Umständen soweit erhöhen, dass es unbequem
wird, sprich Du keine geeigneten Treiber-ICs bekommst und das diskret
aufbauen musst oder sonst wie größeren Aufwand betreiben musst. Außerdem
kannst Du Dir EMV-Probleme durch die vielen Schaltvorgänge einhandeln.
Plus: CPU-Belastung - die muss eben nur die Daten raustakten, und dann
wars das bis zur nächsten Sekunde.
Plus: Du brauchst weniger Pins: Serielle Daten aus, Schiebetakt,
Registertakt (übernimmt die Daten aus dem Schieberegister in das
Ausgangsregister der genannten Bausteine, so wird die Anzeige nicht
gestört, wenn Du neue Daten reinschiebst, sondern sie werden erst
übernommen, wenn Du einen Puls auf dem Registertakt sendest).
Lies die Datenblätter zu den genannten Chips!
>> So nun jetzt zu den Anforderungen:> - Timer für die Spielzeit.> - Die Fähigkeit Externe Interrupts bearbeiten zu können, um die Punkte> hochzuzählen.
Müssen das unbedingt Interrupts sein, oder reicht es nicht auch aus,
wenn Du jede Sekunde den Eingang abfragst. Wenn es Taster sind, denk an
das Entprellen.
> - Genügend Register um die Punkte und die Minuten/Sekunden zu speichern> (Punkte werden durch die Externe Interrupts hoch gezählt und Zeit wird> nach Timer Interrupt runter gezählt).
Ersetze Register durch Speicher.
> Am liebsten wäre es mir, wenn ihr mir direkt 2 Microcontroller empfehlen> könnt, da ich ja einen Microcontroller "auswählen" soll und bei der> Präsentation auch erklären soll, warum ich den oder den benutzt habe.
Das, was Du vorhast, kannst Du mit jedem 8 Bit Controller erreichen, das
ist keine große Sache.
Drei sehr bekannte Hersteller sind Microchip (hier greifst Du Dir einen
passenden Chip aus der PIC18 Serie), Atmel mit den AVRs und TI mit den
MSP430. Alle Hersteller haben auf ihren Webseiten Bausteine-Übersichten
und eine parametrische Suche, wo Du die Kriterien einstellst und die
passenden Bausteine angezeigt bekommst.
Zur Auswahl noch ein paar Stichpunkte:
1. Bauteilekosten (wieviel kostet der Controller, was kommt sonst noch
dazu)
2. Spannungsversorgung (welche Betriebsspannung braucht der Controller,
was brauchen die anderen Chips -> wenn der Controller nur bis 3.6V geht,
die TPIC6A596 Schieberegister aber nur mit 5V Logikspannung arbeiten,
was hat das für Auswirkungen auf Schaltungsaufwand und Kosten?)
3. Entwicklungswerkzeuge (wie kommt das Programm in den Controller,
kannst Du nachher per Einzelschritt durch Dein Programm durchsteppen,
wie viele Pins gehen Dir durch den Anschluss des Debuggers/Programmers
verloren)
4. Wie weit verbreitet sind die einzelnen Controller, wie lange sind die
Chips erhältlich?
5. Wie ist die interne Architektur der Controller, wie viele interne
Register etc; was kann das für einen C-Compiler bedeuten?
Das sind jetzt einige Anregungen. Du sollst ja Deine Hausaufgabe selber
machen, sonst lernst Du nix.
fchk
viel spaß, wenn dein lehrer sich am hervorragenden pagerank dieser seite
erfreut und deinen beitrag dank bester hinweise in kürzester zeit finden
wird.
Bagorolin schrieb:> In meiner Präsentation darf ich aber nicht mit einem µC arbeiten, den> ich bereits in einem Projekt benutzt habe.> Also brauche ich jetzt eure Hilfe.
Wieviel Zeit hast Du denn?
Mußt Du alles aufbauen + Schaltplan + Programm?
> - Erarbeitung von Auswahlkriterien> - Projektierung mit ausgewähltem Mikrocontroller
Eigentlich nur die benötigte Pinzahl und einen Timerinterrupt sollte er
haben.
Wenn Du hier fragst, wird Dir gerne der ATmega164 empfohlen. Der reicht
dicke aus.
> Das ganze soll mit 7-Segment Anzeigen (Gibt es da so Große?) oder per> LED-Bänder erstrahlen.
Große Anzeigen brauchen 8V oder mehr, da ist die Ansteuerung per
Leistungstreiber am einfachsten, z.B. je Digit ein TPIC6C595.
> - Timer für die Spielzeit.
Also einen Timerinterrupt.
> - Die Fähigkeit Externe Interrupts bearbeiten zu können, um die Punkte> hochzuzählen.
Eigentlich sollte man darlegen, daß das professoraler, nicht
auszurottender Irrglauben ist. Externe Interrupts machen die Software
nur unnötig kompliziert, da man noch entprellen muß.
Daher wird in der Praxis kein externer, sondern ein Timerinterrupt
genommen, der kann das besser und einfacher.
Und wir brauchen ja eh einen für die Uhrzeit, der macht dann bequemer
Weise das Tasten einlesen und Entprellen gleich mit.
> - Genügend Register um die Punkte und die Minuten/Sekunden zu speichern> (Punkte werden durch die Externe Interrupts hoch gezählt und Zeit wird> nach Timer Interrupt runter gezählt).
Macht man üblicher Weise nicht mit Registern sondern im SRAM. Die
meisten MCs haben mindestens 128Byte SRAM, das reicht dicke als Stack
und für Deine Variablen.
> - Desweiteren hätte ich gerne (wenn ich richtig gerechnet habe ;)) min.> 26 Pins.
Der ATmega164 hat 32 IO-Pins, das reicht dicke.
> Wenn es µC bzw. µC-Platinen mit integriertem 7-Segment Wandler gibt, sag> ich natürlich auch nicht Nein ;).
So verrückt ist heutzutage niemand mehr. Das ist ein indirekter
Speicherzugriff auf die Tabelle mit den 7-Segment Mustern. Und für die
wenigen Byte Code lohnt es sich nicht, einen extra Chip zu verschwenden.
Du hast bestimmt schon den Befehl "MOVC A,@A+DPTR" gesehen, der ist
genau dafür gedacht.
Beim AVR gibts den LPM-Befehl, ist aber nicht so komfortabel, man muß
den Index vorher noch auf den Tabellestart addieren.
Peter
Vor dem Lehrer hätte ich da keine Angst... wenn du zeigst dass du das
hier Geschriebene auch verstanden hast würde ich diese Seite als Quelle
angeben und da auch kein Geheimnis draus machen... Expertenbefragungen
und die Erfahrungen anderer Techniker sind schließlich eine beliebte und
auch anerkannte Quelle...
Die Frage ist ja nur: Wieviel versteht dein Lehrer von dem, was du
sagst... Bei der Präsentation meines Praxissemesterberichtes (Technische
Informatik) wusste mein Prof. nichtmal etwas mit Begriffen wie Spektrum,
FM/AM oder Sendeleistung anzufangen...
Etwas Off-Topic aber zufällig in mehreren Physik-Klausuren RS 6. Klasse
gesehen: Schalte über einer Reihenschaltung aus 2 Glühbirnen 3 weitere
parallel...
laut Lehrer korrekte Anwort (Glühbirne hier mal mit "O"):
+ -------O-------O-------- -
| |
|--O---|
| |
|--O---|
| |
|--O---|
Findet den Fehler ;)
70% der Schüler haben es übrigens genau wie oben gezeichnet und dafür
volle Punktzahl bekommen...
>Ich bin zukünftiger Abiturient und habe nächste Woche Montag meine>mündliche Präsentationsprüfung in Computertechnik.
Was hat das mit uC zu tun?
>Ich habe bereits mit dem AT89C51ED2 gearbeitet und diesen mit Assembler>programmiert.>In meiner Präsentation darf ich aber nicht mit einem µC arbeiten, den>ich bereits in einem Projekt benutzt habe.
Schwachsinnige Vorgabe. Sag einfach du kennst sie alle.
>Soweit so gut. Jetzt zur Stadionanzeige und wie ich diese realisieren>will:
Ich dachte du musst? Was hat das mit "will" zu tun?
>Am liebsten wäre es mir, wenn ihr mir direkt 2 Microcontroller empfehlen>könnt, da ich ja einen Microcontroller "auswählen" soll und bei der>Präsentation auch erklären soll, warum ich den oder den benutzt habe.
Zwei uC? Lächerlich. Microchip PIC16, PIC18, PIC24, PIC30, PIC32.
Atmel AVR, MSP430, M16 Renesas, ARM7, ARM9, 8051 sonstwas, Propeller.
Jeder von denen kann das was du möchtest. Mit LED Treiber logo.
Bis nächsten Montag hast du nicht mal die Datenblätter dazu gelesen;)
Da schaffst du es auch nicht zu erklären warum dir empfohlen wurde
diesen uC zu nehmen. Selber gefunden hast du ihn ja nicht.
Daniel F. schrieb:> Vor dem Lehrer hätte ich da keine Angst... wenn du zeigst dass du das
soso? dann lies doch das hier nochmal:
Bagorolin schrieb:> Am liebsten wäre es mir, wenn ihr mir direkt 2 Microcontroller empfehlen> könnt, da ich ja einen Microcontroller "auswählen" soll und bei der> Präsentation auch erklären soll, warum ich den oder den benutzt habe.
denn er fragt nicht so:
"passt denn modell XXX. den hab ich ausgesucht, weil a), b), c)"
sondern so:
"ich kann/will das nicht machen, deswegen macht ihr mal"
und das ist keinem lehrer recht.
Vielen Dank an dieser Stelle an "Frank K." und "Peter Dannegger". Ihr
habt mir echt geholfen. Und danke auch an die Anderen die sich ernsthaft
bemüht haben, mir zu helfen.
Sinnlose Flames sind hier fehl am platz. An Michael M. und den ach so
netten Holger sei hier nur gesagt:
Schaut euch mal den Thread an und zählt, wieviele µC mir empfehlen
wurden.
Mir war klar, dass es hier so viele Unterschiedliche Meinungen geben
wird, dass ich dennoch eine Auswahl habe, die ich selektieren werde.
Jedoch muss ich jetzt nicht von Hunderten auswählen sondern nur von ein
paar Dutzend.
>Ich habe bereits mit dem AT89C51ED2 gearbeitet und diesen mit Assembler>programmiert.
Damit wollte ich nur sagen, dass verwandte Controller, also auch die AVR
Familie mir wahrscheinlich leichter von der Hand gehen.
@wolfgang: Infos über mich, bekommt ihr nicht mehr, als ihr bereits
bekommen habt. Das tut auch nichts zur Sache.
Und wieder back to Topic:
Ich muss nichts aufbauen und kein Programmcode schreiben. Ich muss das
Problem nur Projektieren. Das heißt ein Schaltplan im Sinne von
Blockschaltbild muss ich machen und PAPs.
Der µC sollte externe Interrupts bearbeiten können, damit ich mir die
Option offen halten kann, ob per Knopfdruck hochgezählt wird oder ob
nicht vlt per Lichtschranke oder ähnlichem ein Signal kommt.
@Peter: Wie soll ein Timerinterrupt solch ein Signal bearbeiten können?
Das wäre dann die einzigste Frage die ich noch habe. Ansonsten vielen
Dank. Ab jetzt komm ich alleine klar.
Bagorolin schrieb:> Der µC sollte externe Interrupts bearbeiten können, damit ich mir die> Option offen halten kann, ob per Knopfdruck hochgezählt wird oder ob> nicht vlt per Lichtschranke oder ähnlichem ein Signal kommt.
Das ist völlig sinnlos.
Ein externes Signal hat an dieser Stelle für einen µC die Dauer einer
halben Ewigkeit.
Einen Interrupt bräuchtest du an dieser Stelle nur, wenn du den µC
zwischenzeitlich zum Stromsparen schlafen legst und du keinen anderen
Interrupt hast, der ihn wieder 'aufwecken' könnte.
> @Peter: Wie soll ein Timerinterrupt solch ein Signal bearbeiten können?
Indem im Timerinterrupt nachgesehen wird, ob sich der Eingangspegel
geändert hat.
Wenn der Timerinterrupt alle 1 Millisekunden (und das ist für einen µC
schon eine lange Zeit) auftritt, überwachst du den Eingang 1000 mal in
der Sekunde. Das reicht dicke!
Tasten mit Interrupts zu bearbeiten verkompliziert die Sache nur und
macht sie nicht einfacher. Auch wenn die meisten Newbies anderer Ansicht
sind.