mikrocontroller.net

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


Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: frank (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
da nimmste ein schieberegister 74595

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich die denn Zeit-Multiplexen?
Brauch ich dazu weitere Bauteile?

Autor: Ad Da (picant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<ironie>

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

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

</ironie>

Autor: Sebastian F. (tacx)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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! ;-)

Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Power  nein das habe ich getan weil ich es dort kopiert habe.

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann.. hat meine Ansicht zu Bascom bestätigt!

Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welche ansicht ??

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: frank (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann kannst du ja gleich Assembler benutzen.

Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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,

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian J (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas K. (derandi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja was macht die Stoppuhr denn dann? Aufstehen und weglaufen?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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

...

Autor: Martin Vogel (oldmax)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi W. (todward)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

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

...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi W. (todward)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.