Hallo vorab,
ich habe hier im Forum in der letzten Zeit wo wir in der Schule
programmieren bisschen recherchiert gehabt und hoffe, dass mir hier
geholfen werden kann :/ also ich habe den Auftrag bekommen eine 7Segment
Uhr zu programmieren im Muster " HH.MM.SS.
"(H=Stunde,M=Minute,S=Sekunde). Wie es scheint bin ich einfach zu doof,
aber ich kapiere die Interuppt-Programmierung einfach nicht habe mir
schon dutzende Programme angeschaut aber ich blicke nicht durch :/
Zum Zählen hatte ich folgendes vorgesehen :
1
#define F_CPU 20000000
2
3
#include<avr\io.h>
4
#include<util\delay.h>
5
#include<avr\interrupt.h>
6
7
8
uint8_tzahlen[10]={0b11000000,
9
0b11111001,
10
0b10100100,
11
0b10110000,
12
0b10011001,
13
0b10010010,
14
0b10000010,
15
0b11111000,
16
0b10000000,
17
0b10010000};
18
19
uint8_tcounter_Sekunden=0;
20
uint8_tcounter_Minuten=0;
21
uint8_tcounter_Stunden=0;
22
23
intmain(void){
24
25
DDRA=0xff;
26
DDRB=0xff;
27
28
29
PORTB=zahlen[counter_Sekunden];
30
31
counter_Sekunden++;
32
_delay_ms(1000);
33
34
if(counter_Sekunden==10){
35
counter_Sekunden=0;
36
counter_Minuten++;
37
if(counter_Minuten==60){
38
counter_Minuten=0;
39
counter_Stunden++;
40
if(counter_Stunden==24){
41
counter_Stunden=0;
42
}
43
}
44
}
45
}
46
}
Hiermit zählt er mir nun am 1. Segment für die Sekunden HH.MM.SS
HH.MM.S0
HH.MM.S1
HH.MM.S2
HH.MM.S3
HH.MM.S4
HH.MM.S5
HH.MM.S6
HH.MM.S7
HH.MM.S8
HH.MM.S9
HH.MM.S0
...
die anderen sind ja durch das multiplexing ausgeblendet, nur habe ich
keine Ahnnung wie man einen ISR timer programmiert und ich habe auch
keine ahnung was der Unterschied zwischen ISR(TIMER1_COMPA_vect) oder
auch
ISR(TIMER2_OVF_vect) ist , bräuchte demnach nen Crashkurs und mein
Lehrer kann mir natürlich nicht helfen , da dies eine eigenständige
Arbeit sein soll und wir uns im Internet schlau machen und durchs
probieren herausfinden sollen wie es funktioniert und ich kann auch
niemand andenr aus der Klasse fragen, da sie erstens so wenig wie ich
verstehen von Interrupt-Programmierung und wir alle nen anderes Thema
haben.
Wir nutzen den Atmega644 , AtmelStudio6 und ich dachte mir ich nutze
PortA als Steuerung für die Auswahl welches Segment Spannung bekommt und
PortB dafür welches Teilsegment Spannung bekommt (a,b,c,d,...)
Falls noch Fragen bestehen werde ich versuchen so viel wie ihr benötigt
herauszufinden und euch mitzuteilen und beachtet bei den Antworten das
ich noch mega neu bin und macht mich nicht zu doll fertig :) ich
verstehe nähmlich recht wenig vom Interrupt, habe halt kapiert, dass der
Interrupt ISR meinen Zählvorgang beinhalten muss laut meines Lehrers
aber habe keine Ahnung welchen Zähler und was der Unterschied ist wie
oben gesagt und ich bin überfodert. :(
Mfg Davut Paylan
> nur habe ich keine Ahnnung wie man einen ISR timer programmiert
Dann wirds Zeit. Ohne Timer kommst du bei dieser Aufgabenstellung nicht
weiter.
>>> FAQ <<<
ganz unten, Abschnitt 11: Der Timer
Vergiss fürs erste deine Uhr und sieh zu, dass du mit dem Timer eine LED
im Sekundentakt zum blinken bringst. (Kann ja ruhig auch eine der LEDs
aus einer der 7-Seg Anzeige sein).
Aber ehe du diese Basis-Aufgabenstellung nicht unter Kontrolle hast, hat
es keinen Sinn an eine Uhr zu denken.
Tip: Du stellst einen Timer so ein, das er 1000 Interrupts/Sekunde
erzeugt. Damit hast du dann eine genaue Zeitbasis sowohl für das Zählen
der Sekunden als auch für das Multiplexen des Displays. Beispiele siehe
Codebase.
ich poste euch später nochmal eine beispielschaltung
und
@ Dennis das liegt daran das das Versuchsbord an dem ich das Programm
teste (bevor ich es in groß baue) nur 2 Segmente drauf hat und deshalb
die Minute 10Sekunden hat (ätte auch 3 sekunden wählen können) um zu
sehen ob mir 2 segmente angezeigt werden :)
@Karl Heinz danke werde ich mich morgen mal mit befassen heute noch zu
viel anderes um die Ohren :)
Tut mir verdammt Leid, dass ich solange inaktiv war, aber wir hatten
einfach zu viele Klausuren zuschreiben, dass ich E-technick bissl nach
hintenstellen musste :) also dieses Programm hat mir mein Lehrer gegeben
und sagte es funktioniert, aber es funktioniert nicht.... also ich muss
dazu sagen das ich den PortD auf PortB wechseln muss, da ich auf A und B
arbeite und evtl mach ich da einen fehler wäre nett wenn jemand das
abändern würde, sodass es auf A und B funktioniert , habe hier im
Programm schon rumprobiert und es sollte halt so funktionieren laut
meinem Lehrer, aber würde ungern ihn fragen, damit ich jetzt nicht noch
mehr Notenpunkte verliere, also wäre echt nett wenn jemand sich dafür
die zeit nehmen kann, schicke das programm auch nochmal als .txt mit :)
Route 66 schrieb:> Hallo!Dein Lehrer sollte gefeuert werden.
Danke für die Info , aber wie ist es denn richtig ? könntest du mir dann
etwas besseres machen ? bzw. etwas was ich verstehe ?
Bin ich froh, heutzutage nicht mehr zur Schule zu müssen. War der vorher
Biologielehrer und wurde auf Informatik "umgeschult"? So ein Programm
als Lehrbeispiel zu benutzen sollte strafbar sein...
Bulli schrieb:> Bin ich froh, heutzutage nicht mehr zur Schule zu müssen. War der
vorherBiologielehrer und wurde auf Informatik "umgeschult"? So ein Programmals
Lehrbeispiel zu benutzen sollte strafbar sein...
Ihr seid ja total lieb, dass ihr mich in der Meinung unterstützt, aber
das hilft mir mit dem Programm bei aller Liebe nicht weiter. Bräuchte
nen Crashkurs oder sowas ähnliches, wäre nett wie oben gesagt wenn mir
jemand ein funktionstüchtiges Programm zeigen könnte.
Davut Paylan schrieb:> Ihr seid ja total lieb, dass ihr mich in der Meinung unterstützt, aber> das hilft mir mit dem Programm bei aller Liebe nicht weiter. Bräuchte> nen Crashkurs oder sowas ähnliches, wäre nett wie oben gesagt wenn mir> jemand ein funktionstüchtiges Programm zeigen könnte.
Naja. Sooo schlimm ist das Programm dann auch wieder nicht. Das solltest
du eigentlich schon verstehen, wie das funktionieren soll. Und ja: So
wie das Programm ist, läuft die Uhr nicht sondern du hast erst mal nur
eine statische Anzeige (wenn die Portverdrahtung richtig ist). Zum
laufen bringen musst du dir Uhr schon selber. Aber es ist alles da (wenn
auch etwas ungewöhnlich), was dazu notwendig ist.
Wie kommt es eigentlich, dass du und Röwschen die gleiche IP-Adresse
habt? Auch dein Programm ganz oben und das von Röwschen gepostete ähneln
sich extrem stark.
Beitrag "Re: 7-Segment-Anzeiger mit Interrupt"
So etwas mögen wir hier nicht besonders, wenn du dir unter 2
verschiedenen Namen Dinge erschleichen möchtest. Das lässt deine Bitte
im anderen Thread nach einem Beispiel unter einem ganz anderen Licht
erscheinen. Du hast nämlich ein Beispiel. Du müsstest es nur in der
Port-Belegung an deine konkreten Verhältnisse anpassen - und das ist
eigentlich eine simple Übung, die jeder der seine Basisübungen "erste
Stunde, erste Übung" gemacht hat, eigentlich in 30 Sekunden hinkriegen
sollte. Wenn du das als Student nicht alleine hinkriegst, dann finde
zumindest ich, dass du dir den Abschluss in diesem Fach nicht verdient
hast.
Hallo!
@kbuchegg
> Und ja: So wie das Programm ist, läuft die Uhr nicht sondern du hast> erst mal nur eine statische Anzeige.
Da bleibt ihm der lustige Anblick nach Mitternacht erspart.
Route 66 schrieb:> Hallo!> @kbuchegg>> Und ja: So wie das Programm ist, läuft die Uhr nicht sondern du hast>> erst mal nur eine statische Anzeige.> Da bleibt ihm der lustige Anblick nach Mitternacht erspart.
Wenn ich so rekapituliere und auch den anderen Thread ins Kalkül ziehe,
komme ich immer mehr zum Schluss, dass sein Lehrer ihm absichtlich etwas
Halbfertiges gegeben hat, um zu sehen, ob er wenigstens die einfachen
Dinge hinkriegt. Den Aufsatz eines Timers, die ISR und das Multiplexen
hat er ihm ja abgenommen. OK, mit den Datentypen steht er ein wenig auf
Kriegsfuss, aber das seh ich ihm nach.
Mit diesem Beispiel und dem was wir ihm im anderen Thread gelehrt haben
(und noch einfacher kann nicht mal ich es ihm erklären), denke ich, das
es kein Problem sein sollte, da eine funktionierende tickende Uhr mit
einer gemultiplexten 7-Seg Anzeige zu programmieren.
Irgendwie traurig, woran es hier am Semesterende scheitert. Entweder hat
er das ganze Semester über wirklich nix getan oder aber er hat
tatsächlich das schlimmste Minus-Talent zum Programmieren, das ich je
gesehen habe. Wobei: Port austauschen ist Handwerk, das hat mit Talent
nix zu tun. Selbst ein zeichnerisch völlig unbegabter Maler kann ein
akzeptables Rechteck malen.
In letzterem Fall wird er sich in Zukunft extrem schwer tun. Ohne
Programmierung geht in der E-Technik nicht mehr viel.
nun ja nen auftrag hab ich nicht bekommen aber es liegen noch 5stk
atmega32_16 jahrelang ungenutzt im schrank.
ich werde keine anderen controller mehr kaufen.....
ich such nur die software für ne einfache per tasten zu stellende
sechsstellige quarzuhr ohne dcf aber mit wecker.
es sollen vorhandene siebensegmentanzeigen mit gem. anode verwendet
werden.
die software soll per ponnyprog und lpt isp programmer in den controller
gebrannt werden.
mfg
@dolf
Und warum schreibst Du das? Erwartest Du jetzt ein Angebot oder gar, daß
jemand ein fertiges Programm für Dich aus dem Hut zaubert?
Ich kann nur den Kopf schütteln. Wir geben hier im Forum gerne
Ratschläge, aber wir liefern keine kostenlose Software und wir
analysieren auch nicht kostenslos tausende Zeilen fremdem Code.
Geschenke bekommt man bei der Oma, nicht hier.
Stefan schrieb:> aber wir liefern keine kostenlose Software und wir> analysieren auch nicht kostenslos tausende Zeilen fremdem Code.
Falsch. Wir machen sowas NICHT, wenn der Frager keinerlei Einsicht
bzw. Verstand zeigt und nicht auf unsere Hinweise eingeht. Sonst
natürlich schon!
Nur der Vollständigkeit halber.
"dolf" ( Beitrag "Re: 7Segment-Uhr" ) scheint
wieder ein anderer Poster zu sein. Seine IP Adresse ist eine komplett
andere.
Christian F. schrieb:> Stefan schrieb:>> aber wir liefern keine kostenlose Software und wir>> analysieren auch nicht kostenslos tausende Zeilen fremdem Code.>> Falsch. Wir machen sowas NICHT, wenn der Frager keinerlei Einsicht> bzw. Verstand zeigt und nicht auf unsere Hinweise eingeht. Sonst> natürlich schon!
Und ich hab für mich noch eine Regel hinzugefügt:
Wenn zu erkennen ist, dass es sich um eine schulische bzw. universitäre
Arbeit handelt, zieh ich mich auch weiter zurück als normal. Einem
Bastler, der sich eine Uhr bauen will, aber nicht weiter kommt und eine
Denkblockade hat, wird immer geholfen. Aber wenn die Arbeit benotet wird
oder wenn es gar so ist, dass damit eine schulischer/akademischer
Abschluss verbunden ist, bin ich vorsichtig. Dann frag ich mich: Will
ich wirklich haben, dass mir im Berufsleben so jemand als Vorgesetzter
vorgesetzt wird, der zwar ein Zeugnis vorweisen kann, allerdings das was
im Zeugnis behauptet wird, nicht wirklich beherrscht.