mikrocontroller.net

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


Autor: Olaf K. (Firma: Hobby) (olaf-k)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Atlas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olaf K. (Firma: Hobby) (olaf-k)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olaf K. (Firma: Hobby) (olaf-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gelöst:

Läuft wie Geplant.

Danke

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi kannst du mir das Programm mal schicken
an

tolledaniel@gmail.com

brauch das für die schule ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.