Forum: Mikrocontroller und Digitale Elektronik PIC_Uhr_mit_Stoppuhr wie anfangen?


von Cedric B. (ppiicc)


Lesenswert?

Hallo zusammen
Ich brauche mal eure hilfe oder ein paar Tipps.
Ich muss von der Schule aus ein kleines Projekt erstellen. Ich soll eine 
Uhr + eine Stoppuhr machen. Die Stoppuhr sollte Stunden,Minuten und 
Sekunden anzeigen. Als Display nehme ich einen 7-Segment LED Display. 
Ich muss die arbeit mit einem PIC Microcontroller machen. Die stoppuhr 
muss die üblichen funktionen haben, Start, Stop, Reset. Mein Wunsche 
wäre beides auf einen Display zu bringen wo man mit einem Taster von der 
Uhr (standart) zu der Stoppuhr umschalten kann.

Mein anliegen:
Ich arbeite das erste mal mit nehm PIC. Jeder Anfang ist schwer :-)
Für welchen PIC soll ich mich entscheiden?
Was ist noch wichtig wo ich mich darauf achten muss?
Soll ich einen für die Uhr und einen für die Stoppuhr benützen das es 
einfacher ist?
Geht es das mann beide auf einen Display bringen kann?


Danke vielmals für jeden Tipp!!!! Gruss ppiicc

von Udo S. (urschmitt)


Lesenswert?

Ein paar Fragen:
Was ist ein "kleines Projekt"? 1 Woche 1 Monat, 4 Stunden?
Was hast Du von der Schule zur Verfügung gestellt bekommen? Development 
system, Bauteile?
Was für eine Schule und Ausbildung ist das? Was ist dein elektronischer 
Background?

Du brauchst nur einen Timer, das hat wohl jeder PIC, einen Uhrzeitquarz 
(2^16 Hz) un die Ansteuerung des Displays sowie ein paar Taster.
Muß es ein 7Segment Display sein, ein HD44780 kompatibles LC-Display ist 
wahrscheinlich einfacher und weniger aufwendig anzusteuern.
Ich kenne die PICs jetzt nicht besonders gut, aber da werden dir andere 
weiterhelfen können...

von Cedric B. (ppiicc)


Lesenswert?

Danke für die rasche Antwort.
Zeit habe ich noch genug, über ein Monat aber mit Dokumentation etc.. 
Das Material bekomme ich alles zur verfügung gestellt, weil sie später 
in den gebrauch kommt. Eine Höhere Fachschule, wir nehmen die 
Mikrocontroller erst im nächsten Semester durch. :-( In der Schuel sind 
wir gerade in Elektronik bei denn IC`s und in Digitaltechnik bei denn 
Codes. Es sollte schon ein LED Display sein weil er in der Dunkelheit 
benutzt wird und nicht zu viel Helligkeit abgeben darf (Bühne). Habe 
auch schon daran gedacht in am Schluss mit einem Photoelement oder was 
auch immer mit der Helligkeit zu steuern. Aber das wäre dann nur noch 
zusatz...

Ich habe mir überlegt ob îch denn 16F628 Pic nehmen soll?

von heinzhorst (Gast)


Lesenswert?

Wie sieht die Hardware aus? Gibt's die schon oder musst du die auch 
vorher entwickeln?

Zur Software: Fang erst mal mit der Ansteuerung der 7-Segment 
Multiplexanzeige an. Dann siehst du schon mal deine Ausgaben. Wenn das 
rund läuft, dann machst du dich an das Entprellen der Taster. Danach 
kommt erst die eigentliche Stoppuhr-Funktionalität.

Auf welchem PIC programmierst du? C oder Assembler?

von Cedric B. (ppiicc)


Lesenswert?

Danke für denn Tipp
Also sozusagen von hinten Beginnen.
Ja die Hardware muss ich noch entwickeln.
Für welchen MC soll ich mich entscheiden?
In der Schule hatten wir Visual Basic, ich denke das ich es mit dem 
Assembler probiere... Was ich so gehört habe soll der nicht allzu schwer 
sein.

von newbie (Gast)


Lesenswert?

> Es sollte schon ein LED Display sein weil er in der Dunkelheit
> benutzt wird und nicht zu viel Helligkeit abgeben darf (Bühne).

LCD ist definitiv einfacher, gibt es auch mit Hintergrund-Beleuchtung.

Zur Ansteuerung von 7-Segment schaust Du am besten bei 
http://sprut.de/electronic/pic/programm/index.htm nach, da gibt es viele 
Beispiele.

von Düsendieb (Gast)


Lesenswert?

Cedric B. schrieb:
> Es sollte schon ein LED Display sein weil er in der Dunkelheit
> benutzt wird und nicht zu viel Helligkeit abgeben darf (Bühne).

Dann soll es wohl ein LCD Display werden? Denn LED leuchten!

Ist der PIC gesetzt oder geht auch ein Atmel Controller? Wenn Ja, dann 
nimm einen Mega88 und ein LCD162 von Reichelt.

Siehe: Absolute Beginner-AVR Steckbrettprojekte

von Oliver J. (skriptkiddy)


Lesenswert?

Cedric B. schrieb:
> Was ich so gehört habe soll der nicht allzu schwer
> sein.

Wenn man noch nichts in Assembler programmiert hat, dann ist es alles 
andere als einfach.

Gruß Skriptkiddy

von heinzhorst (Gast)


Lesenswert?

Düsendieb schrieb:
> Ist der PIC gesetzt oder geht auch ein Atmel Controller? Wenn Ja, dann
> nimm einen Mega88 und ein LCD162 von Reichelt.

Jetzt geht das wieder los...

Wenn du Anfänger bist, dann tu dir einen Gefallen und nimm gleich einen 
PIC18 und programmiere in C. Die PIC16 sind für Assembler ausgelegt und 
von ihrer Architektur her veraltet. (Meine persönliche Meinung!)  Und 
ein HD44780-kompatibles LCD ist einfacher anzusteuern als 7-Segment. 
Außerdem kannst du dabei prima die Hintergrundbeleuchtung über PWM 
dimmen.

von Eifelstern (Gast)


Lesenswert?

Besorg dir am einfachsten ein Pickit2 mit PIC16F690 und ein Steckbrett.
Am anfang ist es wichtig das die entwicklungsumgebung (IDE und 
programmer) out-of-the-box laufen. Ärger dich nicht lange rum und nim 
ein fertiges starter kit. beim Pickit sind auch eine schöne beispiele 
dabei, dia alles abdecken was du zum bau einer uhr brauchst.

http://www.reichelt.de/?ACTION=3;GROUP=A38;GROUPID=2969;ARTICLE=87179;SID=32VZw0BawQASAAAEMVHeke073a68eb87b76a617f9735fedcb03f9

von Karl H. (kbuchegg)


Lesenswert?

Cedric B. schrieb:

> Soll ich einen für die Uhr und einen für die Stoppuhr benützen das es
> einfacher ist?

Bloss nicht!

2 Prozessoren im Gleichtakt zu halten uns sie so kommunizieren zu 
lassen, dass sie sich nicht gegenseitig ins Gehege kommen, ist immer 
aufwändiger als 1 Prozessor.

Dein einzelner Prozessor ist mit den beiden Uhren hoffnungslos 
unterlastet! Der hat noch massig Reserven.

von Vuvuzelatus (Gast)


Lesenswert?

> Soll ich einen für die Uhr und einen für die Stoppuhr benützen das es
> einfacher ist?

Nein.

1 Controller. 1 Programm. 1 Mainloop. 0 Warteschleifen. 1 
Hardware-Timer. Viele Software-Timer. Viele Zustandsmaschinen.

von Master S. (snowman)


Lesenswert?

Eifelstern schrieb:
> Besorg dir am einfachsten ein Pickit2 mit PIC16F690 und ein Steckbrett

nur ein sadist schreibt sowas. vergiss die PIC16! die sind mühsam und 
für den müll. früher gab's nichts schlaueres, aber heute bewähren sich 
die PIC18 um die ersten schritte in die mikrokontrollerwelt zu machen. 
kein mensch müht sich noch mit den 16ern ab, ausser es geht nicht 
anders.

entscheide dich ob du lieber mit 5V oder 3.3V arbeiten willst, dann lies 
dir einen beliebigen PIC18 aus der entsprechenden kategorie aus (das was 
du machen willst, kannst du mit jedem PIC18 machen).

von Bub (Gast)


Lesenswert?

Falls Du dich für C entscheiden solltest (würde ich dir empfehlen), dann 
kannst Du ja mal hier rein schauen:
http://pic-projekte.de/pic_c.html

von Anja (Gast)


Lesenswert?

Cedric B. schrieb:
> Für welchen PIC soll ich mich entscheiden?

Gegenfrage: wie viele I/O-Pins brauchst Du denn für das was Du vorhast?
6-Stellige Anzeige braucht (im Multiplex) mindestens 14 Pins
Dazu noch mindestens 3-4 Taster, eventuell noch welche um die Uhr 
komfortabel zu stellen oder um einen DCF77-Empfänger anzuschließen bzw. 
1-2 für die Dimm-Funktion.
-> Du brauchst mindestens einen 28-Pinner wenn man noch ca 5-6 Pins für 
Quarz, Versorgung und Resetleitung in Betracht zieht.
-> PIC16F690 (20 pin) und PIC16F628 (18 pin) scheiden schon mal aus.

Falls ein 28-pinner ausreicht würde ich heutzutage einen PIC18F2520 
verwenden, ansonsten einen PIC18F4520 (40-pin).
Der 18F2520 ist laut Microchip der Nachfolger des 16F876
Programmieren läßt er sich sowohl in Assembler als auch in C. (C18 von 
Microchip).
Zum flashen und debuggen empfehle ich ein Pickit 3.

Gruß Anja

von Peter D. (peda)


Lesenswert?

Cedric B. schrieb:
> ich denke das ich es mit dem
> Assembler probiere... Was ich so gehört habe soll der nicht allzu schwer
> sein.

Bloß nicht!

Der PIC-Assembler ist mit Abstand der am schwersten zu lernende 
Assembler unter den 8-Bittern.

Hier mal ein Beispiel:
1
    movf    NUM2L,W     ;Add low bytes
2
    addwf   NUM1L,F
3
4
    movf    NUM2M,W     ;Add mid bytes
5
    skpnc               ;No carry_in, so just add
6
    incfsz  NUM2M,W     ;Add carry_in to NUM2
7
    addwf   NUM1M,F     ;Add and propagate carry_out
8
    movf    NUM2H,W     ;Add high bytes
9
    skpnc               ;No carry_in, so just add
10
    incfsz  NUM2H,W     ;Add carry_in to NUM2
11
    addwf   NUM1H,F     ;Add and propagate carry_out

Wenn Du verstehst, wie und warum diese Routine funktioniert, dann ziehe 
ich den Hut vor Dir.

Zum Vergleich, die selbe Funktion (24Bit-Addition) auf nem AVR:
1
    add     NUM1L,NUM2L
2
    adc     NUM1M,NUM2M
3
    adc     NUM1H,NUM2H


Peter

von holger (Gast)


Lesenswert?

>Zeit habe ich noch genug, über ein Monat aber mit Dokumentation etc..

Viel zu wenig für einen Anfänger.
Ich weiss das klingt überheblich.

LED Anzeige mit Multiplex ist nicht Anfänger tauglich.
LCD auch nicht unbedingt. Aber eher als LED.

Versuch erst mal eine LED
zum leuchten zu animieren. Dann blinken lassen.

Der nächste Versuch: Taster einlesen. Dann feststellen
das die prellen. Usw, usw.

Dann zur Uhr/Stoppuhr. Ohne Timer und Interrupts wird das nichts.
Also Timer und Interrupts benutzen lernen.

Es gibt viel mehr zu tun und zu lernen als du denkst;)

von holger (Gast)


Lesenswert?

Nachtrag: Anfänger verbringen erstmal 99% der Zeit damit Fehler
zu machen und diese im Programm zu suchen. Das Verhältnis Fehlersuche zu
funktionierendem Code ändert sich erst nach einiger Zeit wenn man genug
Erfahrung gesammelt hat.

von Peter D. (peda)


Lesenswert?

Zu Anfang muß man erstmal jedes Projekt planen, sonst wird das nichts.
Hier mal ein Link, wie sowas aussieht:

http://www.rn-wissen.de/index.php/PIC_Assembler#Programm

Am besten man schaltet den PC aus, nimmt Papier und Stift und schreibt 
in Worten die einzelnen Aufgaben und Abläufe auf.
Je detaillierter, umso besser.
Danach die Worte in Code umzusetzen geht dann umso leichter.

Ehe es nichtmal auf dem Papier geht, ist es völlig sinnlos mit Code 
schreiben anzufangen.


Peter

von heinzhorst (Gast)


Lesenswert?

Der 18f2520 ist schon eine gute Wahl dafür. Würde dir statt dem Pickit3 
aber eher zum Vorgängermodell Pickit2 raten. Besser durchdacht, kann 
mehr und kostet weniger. Unterstützt zwar nicht die neuen PIC32 mit 
Ethernet, aber ich denke, damit wird er so schnell nicht arbeiten.

von APPLEPIE (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Bloß nicht!
>
>
>
> Der PIC-Assembler ist mit Abstand der am schwersten zu lernende
>
> Assembler unter den 8-Bittern.
>
>
>
> Hier mal ein Beispiel:    movf    NUM2L,W     ;Add low bytes
>
>     addwf   NUM1L,F
>
>
>
>     movf    NUM2M,W     ;Add mid bytes
>
>     skpnc               ;No carry_in, so just add

Paralax Syntax, schlimmer gehts nimmer!
Und dann auch nuch eine 24Bit Adition, tolles Beispiel, völlig
Anfängergeignet.... magst du die PIC's nicht?


Nimm den MPASM oder C.

APPLEPIE

von Anja (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Der PIC-Assembler ist mit Abstand der am schwersten zu lernende
> Assembler unter den 8-Bittern.

ist aber unfair einen PIC16 code zu bringen nachdem wir schon bei PIC18 
waren:
Bei PIC18 es ADDWFC-Befehle wodurch der Code deutlich übersichtlicher 
wird.

Gruß Anja

von Cedric B. (ppiicc)


Lesenswert?

Danke vielmals für eure Informationen!

Ja da habe ich mir etwas vorgenommen. :-)
Lernen wollte ich es so oder so und warum nicht jetzt. Lieber jetzt als 
kurz vor dem Abschluss...

Am Anfang wollte ich es schon mit IC`s bauen aber das gäbe ein richtiges 
IC Grab. Darum habe ich mich für denn PIC entschieden.

Also werde ich den PIC 18 nehmen, mit C programmieren und einen LCD 
Display benützen.
Aber als erstes mal alles detailiert Aufschreiben.

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.