Guten Morgen =) Ich hatte ein Projekt wo eine variable programmierbare wechselspannung erzeug werden sollte. Da entschied ich mich für den PIC 16F84A und habe mit einem D/A wandler und ein zwei verstärkern eine funktionfähige schaltung gebaut mit denen man Frequenzen erzeugen kann... Dies zum geschichtlichem... Nun sind die anforderungen gestiegen und es sollen 2 Frequenzen erzeugt werden könne die sowohl synchron als auch unsynchorn laufen können, je nach programmierung. Da entschied ich mich meien schaltung für den 16F84A einfach zu duplizieren, einen PIC mit mehr ports zu nehmen und dann das programm anpassen und umändern. Da wir hier im institut nur den 16F887 noch da haben und alles ander bestellt werden musste entschied ich mich für ihn da ehr mehr als genug ports hat. Aber allein bei der config file verliesen sie ihn... zB steht im datenblatt das in CONFIG1 das DEBUG Bit auf 1 gesetz werden muss damit RB6 und RB7 normale I/O ports sind. Sobald ich dies in der config file so einstelle hängt sich der pic auf. Ich habe dan zum test ein kleines programm geschreiben was einfach nur ein paar ports setzt oder löscht bzw incrementiert... siehe unten... der pic hing sich dabei auf. list p=16f887 ; PIC Typ festlegen #include <p16f887.inc> ; Include Dateien initialisieren __CONFIG _CONFIG1, _DEBUG_ON & _LVP_OFF & _FCMEN_OFF & _IESO_ON & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _XT_OSC __CONFIG _CONFIG2, 0700 errorlevel -302 org 0x0000 ;Einsprungadresse bei Start/Reset goto Initialisierung org 0x0004 ;Einsprungadresse für den Interrupt retfie org 0x0050 Initialisierung: bsf STATUS,RP0 bcf STATUS,RP1 ;Bank 1 clrf TRISA ;PORTA,B,C,D auf Ausgang setzen clrf TRISB ;PORTB = AC1 clrf TRISC ;PORTC = AC2 clrf TRISD ;PORTD = 7-Segment, DC1, DC2 bsf TRISA,1 ;RA1 = UP bsf TRISA,2 ;RA2 = DOWN - Taster clrf WPUB ;Pull-up PORTB off bsf STATUS,RP1 ;Bank 3 clrf ANSEL ;PORTA und B auf Digital Input clrf ANSELH bcf STATUS,RP0 bcf STATUS,RP1 ;Bank 0 lol bsf PORTA,4 bsf PORTA,3 incf PORTC,F incf PORTB,F call Warte_1ms bcf PORTA,4 bcf PORTA,3 incf PORTC,F incf PORTB,F call Warte_1ms goto lol Warte_1ms: movlw D'248' movwf Zaehler3 Loop goto $+1 goto $+1 goto $+1 nop decfsz Zaehler3,F goto Loop return end ;--------------------------------------------------------------------- als ich aber dan den CALL befehl ausklammerte funktionierte es. Kann mir jemand sagen warum? ich treffe in Datenblatt auf keien weiteren erkenntnisse... überlese ich was? und was mich am meisten verwirrt... warum kann ich RB6 / 7 nicht als I/O diklarieren? warum hängt er sich dabei auf... Vielen dank schonmal... ich hoffe ich hab genug infos gegeben^^
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.