Datum: 11.01.2008 19:25
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
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
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
Datum: 15.01.2008 14:44
Gelöst: Läuft wie Geplant. Danke
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