Forum: Mikrocontroller und Digitale Elektronik PIC12F683 Timer program


von Racer78 (Gast)


Lesenswert?

Hallo zusammen,

habe ein kleines Problem. Will gerne eine "astabile Kippschaltung" die 
in der Frequenz einstellbar ist mit einem PIC12F683 realisieren habe 
jedoch vom programmieren von PIC keine Ahnung.
Die Funktion soll folgendes beinhalten:
Durch Tastendruck soll am Ausgang des PIC's ein Takt mit bestimmter 
Frequenz ausgeben werden, der dann die Basis am Transistor ansteuert.
Des Weiteren soll die Frequenz von außen einstellbar sein (durch Pulsen 
der Diode soll das hochtakten in der Frequenz symbolisiert werden).

Hat vielleicht jemand ein ähnliches Programm. Habe es im mom. mit einem 
Timer 555 realisiert, würde jedoch gerne den PIc anwenden.

Im Voraus schon mal Danke.

MfG

von stephan_ (Gast)


Lesenswert?

Mehrfachposting ...

von Fred R. (seek51)


Lesenswert?

Ist das so schwer?
Hier mal was in Basic. Geht von ?0?Hz bis 500Hz


dim Zähler as integer
dim Schleife as integer
Main:

if portb.0 = 1 then         'Taste gedrückt.
   Zähler = Zähler +1       'Zählerwert erhöhen
end if

if ((portb.1 = 1) and (Zähler > 0))then         'Taste gedrückt.
   Zähler = Zähler -1       'Zählerwert erhöhen
end if

Portb.3 = 1   'Ausgang aug High setzen

Schleife = Zähler
Do
    Delay_MS(1)
    dec Schleife
Loop until Schleife = 0

Portb = 0   'Ausgang aug LOW setzen

Schleife = Zähler
Do
    Delay_MS(1)
    dec Schleife
Loop until Schleife = 0

goto Main

von Virus 7. (virus744)


Lesenswert?

Hey Racer,

nenn mir doch mal deine Tel-Nr oder deine Emailadresse.....
...dann kann dir sicherlich geholfen werder.

Gruß

von Racer78 (Gast)


Lesenswert?

Das ging ja schnell.

Hallo Leute wuste nicht, daß es auch in C geht. Habe etwas C++ 
kenntnisse.
Muss der PIC auch noch initialisiert werden?

Danke für die schnelle Antwort.
Was brauche ich alles, um den Pic zu Flashen?

Mail: PRosalka@aol.com

MfG

von Racer78 (Gast)


Lesenswert?

Es soll jedoch die Frequenz nicht erhöhen sondern bei einer Frequenz wie 
eben eine "astabile Kippstufe" Takten.
Es soll nur von ausßen steuerbar sein.
Z.B. Schaltung läuft mit 30Hz durch Impulse von ausßen soll es möglich 
sein diese in xxHz Schritten zu erhöhen.

von Fred R. (seek51)


Lesenswert?

Das ist Basic und kein C !!!
Logischerweise muss die Konfig für die Pins, die Interrupts, der 
Watchdogtimer,... noch dazugebastelt werden.
Stell mal die Schaltung ein, und ein erwünschtes Timingdiagram. Dann 
können wir die Arbeit (für die du vielleicht sogar bezahlt wirds) für 
dich erledigen.
astabile Kippstufe heisst folgendes:
Ein
1 Sekunde pause
Aus
1 Sekunde pause
Ein
1 Sekunde pause
Aus
1 Sekunde pause
Ein
1 Sekunde pause
Aus
1 Sekunde pause
Ein
1 Sekunde pause
Aus
1 Sekunde pause
usw.

Wie du siehst ist die Frequenz (1/ 2 * 1) in diesem Beispiel 0,5Hz.

Gibt es auch wirklich Unterlagen dazu:
http://de.wikipedia.org/wiki/Multivibrator

von Racer78 (Gast)


Lesenswert?

Nein bezahlt werde ich für nicht. Ist für eine private Anwendung. Will 
bei einem PS3-Controller eine Taste als Takt an den µC weitergeben.

;-)

von Karl H. (kbuchegg)


Lesenswert?

Würdest du bei einer privaten Blinddarmoperation ebenso vorgehen?


OK.
Dein Problem ist nicht so schwer zu realisieren, ganz im Gegenteil. Aber 
ein wenig Eigeninitiative musst du schon selbst aufbringen.
Sich hinzustellen und zu sagen: "Ich will das und das bauen, bitte macht 
das für mich" ist für viele hier mitlerweile zu wenig. Zumal es Menschen 
gibt, die viel Zeit investiert haben, um so etwas zu lernen und jetzt 
damit ihre Brötchen verdienen.

Zumindest die absoluten Grundlagen kannst du dir auch leicht selber 
ergoogeln. Noch nie in der Geschichte der Menschheit war es so einfach 
an Informationen zu kommen.

von Racer78 (Gast)


Lesenswert?

Ist ja nicht so, dass ich es nicht versucht habe. Kenn mich nur mit HW 
aus, habe das Problem auch mit dem 555 Timer gelöst, jedoch ist die 
Lösung mit dem PIC viel eleganter und dazu noch platzsparender.
Werde mir jetzt erstmal ein Adapter bauen, um den PIC über RS232 Flashen 
zu können.
SW ist ein Thema für sich einigen liegt es anderen nicht. Habe oft 
versucht mich da einzuarbeiten aber....

von Fred R. (seek51)


Lesenswert?

Sehe ich das richtig. Wenn einmal ein Eingang kommt, dann soll X mal der 
Ausgang getaktet werden?

dim Zähler as integer

Main:
if portb.0 = 1 then         'Taste gedrückt.
   for Zähler = 0 to 30     'Ausgang 30 mal togglen
       Portb.3 = 1
       delay_ms(15)
       Portb.3 = 0
       delay_ms(15)
   next Zähler
   do                       'Warten bis Taste wieder losgelassen
       NOP
   loop until portb.0 = 0
end if
goto Main                   'Wieder von vorne

von Karl H. (kbuchegg)


Lesenswert?

Fred Ram schrieb:
> Sehe ich das richtig. Wenn einmal ein Eingang kommt, dann soll X mal der
> Ausgang getaktet werden?

Ich hab das eigentlich anders verstanden

Er möchte im Prinzip einen Frequenzgenerator, dessen Frequenz er mit 2 
Tasten rauf/runter drehen kann.

IM Prinzip

 Endlosschleife

     PortPin = 1

     Warte( x )

     PortPin = 0;

     Warte( x )

Ende Endlosschleife

und mittels Tasten wird der Wert von x verändert.

Ohne Tasten ist das mehr oder weniger das 3te oder 4te Übungsbeispiel, 
dass sich jeder Anfänger selber stellt. Gleich nach: Ich will eine LED 
einschalten; Ich will eine LED ausschalten; Und jetzt soll es blinken 
sein.

Die Einstellung der Blinkfrequenz über Taster ist dann die Draufgabe im 
Blinkprogramm, gleich nachdem man den Unterschied zwischen
Aktion ausführen, solange eine Taste gedrückt ist          und
Aktion ausführen, wenn eine Taste gedrückt wird
verinnerlicht hat.

Aber summa summarum besteht das Programm nur aus Dingen, die in den 
ersten paar selbstgewählten Übungsbeispielen sowieso vorkommen und die 
ein interessierter Anfänger aus Spass an der Freude sowieso "just for 
Fun" ausprobiert.

von Fred R. (seek51)


Lesenswert?

Also wie ich ganz oben geschriebenn habe. Wer lesen kann ist im Vorteil 
;-)

von Racer78 (Gast)


Lesenswert?

Nein kein Frequenzgenerator. Wirklich ein reines FlipFlop. Durch eine 
Taste aktiviert, wird am Ausgang zwischen Signal ein Signal aus 
geschaltet mit einer definierter Frequenz. Mit der zweiten Taste soll 
man den PIC auf eine andere Frequenz einstellen können.

von Racer78 (Gast)


Lesenswert?

Werde mir mal einiege Besispiel in meinem C++ Buch anschauen ist schon 
länger her als ich es gelesen habe.

von Karl H. (kbuchegg)


Lesenswert?

Racer78 schrieb:
> Nein kein Frequenzgenerator. Wirklich ein reines FlipFlop. Durch eine
> Taste aktiviert, wird am Ausgang zwischen Signal ein Signal aus
> geschaltet mit einer definierter Frequenz.

Ah, ok.
Das ist für mich im Ausgangsposting noch nicht so wirklich 
rübergekommen.

Dann ist es eben nicht das 4te Selbstgewählte Übungsbeispiel sondern das 
6te oder 7te.

Dazwischen kommt noch: Mit einer Taste eine LED ein/ausschalten.

Ob das dann benutzt wird um eine LED ein/aus zu schalten, oder um den 
Programmteil "Port ein/warten/Port aus/warten" zu überspringen wenn eine 
Variable 1 ist und diese variable von der Taste von 1 auf 0 und 
umgekehrt geschaltet wird, ist eine ziemlich naheliegende Erweiterung 
und sollte zu keinerlei Problemen führen.

von picpic (Gast)


Lesenswert?

Mit PICs bist Du hier zwar nicht ganz falsch, aber eine gute Einführung 
in die PIC-Programmierung findest Du eher unter 
http://www.sprut.de/electronic/

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.