www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zwei Prozeduren im PIC gleichzeitig -Anfängerfrage ;-)


Autor: Björn Gerber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo erstmal!

Habe erst vor kurzem mit dem PIC Programmieren angefangen und habe
jetzt mein erstes "großes" Projekt.

Dieses möchte ich mit dem PIC16F84A lösen, da ich fast alle Ausgänge
benutzen muss.

Ich muß für einen Kumpel eine Schaltung entwerfen, die LED´s aufblitzen
lässt und andere in der gleichen Zeit Dimmt (Pwm).

Jetzt hänge ich an dem Programm Aufbau... Wie kann ich Programmteile
schreiben, die selbstständig laufen und der Pic in der Zeit was anderes
macht (z.B. die LED´s blitzen lässt).

Hat das was mit Interrupt Programmieren zu tun?

Finde irgendwie keine lösung und hoffe mir kann jemand darauf einen Tip
geben!

Schönes Wochenende an alle!

Björn

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Björn

zunächst mal sollte das Projekt mit de, 16F84 Dein letztes sein mit dem
alten Ding. Besser ist der Nachfolger, der 16F627.
Sodann ist das kein Problem was Du machen willst, da die PWM, wenn sie
mal programmiert ist, selber läuft. Der Aufbau des Programms könnte
also so aussehen:

Main:
   call InitPorts ; port Richtungen festlegen
   call SetupPWM  ; PWM programmieren
loop:
   call LedOn
   Delay
   Call LedOff
   Delay
   goto Loop

InitPorts:
 ...
   return

...

END
Wenn Du mit MPLAB arbeitest, solltes Du die Vorlagen (Templates)
verwenden


Gruß
Gerhard

Autor: BioSniper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das für ein Floatarium ?

mfg

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gerhard:

Wenn Du hättest könntest Du hilft ihm bestimmt nicht, denn er
hat nicht und kann deßhalb auch nicht ;-)

@Björn

Unabhängig davon das Gerhard mit dem 16F627 recht hat (der ist
moderner, und kann PWM IMHO aber nur für einen Kanal) hast Du
mit Deinem Interrupt recht.
Gehe ich recht der Annahme das Du mehrere LEDs dimmen willst? Dann
benötigst Du ja sogar mehrere PWM Ausgänge. Grundsätzlich ist das so
das Du den Timer0 z.B. 1000 Interrupts pro Sekunde erzeugen lässt. In
der Interrupt Routine zählst Du dann wie viele Interrupts die LED schon
an war und wie lange sie ausgeschaltet sein muß. Das kannst Du
dann auch gleich für mehrere LEDs machen. Diese Interrupts laufen dann
quasi "nebenher", so das Du in der Hauptschleife andere Dinge machen

kannst. Nur daran denken das die Interruptbehandlung der Hauptschleife
Rechenzwit abzweigt, das sollte aber bei ein paar blinkenden LEDs kein
Problem sein.

Gruß
  Martin

Autor: B. Gerber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@all>  Danke erstmal für eure Antworten! Konnte mich vorher noch nicht
melden, da ich gestern auf einer Hochzeit war!

@Gerhard Gunzelmann>  Werde mir dann, wenn ich die gekauften zwei IC´s
verbaut habe die neue Version zu legen! Wenn ich diesen dann habe,
werde ich bestimmt deinen Programm aufbau gut gebrauchen können. Danke
für die Tip´s!

@ BioSniper> Nein, es ist für eine LightShow eines Modell Auto´s!

@Martin> Ja, ich möchte mehrere LED´s dimmen können! Werde also den
Timer0 so benutzen, wie Du es beschrieben hast. Mit der
Interrupt-Routine... Habe mir das mal durchgelesen und fand nur was
über Eingänge abfragen (H/L) und dann ein Unterprogramm aufrufen lassen
und wieder zurück springen! Kannst du mir ein Beispiel geben, wie ich
das schreiben muß, das die Interrupt´s dann "nebenher" laufen?
Wäre echt nett von Dir.

Danke an alle
Bis denn
Björn

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.