www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik PIC 16f84 PWM mit 1-Tastensteuerung

Autor: Olaf K. (Firma Hobby) (olaf-k)
Datum: 11.01.2008 19:25
Dateianhang: PWM1.txt (6,1 KB, 85 Downloads)

Hallo Gemeinde
Ich bin neu hier und in Bezug auf PIC und Assembler ein absoluter
Anfänger.
Das möchte ich ändern.


Mein Projekt ist eine PWM mit 1-Tastensteuerung mit PIC 16f84

gewollte Funktionen:

Taste drücken(RB0) =einschalten PWM mit duty cycle x (RA0)
Taste drücken kurz= duty cycle verändern oder als alternative andere
PWM-Schleife ( PWM 2....10....aus )
Taste drücken lang (3 sec) = ausschalten oder als alternative sleep.(
wenn so etwas funktioniert )

PIC 16f84 deshalb weil ich die Hardware PICEE (Elektor 2.-2002) besitze
und lernen will.

Mit Hilfe der Webseite von SPRUT und dem Datenblatt habe ich im MPLAB
einige Asseblerzeilen geschrieben. Datei als Anhang als Text (mit .asm
lande ich nach dem Absenden immer im Nirvana )

Einschalten funktioniert.
PWM ist da.

Mit dem Rest bin ich Gedanklich in einer Sackgasse gelandet und weiss
erst einmal nicht weiter.
Fehlversuche wurden, wenn nicht gleich wieder gelöscht im Code
auskomentiert.
Es handelt sich sicher um gravierende Strukturfehler, welche ich aber
nicht sehe.
für Konstruktive Kritik, Hilfestellung und Lösungsansätze währe ich
dankbar.

olaf
Autor: Atlas (Gast)
Datum: 11.01.2008 20:16

Hallo,

bei Deiner Initialisierung der Ports hast Du die Umschaltung der Bänke
nicht beachtet.

PORTA und PORTB in Bank 0
TRISA und TRISB in Bank 1

sollte etwa so aussehen:

BSF  STATUS,RP0  ;Switch to register Bank 1
MOVLW  B'11100000'
MOVWF  TRISA    ;RA ports
MOVLW  B'00000001'
MOVWF  TRISB    ;RB ports
BCF  STATUS,RP0  ;Switch Back to reg. Bank 0
CLRF  PORTA    ;
CLRF  PORTB    ;

Übrigens, das Programm ist ein fürchterliches Durcheinander.
Besser Schritt für Schritt vorgehen und einzelne Funktionen testen.

MfG
Autor: Olaf K. (Firma Hobby) (olaf-k)
Datum: 11.01.2008 22:09

@atlas
Danke für deine Antwort
Das mit dem Durcheinander ist Richtig.
Für mich war es am Anfang Logisch.

Die Historie:
ich wollte einene PWM ( LED anschalten ging ja )
Also gelesen und Beispiele angeschaut
PWM-Modul für RB0 geschrieben --ging.
so nun extra anschalten: Also RA0 als Eingang - PICEE hat da eine Taste.
wo abfragen? nach der Initialisierung-wie? Mit btfss  ,0 -aha wenn 0
zurück wenn 1 weiter -geht.
So nun läuft das Programm ja in einer Schleife. Wohin mit der Nächsten
Tastenabfrage?
Gelesen  Interrupt -aha beim 16f84 aber nur an PORTB. also PWM und
Tastenabfrage getauscht.
War Nützlich dass ich Inzwischen auch was über equ gelesen hatte.
Bei SPRUT war ein Beispiel wie eine Interruptservicroutine auszusehen
hat.
Gehört also mit an den Anfang nach- org00- org04.
Hatte gelesen oder so verstanden, der 16f84 kann aus jeder Bank auf das
Tristate-Register zugreifen. Hat ja vorher Funktioniert oder ist nicht
Aufgefallen.

Mein Problem beim Lesen und Verstehen diverser Beispiele ist, gibt es
immer unterschiedliche Strukturen. Die zu Begreifen und Umzusetzen ist
schwierig.
Da ich noch kein Beispiel gefunden habe, wie ein kompletter
Programmablauf auszusehen hat.
Deshalb meine etwas konfuse Bausteinmethode.
Dies ist ja der Grund für meine Fragen .

Das mit der Bankumschaltung werde ich mal versuchen umzusetzen.
Danke
olaf
Autor: Olaf K. (Firma Hobby) (olaf-k)
Datum: 15.01.2008 14:44

Gelöst:

Läuft wie Geplant.

Danke
Autor: Daniel (Gast)
Datum: 07.05.2008 10:43

Hi kannst du mir das Programm mal schicken
an

tolledaniel@gmail.com

brauch das für die schule ;)

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






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net