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
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
@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
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.