Hallo zusammen. leider muss ich heute meinen ersten Beitrag eröffnen, bei den vorherigen Problemen welche ich hatte, hat mir dieses Forum sehr viel geholfen. Dieses mal bin ich leider nicht fündig geworden.. :( Ich möchte an meinem PIC18F4520 ein PWM-Signal generieren(PORT_B.3). Dieses PWM-Signal verwende ich, um eine IR-Senderdiode anzusteuern, welche das Signal an meinen Fernseher sendet. Ich möchte dieses "Projekt" realisieren, damit ich zuhause wieder eine Fernbedienung habe(habe diese leider vor eingen Monaten verloren und seither muss ich den Fernseher immer per Hand bedienen..). UND ja klar könnte ich mir einfach eine fixfertige Bedienung kaufen gehen, jedoch möchte ich dies gerne selber realisieren, damit ich auch einen gewissen Lerneffekt davontragen kann. Nun meine Frage: Wie kann ich ein PWM-Signal generieren? (Gibt es ein gutes Tutorial?) Was muss ich initialisieren? (Timer, PWM-Output, etc) Worauf muss ich besonders Acht geben? Vielen Dank für eure Hilfe
Wenn du die alte Fernbedienung nicht mehr hast, woher weist du dann welche Nutzungsdaten du senden mußt ?
Oke danke, werd mich da mal ein wenig informieren.. Falls jemand einen Code in C hat wäre ich sehr dankbar. Denn habe bis jetzt nur sehr wenig bis gar nichts mit Assembler programmiert. Udo schrieb: > Wenn du die alte Fernbedienung nicht mehr hast, > woher weist du dann welche Nutzungsdaten du > senden mußt ? Also ich habe den Bildschirm noch.. Und die Befehle der Fernbedienung stimmen ja mit den "Befehlen" des Bildschirms überrein. Also dachte ich mir, dass ich die Befehle im Internet finden werde(habe noch nicht gesucht). Und andererseits besteht die Möglichkeit, dass ich den Verkäufer um die Fernbedienungsserie frage. Dann kann ich die Befehle schnell finden.. Das Problem liegt nur beim PWM-Signal..
Lies dich mal in Fernbedienungen ein, wie die funktionieren und was die für Signale abgeben. Was du schreibst ergibt keinen Sinn.
dragonrider schrieb: > Worauf muss ich besonders Acht geben? Wenn Du mit MPLAB arbeitest, eigentlich nur damit und den Tools die es gibt. Für Dein aktuelles Problem einfach den Code-Configurator benutzen und dabei auch noch was lernen :) http://www.microchip.com/mplab/mplab-code-configurator PS: Ubs, ich gehe davon aus, das der PIC auch unterstützt wird!?
:
Bearbeitet durch User
Udo schrieb: > Lies dich mal in Fernbedienungen ein, wie die > funktionieren und was die für Signale abgeben. > Was du schreibst ergibt keinen Sinn. Ich muss nur wissen wie ein PWM-Signal erzeugt wird.. Ich dachte, dass man hier Hilfe bekommt.. und nicht dass man irgendwelche "Tipps" bekommt, welche niemandem weiter helfen.. PWM Signal.. das ist alles!!
Teo D. schrieb: > dragonrider schrieb: >> Worauf muss ich besonders Acht geben? > > Wenn Du mit MPLAB arbeitest, eigentlich nur damit und den Tools die es > gibt. > Für Dein aktuelles Problem einfach den Code-Configurator benutzen und > dabei auch noch was lernen :) > http://www.microchip.com/mplab/mplab-code-configurator > > PS: Ubs, ich gehe davon aus, das der PIC auch unterstützt wird!? Entschuldigung wenn sich dies ein bisschen blöd anhört aber was ist dieser Code-Configurator? Was macht der genau? MfG
dragonrider schrieb: > Entschuldigung wenn sich dies ein bisschen blöd anhört aber was ist > dieser Code-Configurator? Was macht der genau? Die Lösung dieses Rätsels verbirgt sich HINTER dem LINK, den ich gepostet habe.
:
Bearbeitet durch User
dragonrider schrieb: > PWM Signal.. das ist alles!! Zu PWM hätte ich vielleicht was. (Mit der PWM kann man aber nur den Grundtakt des Signals erzeugen) http://www.hs-ulm.de/users/vschilli/Mikrocontroller/uCQ/_downloads/uCquick-X.pdf (Kapitel 7) Dein PIC wird mit hoher Wahrscheinlichkeit (noch) nicht von MCC unterstützt (zu alt)
Mit einem PWM Signal alleine machst du nichts. Damit kannst du deinen TV nicht steuern. Welche Frequence soll denn das PWM Signal haben ?
dragonrider schrieb: > Ich muss nur wissen wie ein PWM-Signal erzeugt wird.. > Ich dachte, dass man hier Hilfe bekommt.. und nicht dass man > irgendwelche "Tipps" bekommt, welche niemandem weiter helfen.. Das ist üblich und auch verständlich. Den meisten ist nicht klar, was alles nötig ist, um IHR Problem zu lösen. Daher wird, oder muss, quasi schon davon ausgegangen werden, das diese HILFE benötigt wird. Diskussionen darüber, werden dann allerdings meist als persönlichen Angriff gewertet. Diese eigentlich gut gemeinten Tips, dann einfach ignorieren.
Teo D. schrieb: > dragonrider schrieb: >> Entschuldigung wenn sich dies ein bisschen blöd anhört aber was ist >> dieser Code-Configurator? Was macht der genau? > > Die Lösung dieses Rätsels verbirgt sich HINTER dem LINK, den ich > gepostet habe. Also es generiert mir einen gewissen Code, soweit bin ich gekommen. Jedoch nach welchen Kriterien wird der Code generiert? Muss ich ihm ein Struktogramm übergeben oder wie läuft das genau? :S Teo D. schrieb: > dragonrider schrieb: >> Ich muss nur wissen wie ein PWM-Signal erzeugt wird.. >> Ich dachte, dass man hier Hilfe bekommt.. und nicht dass man >> irgendwelche "Tipps" bekommt, welche niemandem weiter helfen.. > > Das ist üblich und auch verständlich. > Den meisten ist nicht klar, was alles nötig ist, um IHR Problem zu > lösen. Daher wird, oder muss, quasi schon davon ausgegangen werden, das > diese HILFE benötigt wird. > Diskussionen darüber, werden dann allerdings meist als persönlichen > Angriff gewertet. Diese eigentlich gut gemeinten Tips, dann einfach > ignorieren. Danke dir, hab das wirklich ein bisschen als "Angriff" gewertet. Jedenfalls kam es mir so vor.
Udo schrieb: > Mit einem PWM Signal alleine machst du nichts. Er glaubt zu wissen was er weiß und nur er kann es wissen ;) Solange es nicht um Leib u.Leben geht, lass Ihn. Learning by doing, Trial and Error, hat doch schon immer funktioniert oder auch nicht :)
dragonrider schrieb: > Jedoch nach welchen Kriterien wird der Code generiert? Benutzen, erklärt sich von selbst :) Wühle dich durch die Hilfen/Tutorials, die sind echt gut! dragonrider schrieb: > Danke dir, hab das wirklich ein bisschen als "Angriff" gewertet. > Jedenfalls kam es mir so vor. Na verhätschelt wirst Du hier sicher nich :) Aber eigentlich meinte ich die andere Seite! Auf Deiner ist das auch kaum zu vermeiden, wenn die Tips unnötig sind.
dragonrider schrieb: > Also es generiert mir einen gewissen Code, soweit bin ich gekommen. > Jedoch nach welchen Kriterien wird der Code generiert? > Muss ich ihm ein Struktogramm übergeben oder wie läuft das genau? :S Schau mal da http://microchip.wikidot.com/mcc:overview Da waren auch irgendwelche Videos, finde ich aber gerade nicht...
Oke danke euch, werde mich mal durch diese Links lesen und gegeben falls bei einem Problem werde ich mich melden. Danke euch
Teo D. schrieb: > Für Dein aktuelles Problem einfach den Code-Configurator benutzen und > dabei auch noch was lernen :) > http://www.microchip.com/mplab/mplab-code-configurator Hab mir diesen mal gedownloadet, jedoch befindet sich im .zip-File nur eine Datei mit dem Namen "com-microchip-mcc-3.16.nbm" Hab ich das falsche File gedownloadet oder weshalb finde ich hier nirgends ein .exe File?
Ich habe den MCC eigentlich noch nie benutzt aber immerhin schon mal installiert. Allerdings ganz anders ;-) In MPLABX -> Tools -> Available Plugins... (auswählen und installieren) Oder da gucken: http://microchip.wikidot.com/mcu1101:installation-and-setup unter 4. Install MPLAB® Code Configurator (MCC) Da muss man allerdings auswählen ob man lieber ein Video anschauen will oder schriftliche Anweisungen... Da gibt es dann auch direkt ein Tutorial zur PWM.
:
Bearbeitet durch User
Jap habs dann bei genauerem Suchen auf der Seite auch gefunden.. Hab es nun installiert, doch nun möchte ich es einem kleinen Test unterziehen und weiss nicht wo ich anfangen soll oder besser gesagt wie ich anfangen soll.. Falls jemand dies schon weiss, kann dieser sich gerne melden.. In der Zwischenzeit versuche ich es selber zu verstehen Danke schon mal.
Also hab mir nun Mplab X IDE runtergeladen sowie den Code Configurator installiert.. Nun wenn ich den Code Configurator öffnen möchte erhalte ich immer die folgende Fehlermeldung. "The Device used in the selected main project is not supported by the currently loaded peripheral libraries. A list of supported devices is provided in the release notes of the appropriate peripheral library. An archive of the current and previous versions of libraries can be found on the MCC website. www.microchip.com/mcc" Wisst ihr wie ich dies am besten lösen kann? MfG
kleine Anmerkung: habe als Hardware Tool PICKit3, jedoch habe ich es ebenfalls mit dem Simulator, ICD3 sowie REAL ICE getestet. Die Fehlermeldung kam bei jedem.. Compiler habe ich XC8 v1.32 ausgewählt.. kann es sein, dass dies mit dem Compiler zusammenhängt, den ich habe gesehen, dass es bereits neuere Versionen gibt..
dragonrider schrieb: > "The Device used in the selected main project is not supported by the > currently loaded peripheral libraries. Volker S. schrieb: > Dein PIC wird mit hoher Wahrscheinlichkeit (noch) nicht von MCC > unterstützt (zu alt) Nimmschd du konkret aktuelles PIC. So 18F45K22. Dann geht ;-) Btw: Der K22 ist besser ausgestattet und billiger.
:
Bearbeitet durch User
Oke. Also verwenden tu ich einen 18F4520.. Ist der wirklich schon so alt?:0 Oke, werd ich wohl so machen müssen.. :( Danke dir :)
dragonrider schrieb: > Also verwenden tu ich einen 18F4520.. > Ist der wirklich schon so alt?:0 Relativ alt eben. In den MCC werden zuerst die neuesten PICs integriert. Wie gesagt, die sind auch besser und billiger. dragonrider schrieb: > Oke, werd ich wohl so machen müssen.. :( Müssen tust du das nicht. Ich habe noch nie MCC verwendet. Da du eine "alte" Version vom XC8 installiert hast, kannst du auch die PLib verwenden. Grundsätzlich braucht man natürlich überhaupt keine Bibliothek um einen uC zu programmieren. Man beschreibt einfach die richtigen Register. Steht doch alles im Datasheet.
dragonrider schrieb: > Wie kann ich ein PWM-Signal generieren? (Gibt es ein gutes Tutorial?) Es gibt Unmengen von Tutorials. Um nur ein paar zu nennen: Obwohl Spruts Seiten langsam einstauben, seine Erklärungen für die älteren PIC Typen sind immer noch kaum zu toppen http://www.sprut.de/electronic/pic/grund/pwm.htm Ich finde auch die Tutorials von Nico empfehlenswert http://pic-projekte.de/wordpress/?cat=13 Und Volker SK natürlich mit seiner brandneuen Erklärung der "Puls-Weiten-Modulation" im Kap. 7 http://www.hs-ulm.de/users/vschilli/Mikrocontroller/uCQ/_downloads/uCquick-X.pdf dragonrider schrieb: > Was muss ich initialisieren? (Timer, PWM-Output, etc) Genau das, PWM Ausgangspin, TMR2 auf die Trägerfrequenz deines Infrarot-Protokolls und das das PWM Modul. Beinahe hätt ich's vergessen, das beste Tutorial ist immer noch: http://ww1.microchip.com/downloads/en/devicedoc/39631a.pdf#M14.9.80197.Heading2.164.PWM.Mode Gruß witkatz
:
Bearbeitet durch User
Für ne FB kannst Du die Senderoutine auch ganz einfach mit Delay und set/clear Pin machen. Beim AVR gibt es dazu das Macro _delay_us(), dem man die gewünschte Zeit in µs übergibt. Obs beim PIC auch so einfach geht, weiß ich nicht. Ich sage absichtlich Senderoutine, da Du den Träger ja noch mit dem eigentlichen FB-Code modulieren mußt. Der Träger selber hat in der Regel ein festes Tastverhältnis von 25%, d.h. keine PWM. Wenn Du die original FB nicht mehr hast, brauchst Du noch ne Universal-FB, um die richtigen Codes erstmal zu ermitteln. dragonrider schrieb: > Und andererseits besteht die Möglichkeit, dass ich den Verkäufer um die > Fernbedienungsserie frage. Dann kann ich die Befehle schnell finden.. YMMD.
Peter D. schrieb: > Beim AVR gibt es dazu das Macro _delay_us(), dem man die gewünschte Zeit > in µs übergibt. Obs beim PIC auch so einfach geht, weiß ich nicht. Ja, alles der gleiche Mist ;-) Peter D. schrieb: > Der Träger selber hat in der Regel > ein festes Tastverhältnis von 25%, d.h. keine PWM Frequenz und Tastverhältnis lassen sich doch mit einem PWM-Modul wunderbar einstellen. Mann muss es ja nicht unbedingt nochmal verändern, bloß weil der Begriff PWM das irgendwie nahelegt.
Peter D. schrieb: > Obs beim PIC auch so einfach geht, weiß ich nicht. Gute Idee Peter. XC8 definiert das Makro __delay_us(x), man muss nur _XTAL_FREQ auf die Oszillatorfrequenz setzen. Mit 40MHz Oszillator sähe das mit XC8 ungefähr so aus:
1 | #include <xc.h> |
2 | #define _XTAL_FREQ 40000000
|
3 | void main(void){ |
4 | TRISCbits.RC2 = 0; |
5 | |
6 | for(;;){ |
7 | LATCbits.LATC2 = 1; |
8 | __delay_us(6); |
9 | LATCbits.LATC2 = 0; |
10 | __delay_us(20); |
11 | }
|
12 | }
|
Und schon gehen 38kHz Trägerfrequenz raus ;-)
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.