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


von Olaf K. (Firma: Hobby) (olaf-k)


Angehängte Dateien:

Lesenswert?

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

von Atlas (Gast)


Lesenswert?

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

von Olaf K. (Firma: Hobby) (olaf-k)


Lesenswert?

@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

von Olaf K. (Firma: Hobby) (olaf-k)


Lesenswert?

Gelöst:

Läuft wie Geplant.

Danke

von Daniel (Gast)


Lesenswert?

Hi kannst du mir das Programm mal schicken
an

tolledaniel@gmail.com

brauch das für die schule ;)

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
Noch kein Account? Hier anmelden.