PIC12F683 Timer program

Gast #1673926
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
#1673949
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
Gast #1673967
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
Gast #1673970
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.
#1674049
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
#1674076
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.
Gast #1674085
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....
#1674175
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
#1674184
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.
Gast #1674231
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.
#1674243
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren