Datum: 23.04.2008 12:25
Ich habe 4 Dip Schalter. Bei diesen soll eine Frequenz von 200khz-300kHz einstellbar sein. Die Frequenz soll mittels PWM erzeugt werden. Wie kann ich das realisieren. Ich bitte Sie um Hilfe und ein paar Beispiele. Ich benutze den PIC 18f4550 mit einem 20MHz Quarz. mfg
Datum: 23.04.2008 12:50
Und wo liegt jetzt das Problem, beim Einlesen des Schalters oder beim Einstellen der PWM? Oder bei beidem?
Datum: 23.04.2008 18:18
Hallo Elias die Initialisierung könnte so aussehen. Das ist ein "Schnipsel" aus einem PIC18F1320 Programm: Init: ADCON1 = 0x7c; //0 = analog, 1 = digital TRISA = 0xef; //1 = in, 0 = out TRISB = 0x13; // PWM: CCP1CON = 0b10001100; PWM1CON = 0x00; T2CON = 0b00010100; //Timer2 on PR2 = 0xff; //f CCPR1L = 0x80; //Breite Bei der PWM kann ich jetzt nicht sagen, was die Frequenz und was die Pulsbreite bestimmt, aber vermutlich stimmts. Gerhard
Datum: 24.04.2008 08:20
Ich verstehe diese Befehle nicht da ich nur mit dem CCS Compiler arbeite. mfg
Datum: 24.04.2008 11:20
Das ist doch C-Code, den Gerhard da gepostet hat. Du kannst also keine Tasten einlesen, keine PWM einstellen, kein C Programmieren oder Lesen, willst aber dein Projekt mit dem CCS-Compiler umsetzen.... Gibts überhaupt irgendwelche Grundlagen, die wir vorraussetzen können, oder sollen wir bei Herrn Ohm anfangen, und uns von dort langsam vortasten?
Datum: 24.04.2008 11:43
Wennst CCS verwendest, gibt es so viel ich weiß sogar Funktionen für PWM in einer Library. Frag mich aber nicht wie die heißen und wo diese zu finden sind, dazu musst du dir nur die Mühe machen und in der CCS Hilfe nachsehen. Was Gerhard dir geschickt hat ist die Initialisierung der Register. Ob der CCS Compiler diese Register kennt bezweifle ich. In diesem Fall musst du diese Register in einer Header Datei mit #locate definieren. z.B. #locate ADCON1 = 0xFF43 Welche Adressen diese Register haben findest du im Datenblatt des Controllers.
Datum: 24.04.2008 11:49
Der CCS hat doch eine gute Hilfe. Schau dir im www.ccs-info.com/forum ein paar Beispiele an Mal ein paar Tips: setup_timer_2(T2_DIV_BY_4,255,1); // Timer für PWM set_pwm1_duty(pwm); //pwm=0..255 Pin B0 als input: set_tris_b(0b00000001) Pins einlesen: b0=input(PIN_B0) Thomas
Datum: 24.04.2008 21:34
Thomas wrote: > Der CCS hat doch eine gute Hilfe. Schau dir im www.ccs-info.com/forum > ein paar Beispiele an > > Mal ein paar Tips: > > setup_timer_2(T2_DIV_BY_4,255,1); // Timer für PWM > set_pwm1_duty(pwm); //pwm=0..255 > Pin B0 als input: set_tris_b(0b00000001) > Pins einlesen: b0=input(PIN_B0) > > Thomas Dankeschön mit diesen Befehlen kann ich etwas anfangen. Ist es grundsätzlich möglich mit dem PIC einen Takt von ca. 300kHz zu erzeugen? Wenn ja, welche Einstellungen bzgl. Timer, PWM Periode... muss ich machen. mfg
Datum: 24.04.2008 22:22
PWM verwenden, um eine Frequenz zu erzeugen - unnötig aufwendig. Die Timer kannst Du mit einem Compare-Modul versehen und die Frequenz erzeugen. Wenn schon PWM, dann ist eine Angabe über die Auflösung unabdingbar! 4 Bit ( 16 Stufen) oder gar 10 Bit (1024 Stufen) ???
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel