Forum: Mikrocontroller und Digitale Elektronik Stoppuhr mit Mega8. Reicht ein Controller aus?


von Jochen (Gast)


Lesenswert?

Schönen guten Abend!

Ich habe vor, eine Stoppuhr  zu bauen. (Atmel Mega 8)
Ich habe mir das  schon so weit überlegt, jedoch brauche ich einen 
Impuls von einer Sekunde. Wie kann ich eine Sekunde Verzögerung 
einbauen?
Gibt es da einen entsprechenden Timer oder kann ich das über 
Zählschleifen machen? Wie finde ich raus, wieviel Zählvorgänge ich 
brauche?(in Asselbler)

Ich habe mir überlegt, die Ausgänge dann im BCD Code vorliegen zu haben, 
um so 7 Segmentanzeigen ansteuern zu können. Jedoch brauche ich vier 
solcher 7 Segmentanzeigen, also 16 Ausgänge. Ich habe aber nur 12. (Port 
D, C, B).
Gibt es Alternativen, sodass ich mit einem Mikrocontroller auskomme?

von Rahul D. (rahul)


Lesenswert?

>Ich habe mir das  schon so weit überlegt, jedoch brauche ich einen
>Impuls von einer Sekunde.
Aeonen für einen Mikrocontroller...

>Gibt es Alternativen, sodass ich mit einem Mikrocontroller auskomme?

Ja, lern das Ding richtig kennen. Hier auf der Seite gibt es diverse 
Tutorien.
(wenn man in der Codesammlung "ziemlich simple Uhr" in der Betreffsuche 
eingibt, findet man eine Lösung; gibt man nur "Uhr" ein, findet man ein 
paar mehr...)

Statt irgendwelcher BCD-Siebensegment-Decoder kann man lieber die 
Anzeige multiplexen. Und selbst dabei langweilt sich der Controller...

von Christoph (Gast)


Lesenswert?

Hi,

erst mal das wichtigste: das packt ein Mega8 locker (und langweilt sich 
dabei noch).

Einen Sekundentakt erzeugst du dir mit einem der Timer (-> Datenblatt 
lesen), verbrat dafür bitte keine Rechenzeit mit Warteschleifen.

Die vier 7-Segment-Anzeigen kannst du Zeit-Multiplexen, dann benötigst 
du nur die Ausgänge für eine Anzeige und zusätzliche 4 zum auswählen der 
aktuellen Anzeige. Wurde schon oft genug hier besprochen, sollte kein 
Problem sein da Infos zu finden. (Kurzfassung: Die Anzeigen sind alle 
parallel geschaltet, die gemeinsame Anode/Kathode jeder Anzeige kann 
jedoch z.B. über einen Treibertransistor geschaltet werden).

von frank (Gast)


Angehängte Dateien:

Lesenswert?

da nimmste ein schieberegister 74595

von Jochen (Gast)


Lesenswert?

Wie kann ich die denn Zeit-Multiplexen?
Brauch ich dazu weitere Bauteile?

von Ad D. (picant)


Lesenswert?

<ironie>

>Gibt es Alternativen, sodass ich mit einem Mikrocontroller auskomme?

Ja aber es muss mindestens 64 Bit und 8 GHz Takt haben

</ironie>

von Sebastian F. (tacx)


Lesenswert?

Zum Multiplexen brauchst Du, wie oben geschrieben je einen Transistor 
für ein Display. In Deinem Fall also 4 ganz gewöhnliche 
Feldwaldundwiesentransistorien.
Im Prinzip geht das Multiplexen so:
- alle Transistoren sperren
- Inhalt für n. Display auf den Displayausgang schreiben
- Transistor für n. Display aufsteuern
- Transistor für n. Display sperren
- n+1 und von vorn

von Power (Gast)


Lesenswert?

@ frank:
Hat sich das Bascom-Forum tatsächlich das Copyright für diese 
0815-Schaltung sichern lassen? Das wäre ja mehr als lächerlich! 
Ansonsten würde ich so 'ne Peinlichkeit nicht in den Schaltplan 
schreiben! ;-)

von frank (Gast)


Lesenswert?

@Power  nein das habe ich getan weil ich es dort kopiert habe.

von Power (Gast)


Lesenswert?

Na dann.. hat meine Ansicht zu Bascom bestätigt!

von frank (Gast)


Lesenswert?

welche ansicht ??

von Power (Gast)


Lesenswert?

Die, dass Bascom eine 'Blackbox' ist und den Eindruck vermittelt, ohne 
Grundkenntnisse AVRs programmieren zu können. Viele Beiträge hier im 
Forum haben das bestätigt. Ich halte nichts von Basic oder Bascom.
Ist aber meine persönliche Meinung!

von frank (Gast)


Lesenswert?

es gibt keine programmiersprache ohne kenntnis der hartware
das ist bei assembler und c sogar noch schlimmer als bei bascom.

von Hannes L. (hannes)


Lesenswert?


von Power (Gast)


Lesenswert?

Das meine ich ja. Zuerst in Assembler beginnen, das Datenblatt als 
besten Freund zurate ziehen, wenn die Hardware geläufig ist kann mit 
Hochsprachen begonnen werden. Bei C ist noch durchschaubar oder 
dokumentiert was bei den einzelnen Befehlen passiert, bei Bascom 
stochert man im Trüben und muss sich auf den Compiler verlassen. Das 
scheint beim ersten Blick einfach zu sein, stellt einen aber schnell vor 
unlösbare Probleme.

von frank (Gast)


Lesenswert?

in bascom kann man ganz einfach assembler einbinden und muss auch nicht 
unbedingt die hochsprachen befehle benutzen dann bleibt alles 
überschauber,
man kann ganz einfach alle register wie in assembler anspreche und jedes 
bit setzen.

von Power (Gast)


Lesenswert?

Dann kannst du ja gleich Assembler benutzen.

von frank (Gast)


Lesenswert?

habe ich jahrelang getan aber die faulheit hat mich zu bascom gebracht
c habe ich auch schon probiert klammeraffen orgie nenne ich das.
ist einfacher mit hochsprache und besser portierbar auf fast alle avr 
typen
bei assembler wirste wahnsinnig,

von Power (Gast)


Lesenswert?

Stimmt schon, Klammeraffen gibt's ordentlich! ;-)
Assembler benutze ich auch nur noch auf den Speicherschwachen Teilen.
C (WINAVR) ist eben sauber durchschaubar und dokumentiert. Außerdem weiß 
hier im Forum 'ne Menge Leute Bescheid drüber!

von Simon K. (simon) Benutzerseite


Lesenswert?

frank wrote:
> habe ich jahrelang getan aber die faulheit hat mich zu bascom gebracht
> c habe ich auch schon probiert klammeraffen orgie nenne ich das.
> ist einfacher mit hochsprache und besser portierbar auf fast alle avr
> typen
> bei assembler wirste wahnsinnig,

Wer das über C sagt, kann kein C programmieren...

Wenn man sein Werkzeug (C-Compiler) benutzen und vor allem ausreizen 
kann, wird das Programm sowie das Programmieren schnneller sein als 
Black-Box-Bascom*


*Jaja, auch nur meine Meinung.. Bin aber sehr überzeugt davon. Und dies 
soll keine Anstiftung zum Programmiersprachen-Glaubenskrieg sein.

>C (WINAVR) ist eben sauber durchschaubar und dokumentiert. Außerdem weiß
>hier im Forum 'ne Menge Leute Bescheid drüber!
Dem stimme ich zu.

Achja, zum Thema: Ich würde das ganze per Timer machen. Nicht per 
Zählschleife. Eine Timer-Zeitbasis ist stabiler, wenn die Ausgabe auch 
noch parallel ablaufen soll. Die Ausgabe auf die Anzeigen (zB per 
Multiplexing, oder Schieberegister) kann dann als Hauptaufgabe 
passieren. Die Zeitbasis und das Zählen der Zeit kann im Timer-Interrupt 
geschehen.

von Michael U. (Gast)


Lesenswert?

Hallo,

Timer mit 1ms-IRQ. Uhr zählen und nächste Stelle im Multiplex ausgeben.
Die Displaydaten liegen als7-Segmentmuster in 4 Ram-Adressen oder 
Registern. Dazu noch ein Register/Ram-Adresse für die aktuelle Stelle 
und ein Register/Ram-Adresse für den Dezimalpunkt.

Sind in der IRQ-Routine nur wenige ASM-Befehle, um die nächste Stelle 
rauszubefördern.

Alle Stellentreiber aus
Displayram-Adresse Z laden
Segmentwert aus (Z+) holen
Segmentdaten rausschreiben
Test, ob Dezimalpunkt mit für aktuelle Stelle an ist (ist auch als 
Bitmuster gespeichert)
Wenn ja -> Bit im Segment IO setzen

Digitbit ausgeben (ist bereits passendes Bit gespeichert)

Digit nach links schieben (nächste Stelle)
Digit mit letzter Stelle nach letzter Stelle vergleichen
wenn ja -> Erstes Digitbit laden, Z mit erster Dispkayadresse laden
Z speichern

Ende IRQ

In jedem 10. IRQ-Aufruf werden bei mir noch die Tasten bearbeitet und 
entprellt.

Gruß aus Berlin
Michael

von Sebastian J (Gast)


Lesenswert?

Hey Leute

Ich hab noch nicht so viel Erfahrung mit basic und brauche Hilfe von 
paar die schon was wissen.

Also
Hab eine Stoppuhr programmiert, die auch läuft. Jedoch weiß ich nicht 
wie ich das machen soll, dass sie im Sekundentaktläuft.

von Andreas K. (derandi)


Lesenswert?

Ja was macht die Stoppuhr denn dann? Aufstehen und weglaufen?

von Hannes L. (hannes)


Lesenswert?

> Ja was macht die Stoppuhr denn dann? Aufstehen und weglaufen?

Aber vermutlich nur bis zum nächsten Stoppschild?

> dass sie im Sekundentaktläuft.

Im Sekundentakt? - Warum nicht im Zentisekundentakt oder 
Millisekundentakt? Eine Sekunde ist für einen Mega8 eine halbe Ewigkeit.

Hier ein paar Stichworte: Quarz, Timer-Interrupt

...

von Martin V. (oldmax)


Lesenswert?

Hi
Lies dir doch einfach mal andere Beiträge über Stopuhren durch. Ist 
scheinbar ein Allerweltsthema. Zu den Programmiersprachen:
Eigentlich ist es egal, welche Sprache benutzt wird. Auch Assembler läßt 
sich strukturieren und muß einen nicht Wahnsinnig machen. Im Gegenteil, 
es zwingt, eine Struktur einzuhalten. Bei allen Programmiersprachen ist 
ein logisches Denken Voraussetzung. Deshalb haben es Frauen schwerer, 
einfach  nur Ja oder Nein zu sagen. Aber es gibt auch männliche 
Quasselstrippen....
Ich persönlich favorisiere auch Assembler. Und eine Stoppuhr ist ein 
guter Einstieg. Dazu sind hier in den Tutorials auch gute Erklärungen 
der Möglichkeiten.
Gruß oldmax

von Tobi W. (todward)


Lesenswert?

Wenn du das unbedingt in bascom machen willst kannst du dichja hier mal 
einlesen:
-> http://www.rn-wissen.de/index.php/Bascom_und_Timer
Hier geht es um den Timer
-> http://www.rn-wissen.de/index.php/Bascom_Interrupts
Hier geht es allgemein um Interrupts
-> http://www.rn-wissen.de/index.php/Bascom_Tabellen
Hier geht es um Tabellen bzw. mehrdimensionale Strings

daraus müsste sich eine gute Stoppuhr zusammen bauen lassen

gruß
Tobi

von Hannes L. (hannes)


Lesenswert?

Dazu braucht man kein RN, es genügt, sich die mitgelieferten Beispiele 
anzusehen.

...

von Peter D. (peda)


Lesenswert?

Hannes Lux schrieb:
> Dazu braucht man kein RN, es genügt, sich die mitgelieferten Beispiele
> anzusehen.

Und ich dachte immer, für nen richtigen Bascomer ist es strengstens 
verboten, in die Hilfe zu schauen, oder ins Manual oder in die Beispiele 
:-)


Peter

von Tobi W. (todward)


Lesenswert?

Peter Dannegger schrieb:
> Und ich dachte immer, für nen richtigen Bascomer ist es strengstens
> verboten, in die Hilfe zu schauen, oder ins Manual oder in die Beispiele

Nein wieso?
das sind mal wieder so die typischen klisches....

Außer dem ist das da besser erklärt als in der mitgelieferten Hilfe von 
Bascom-Avr

gruß
Tobi

von Hannes L. (hannes)


Lesenswert?

> Und ich dachte immer, für nen richtigen Bascomer ist es strengstens
> verboten, in die Hilfe zu schauen, oder ins Manual oder in die Beispiele
> :-)

Da ist was dran, trotzdem sollte man das nicht verallgemeinern. Denn es 
gibt verschiedene Motive, Bascomer zu werden/sein.

Der Eine benutzt es konsequent, weil er mal (im Zustand geistiger 
Umnachtung) viel Geld dafür bezahlt hat.

Andere benutzen es, weil sie denken, Basic (von anderen Systemen her) zu 
beherrschen.

Die Gruppe, die Du meinst, hat irgendwo mal gehört, dass es mittels 
Bascom kinderleicht sei, ohne jedes Fachwissen AVRs zu programmieren. 
Sie schaun weder ins Datenblatt des Controllers, noch in die Doku ihrer 
Software, denn es macht weniger Mühe, einfach zu fragen und mundgerechte 
Antworten zu erwarten. Man muss/will es ja nichtmal verstehen, 
hauptsache es funktioniert.

...

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.