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?
>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...
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).
Wie kann ich die denn Zeit-Multiplexen? Brauch ich dazu weitere Bauteile?
<ironie>
>Gibt es Alternativen, sodass ich mit einem Mikrocontroller auskomme?
Ja aber es muss mindestens 64 Bit und 8 GHz Takt haben
</ironie>
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
@ 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! ;-)
@Power nein das habe ich getan weil ich es dort kopiert habe.
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!
es gibt keine programmiersprache ohne kenntnis der hartware das ist bei assembler und c sogar noch schlimmer als bei bascom.
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.
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.
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,
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!
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.
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
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.
Ja was macht die Stoppuhr denn dann? Aufstehen und weglaufen?
> 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 ...
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
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
Dazu braucht man kein RN, es genügt, sich die mitgelieferten Beispiele anzusehen. ...
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
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.