PIC16F688 Intern oscillator. Och: Hur löser man problem?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: PIC16F688 Intern oscillator 8MHz

Inlägg av JimmyAndersson »

Sodjan:
"Jag fattar inte var FCMEM kommer från. Det finns inte med i din kod."


Nu kanske jag missförstår dig, men:

__CONFIG _INTRC_OSC_NOCLKOUT & _FCMEN_OFF & _IESO_OFF & _BOD_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF


Från filen PIC16F688.INC:


;==========================================================================
;
; Configuration Bits
;
;==========================================================================

_FCMEN_ON EQU H'3FFF'
_FCMEN_OFF EQU H'37FF'
_IESO_ON EQU H'3FFF'
_IESO_OFF EQU H'3BFF'



edit: Nu ser jag.. Konstigt. Vänta lite.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F688 Intern oscillator 8MHz

Inlägg av sodjan »

Från de felmeddelande som du postade :

"Symbol not previously defined (_FCMEM_OFF)"

Och som sagt, jag fick ju inte det även med din kod... :-)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F688 Intern oscillator 8MHz

Inlägg av sodjan »

> (Har inte hittat något om config i MPASM-manualen.)

Från innehållsförteckningen i DS33014K ("MPASM Assembler, MPLINK Object Linker
MPLIB Object Librarian User’s Guide") :

Kod: Markera allt

4.11 __config - Set Processor Configuration Bits ............................ 55
4.12 config - Set Processor Configuration Bits (PIC18 MCUs) ................. 57
EDIT: Sökning på "config" eller "__config" i hjälpfilen går lika bra, det är i princip
samma text på båda ställena. "hlpMPASMasm.chm" i "/MPASM Suite" katalogen (eller
direkt inifrån MPLAB, "Help" -> "Topics" -> "MPASM Assembler").
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: PIC16F688 Intern oscillator 8MHz

Inlägg av JimmyAndersson »

Den manualfilen saknar jag tydligen. Ska den ligga i MPLAB IDE\Utilities\Dokumentation ?



"Och som sagt, jag fick ju inte det även med din kod..."

Felmeddelandet måste ha varit från förra försöket. (Jag sitter ju inte direkt och bara väntar på svar.
Jag försöker så gott jag kan hela tiden att hitta vad som är galet.)


Det som är så svårt är att lära sig var i datablad och manualer man hittar det man behöver veta för att det man håller på med ska fungera...


Ibland vet man inte vad saker heter. Då är det lite svårt att försöka söka efter det, eftersom sökfunktionerna är textbaserade...
Att sedan förstå att "det som bestämmer strukturen på config-raderna" (vad det nu heter..) hör ihop med "MPLINK Object Linker" tillhör inte det mest logiska om man inte är van.


Jag är inte direkt trög och jag har nästan lika lätt för att läsa/förstå engelska som svenska,
men när det gäller PIC-programmering så är det ingen uppförsbacke. Det är en *vägg*.
Det tycks aldrig lossna.....


Jag tar väldigt gärna emot råd om vad jag ska göra, inte bara med det här specifika problemet i tråden alltså. :)





Jag får förresten fortfarande fel. Koden ser ut såhär:

Kod: Markera allt

;****************************************************
	list		p=PIC16F688
	include		"p16f688.inc"
;****************************************************
;
;	PIC16F688. Intern oscillator på 8MHz.
;
;	LED-belysning till etshyllan
;
;	Lysdioder 1 - 6 : RC0 - RC5.
;	Knapp (JP1) : RA4. (pin 3).
;	JP2 : RA5. (pin 2.) - Satt som utgång eftersom den inte behövs än så länge..
;	Pot: RA2. (pin 11.)
;
;
;****************************************************

	__CONFIG _INTRC_OSC_NOCLKOUT & _FCMEN_OFF & _IESO_OFF & _BOD_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF

	errorlevel	-302

;****************************************************
;	Definiera diverse namn...

	#define		KNAPP		PORTA, 4

;****************************************************
knapp_vars		udata_acs
knapplage		res 1	; Vilken knapp som tryckts ner

; det blir mer här senare..

;****************************************************

Boot		CODE	h'0000'
	goto	start

;****************************************************

Int_vect	CODE	h'0004'
;	retfie
	goto	isr_rutin

;****************************************************
; MACRO

; kommer senare...

;****************************************************

Main	CODE

Start

;Generell setup


	bsf		OPTION_REG,	NOT_RAPU	;PORT A pull-ups disabled
	bsf		OPTION_REG,	INTEDG	;Interrupt on rising edge of RA2/INT
	bcf		OPTION_REG,	T0CS	;TMR0 internal clock
    bcf		WDTCON, SWDTEN		;WDT turned off


;	Interrupt
    bsf		INTCON, GIE		;Global interrupt enable bit  <--
    bsf		INTCON, PEIE	;Enable unmasked peripheral interrupts <--
    bcf		INTCON, T0IE	;Disable the Timer0 interrupt
    bcf		INTCON, INTE	;Disable the RA2/INT external interrupt  <--
    bsf		INTCON, RAIE	;Enable the PORTA change interrupt <--
    bcf		INTCON, T0IF	;Timer0 did not overflow
    bcf		INTCON, INTF	;RA2/INT external interrupt did not occur
    bcf		INTCON, RAIF	;None of the PORTA-pins have changed state <--<<
    
	movlw	b'00010000'		;RA4 interrupt on change. <--
    movwf	IOCA
    
    bcf		PIE1, EEIE		;Disable the EE write complete interrupt
    bsf		PIE1, ADIE		;Enable the ADC-interrupt <--
    bcf		PIE1, RCIE		;Disable the EUSART receive interrupt
    bcf		PIE1, C2IE		;Disable the comparator C2 interrupt
    bcf		PIE1, C1IE		;Disable the comparator C1 interrupt
    bcf		PIE1, OSFIE		;Disable the oscillator fail interrupt
    bcf		PIE1, TXIE		;Disable the EUSART transmit interrupt
    bcf		PIE1,	TMR1IE	;Disable the Timer1 overflow interrupt

    clrf	PIR1			;Cleara alla interrupt
    bcf		PIR1, ADIF		;AD interrupt clear <--


;	Klocka
	bsf		OSCCON, IRCF2	;8MHz
	bsf		OSCCON, IRCF1	;8MHz
	bsf		OSCCON, IRCF0	;8MHz
	bcf		OSCCON, SCS		;Fosc = systemklockan


;	I/O
	movlw	b'00010100'		;Allt till utgångar, bortsett från knappen och poten.
	movwf	TRISA
	clrf	TRISC			;Alla till utgångar, för lysdioderna.

	clrf	PORTA			;Tomt
	movlw	h'FF'			;Tomt (OBS: Inverterat för lysdioderna).	
	movwf	PORTC
    
    clrf	WPUA			;Inga pull-ups
    

;	Timers, comparators mm
	bcf		T1CON, TMR1ON	;Timer1 avstängd
	
    bsf		CMCON0, CM2		;Comparators avstängda
    bsf		CMCON0, CM1		;Comparators avstängda
    bsf		CMCON0, CM0		;Comparators avstängda
    bcf		VRCON, VREN		;CVref powered down

;	ADC
	movlw	b'00000100'		;AN2 (pin 11) analog. Resten digitala
	movwf	ANSEL
    
    bsf		ADCON0, ADFM	;Högerjusterad AD
    bcf		ADCON0, VCFG	;Vdd som referens
    bcf		ADCON0, CHS2	;Channel: AN2 (pin 11)
    bsf		ADCON0, CHS1	;Channel: AN2 (pin 11)
    bcf		ADCON0, CHS0	;Channel: AN2 (pin 11)
    bsf		ADCON0, ADON	;ADC enabled <--
    bsf		ADCON0, GO_DONE	;AD-conversion in progress <--    OBS! Måste vara *efter* ADON !

    bcf		ADCON1, ADCS2	;AD Conversion clock: Fosc/32 = 250kHz
    bsf		ADCON1, ADCS1	;AD Conversion clock: Fosc/32 = 250kHz
    bcf		ADCON1, ADCS0	;AD Conversion clock: Fosc/32 = 250kHz


;	USART
    bcf		TXSTA, TXEN		;EUSART transmit disabled
    clrf	RCSTA			;EUSART port disabled
    bcf		BAUDCTL,ABDEN	;Auto-baud detect disabled
    
   






;****************************************************
;****************************************************
;****************************************************


;Övriga grejjer, dvs anrop till sub-rutiner/makron osv.






;
loop



	goto loop				;Om och om igen...
;
;****************************************************
;****************************************************
;****************************************************

;              Sub-rutiner här under

;****************************************************

; Interrupt

isr_vars		UDATA_SHR
flagga_knapp	RES 1
pot_lo			RES 1
pot_hi			RES 1
	

isr_rutin		CODE

isr_rutin
	;Knapp-interrupt.
	btfsc		INTCON,	RAIF		;PORTA change interrupt? Isåfall körs nästa rad.
	btfss		KNAPP				;Knappen som gett interrupt? Isåfall körs inte nästa rad.
	goto		slut				;Hoppa till slutet.
	bsf			flagga_knapp, 0		;Sätt flaggan.
	bcf			INTCON, RAIF		;Clerara PORTA change interrupt.
	bsf			INTCON, RAIE

	;Pot-interrupt.
	btfss		PIR1, ADIF			;AD-interrupt? Isåfall körs inte nästa rad.
	goto		slut				;Hoppa till slutet.
	bcf			PIR1, ADIF			;Cleara AD-interruptet.
	movf		ADRESL, F			;Innehållet i ADRESL till W.
	movwf		pot_lo				;..och vidare till pot_lo
	movf		ADRESH, F			;Innehållet i ADRESH till W.
	movwf		pot_hi				;..och vidare till pot_hi
	bsf			ADCON0, ADON		;Starta AD igen
	bsf			ADCON0, GO_DONE		;Ny avläsning

slut
	retfie

;****************************************************








;****************************************************
;Delay-rutiner

DLY_VARS	UDATA_ACS
d1			RES 1
d2			RES 1
d3			RES 1

DLY_CODE	CODE


;Delay 1s  (1,00056s)
Delay_1s
	movlw	0x5A
	movwf	d1
	movlw	0xCD
	movwf	d2
	movlw	0x16
	movwf	d3
Delay_1s_0
	decfsz	d1, f
	goto	Delay_1s_1
	decfsz	d2, f
Delay_1s_1
	goto	Delay_1s_2
	decfsz	d3, f
Delay_1s_2
	goto	Delay_1s_0
	nop
	return


;Delay 5ms. (5,0003ms)
Delay_5ms
	movlw	0x07
	movwf	d1
	movlw	0x28
	movwf	d2
Delay_5ms_0
	decfsz	d1, f
	goto	Delay_5ms_1
	decfsz	d2, f
Delay_5ms_1
	goto	Delay_5ms_0
	nop
	nop
	return


;Delay 1us.
Delay_1us
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	return

;****************************************************

	end

Felmeddelandet, som den här gången är från samma kod som ovan :)

Kod: Markera allt

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "D:\Program\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F688 "ledbelysning.asm" /l"ledbelysning.lst" /e"ledbelysning.err" /o"ledbelysning.o" /c-
Error[111]   D:\PROGRAM\MICROCHIP\MPASM SUITE\P16F688.INC 182 : Missing symbol
Halting build on first failure as requested.
BUILD FAILED: Mon May 24 17:56:16 2010

Rad 181-183:

Kod: Markera allt

isr_rutin		CODE         <---- Rad 181
                                        <---- Rad 182
isr_rutin                             <---- Rad 183
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: PIC16F688 Intern oscillator 8MHz

Inlägg av Kaggen »

Enligt felmeddelandet är det nåt knas med filen P16F688.INC på rad 182

Edit: såg nu att du skrev dessa rader :)
Användarvisningsbild
jojje
Gått bort
Inlägg: 6380
Blev medlem: 20 januari 2006, 01:53:33
Ort: Stockholms utkant
Kontakt:

Re: PIC16F688 Intern oscillator 8MHz

Inlägg av jojje »

Kan du inte bara ta bort den?
Jag ser ingen nytta med den raden iaf.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: PIC16F688 Intern oscillator 8MHz

Inlägg av Kaggen »

Det är rad 182 i p16f688.inc den klagar på *inte* din kod (ledbelysning.asm) om jag förstår det rätt. Har du råddat med p16f688.inc?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F688 Intern oscillator 8MHz

Inlägg av sodjan »

> Den manualfilen saknar jag tydligen. Ska den ligga i MPLAB IDE\Utilities\Dokumentation ?

Ingen aning. Men den finns på MPLAB-sidan hos http://www.microchip.com.

> Felmeddelandet måste ha varit från förra försöket. (Jag sitter ju inte direkt och bara väntar på svar.
> Jag försöker så gott jag kan hela tiden att hitta vad som är galet.)

Självklart är det så ! :-)
Man när du väl postar något så är det ju väldigt enkelt att göra en sista "build"
och se till att koden och meddelanderna är från samma källa. Det blir ju faktiskt
*mer* jobb att posta en version av koden och en annan (äldre ?) version av
meddelanderna, då måste du ju spara det ena någon annanstans under tiden.

> Att sedan förstå att "det som bestämmer strukturen på config-raderna" (vad det nu heter..) hör ihop med "MPLINK Object Linker"

Det gör det inte. Det är dokumenterat i *MPASM* manualen.
Vilket i och för sig ligger i samma PDF fil, om det är det du menar...

> Jag tar väldigt gärna emot råd om vad jag ska göra, inte bara med det här specifika problemet i tråden alltså.

Det primära är alltid att ta ett fel i sänder och undersöka det för sig. Gärna i ordning eftersom
felen ofta är beroende på varandra, så att säga.

Om t.ex MPASM säger "Symbol not previously defined (RAPU)" så är det bara att undersöka varför.
Själva meddelanden är ju väldigt tydligt som det är. Det finns inget definierat som heter RAPU.
Symbolen heter för övrigt NOT_RAPU, vilket syns direkt om du söker efter "RAPU" i P16F688.INC).

Sen hade du ett fel "Symbol not previously defined (_FCMEM_OFF)" vilket var lite klurigt. Men med
lite noggranhet så ser man ju att det är ett gammalt meddelande från då du hade ett stavfel i koden,
den kod du postade var dock rättad (därför var det ju enkelt att se att koden och meddelanderna
inte hörde ihop). Att hitta det har igentligen inte ett smack med just *PIC* programmering att
göra, det behövs bara lite noggranhet i att kolla koden och att läsa meddelandet.

Ditt "...P16F688.INC 182 : Missing symbol" är lite märkligt. Det kan (som andra har sagt) vara
något fel i INC filen. Kolla den eller fixa en ny, jag har lagt med min INC fil nedan.

Din senaste kod byggde OK efter att jag hade fixat två UDATA_ASC -> UDATA_SHR. Du hade ju
ändrat på ett eller två andra stället, varför inte ändra alla ? Nu kom du aldrig så längt (d.v.s länkningen)
p.g.a av 111 felet, så du märkte inte det... :-)

Notera alltså att jag inte får felet i P16F688.INC som du får...

Min kopia av P16F688.INC (så du kan byta ut din för att testa) :

Kod: Markera allt

        LIST
; P16F688.INC  Standard Header File, Version 1.00    Microchip Technology, Inc.
        NOLIST

; This header file defines configurations, registers, and other useful bits of
; information for the PIC16F688 microcontroller.  These names are taken to match 
; the data sheets as closely as possible.  

; Note that the processor must be selected before this file is 
; included.  The processor may be selected the following ways:

;       1. Command line switch:
;               C:\ MPASM MYFILE.ASM /PIC16F688
;       2. LIST directive in the source file
;               LIST   P=PIC16F688
;       3. Processor Type entry in the MPASM full-screen interface

;==========================================================================
;
;       Revision History
;
;==========================================================================
;1.00   07/28/03 Original
;1.01	09/02/03 Modified to match datasheet
;1.02 09/19/03 Changed CMCON1 from 0x20 to 0x1A (pas)
;==========================================================================
;
;       Verify Processor
;
;==========================================================================

        IFNDEF __16F688
           MESSG "Processor-header file mismatch.  Verify selected processor."
        ENDIF

;==========================================================================
;
;       Register Definitions
;
;==========================================================================

W                            EQU     H'0000'
F                            EQU     H'0001'

;----- Register Files------------------------------------------------------

INDF                         EQU     H'0000'
TMR0                         EQU     H'0001'
PCL                          EQU     H'0002'
STATUS                       EQU     H'0003'
FSR                          EQU     H'0004'
PORTA                        EQU     H'0005'

PORTC                        EQU     H'0007'

PCLATH                       EQU     H'000A'
INTCON                       EQU     H'000B'
PIR1                         EQU     H'000C'

TMR1L                        EQU     H'000E'		
TMR1H                        EQU     H'000F'		
T1CON                        EQU     H'0010'		
BAUDCTL                      EQU     H'0011'
SPBRGH                       EQU     H'0012'
SPBRG                        EQU     H'0013'
RCREG                        EQU     H'0014'
TXREG                        EQU     H'0015'
TXSTA                        EQU     H'0016'
RCSTA                        EQU     H'0017'
WDTCON                       EQU     H'0018'
CMCON0                       EQU     H'0019'		
CMCON1                       EQU     H'001A'		

ADRESH                       EQU     H'001E'		
ADCON0                       EQU     H'001F'		


OPTION_REG                   EQU     H'0081'

TRISA                        EQU     H'0085'
TRISC                        EQU     H'0087'

PIE1                         EQU     H'008C'

PCON                         EQU     H'008E'
OSCCON                       EQU     H'008F'
OSCTUNE	               	     EQU     H'0090'
ANSEL                        EQU     H'0091'

WPU                          EQU     H'0095'
WPUA                         EQU     H'0095'
IOC                          EQU     H'0096'
IOCA                         EQU     H'0096'
EEDATH                       EQU     H'0097'
EEADRH                       EQU     H'0098'
VRCON                        EQU     H'0099'
EEDAT                        EQU     H'009A'	
EEDATA                       EQU     H'009A'	
EEADR                        EQU     H'009B'	
EECON1                       EQU     H'009C'
EECON2                       EQU     H'009D'
ADRESL                       EQU     H'009E'		
ADCON1                       EQU     H'009F'


;----- STATUS Bits --------------------------------------------------------

IRP                          EQU     H'0007'
RP1                          EQU     H'0006'
RP0                          EQU     H'0005'
NOT_TO                       EQU     H'0004'
NOT_PD                       EQU     H'0003'
Z                            EQU     H'0002'
DC                           EQU     H'0001'
C                            EQU     H'0000'

;----- INTCON Bits --------------------------------------------------------

GIE                          EQU     H'0007'
PEIE                         EQU     H'0006'
T0IE                         EQU     H'0005'
INTE                         EQU     H'0004'
RAIE                         EQU     H'0003'
T0IF                         EQU     H'0002'
INTF                         EQU     H'0001'
RAIF                         EQU     H'0000'

;----- PIR1 Bits ----------------------------------------------------------

EEIF                         EQU     H'0007'
ADIF                         EQU     H'0006'
RCIF                         EQU     H'0005'
C2IF                         EQU     H'0004'
C1IF                         EQU     H'0003'
OSFIF                        EQU     H'0002'
TXIF                         EQU     H'0001'
T1IF                         EQU     H'0000'
TMR1IF                       EQU     H'0000'

;----- T1CON Bits ---------------------------------------------------------

T1GINV                       EQU     H'0007'
TMR1GE                       EQU     H'0006'
T1CKPS1                      EQU     H'0005'
T1CKPS0                      EQU     H'0004'
T1OSCEN                      EQU     H'0003'
NOT_T1SYNC                   EQU     H'0002'
TMR1CS                       EQU     H'0001'
TMR1ON                       EQU     H'0000'

;----- BAUDCTL Bits --------------------------------------------------------

ABDOVF                       EQU     H'0007'
RCIDL                        EQU     H'0006'
SCKP                         EQU     H'0004'
BRG16                        EQU     H'0003'
WUE                          EQU     H'0001'
ABDEN                        EQU     H'0000'

;----- TXSTA Bits --------------------------------------------------------

CSRC                         EQU     H'0007'
TX9                          EQU     H'0006'
TXEN                         EQU     H'0005'
SYNC                         EQU     H'0004'
SENDB                        EQU     H'0003'
BRGH                         EQU     H'0002'
TRMT                         EQU     H'0001'
TX9D                         EQU     H'0000'

;----- RCSTA Bits --------------------------------------------------------

SPEN                         EQU     H'0007'
RX9                          EQU     H'0006'
SREN                         EQU     H'0005'
CREN                         EQU     H'0004'
ADDEN                        EQU     H'0003'
FERR                         EQU     H'0002'
OERR                         EQU     H'0001'
RX9D                         EQU     H'0000'
;----- WDTCON Bits --------------------------------------------------------

WDTPS3                       EQU     H'0004'
WDTPS2                       EQU     H'0003'
WDTPS1                       EQU     H'0002'
WDTPS0                       EQU     H'0001'
SWDTEN                       EQU     H'0000'

;----- COMCON0 Bits -------------------------------------------------------

C2OUT                        EQU     H'0007'
C1OUT                        EQU     H'0006'
C2INV                        EQU     H'0005'
C1INV                        EQU     H'0004'
CIS                          EQU     H'0003'
CM2                          EQU     H'0002'
CM1                          EQU     H'0001'
CM0                          EQU     H'0000'

;----- COMCON1 Bits -------------------------------------------------------

T1GSS                        EQU      H'0001'
C2SYNC                       EQU      H'0000'

;----- ADCON0 Bits --------------------------------------------------------

ADFM                         EQU     H'0007'
VCFG                         EQU     H'0006'
CHS2                         EQU     H'0004'
CHS1                         EQU     H'0003'
CHS0                         EQU     H'0002'
GO                           EQU     H'0001'
NOT_DONE                     EQU     H'0001'
GO_DONE                      EQU     H'0001'
ADON                         EQU     H'0000'

;----- OPTION Bits --------------------------------------------------------

NOT_RAPU                     EQU     H'0007'
INTEDG                       EQU     H'0006'
T0CS                         EQU     H'0005'
T0SE                         EQU     H'0004'
PSA                          EQU     H'0003'
PS2                          EQU     H'0002'
PS1                          EQU     H'0001'
PS0                          EQU     H'0000'

;----- PIE1 Bits ----------------------------------------------------------

EEIE                         EQU     H'0007'
ADIE                         EQU     H'0006'
RCIE                         EQU     H'0005'
C2IE                         EQU     H'0004'
C1IE                         EQU     H'0003'
OSFIE                        EQU     H'0002'
TXIE                         EQU     H'0001'
T1IE                         EQU     H'0000'
TMR1IE                       EQU     H'0000'

;----- PCON Bits ----------------------------------------------------------

ULPWUE                       EQU     H'0005'
SBODEN                       EQU     H'0004'
NOT_POR                      EQU     H'0001'
NOT_BOD                      EQU     H'0000'

;----- OSCCON Bits --------------------------------------------------------

IRCF2                        EQU     H'0006'
IRCF1                        EQU     H'0005'
IRCF0                        EQU     H'0004'
OSTS                         EQU     H'0003'
HTS                          EQU     H'0002'
LTS                          EQU     H'0001'
SCS                          EQU     H'0000'

;----- OSCTUNE Bits -------------------------------------------------------

TUN4                         EQU     H'0004'
TUN3                         EQU     H'0003'
TUN2                         EQU     H'0002'
TUN1                         EQU     H'0001'
TUN0                         EQU     H'0000'

;----- ANSEL Bits ---------------------------------------------------------

ANS7                         EQU     H'0007'
ANS6                         EQU     H'0006'
ANS5                         EQU     H'0005'
ANS4                         EQU     H'0004'
ANS3                         EQU     H'0003'
ANS2                         EQU     H'0002'
ANS1                         EQU     H'0001'
ANS0                         EQU     H'0000'

;----- IOC Bits ---------------------------------------------------------

IOC5                         EQU     H'0005'
IOC4                         EQU     H'0004'
IOC3                         EQU     H'0003'
IOC2                         EQU     H'0002'
IOC1                         EQU     H'0001'
IOC0                         EQU     H'0000'

;----- IOCA Bits ---------------------------------------------------------

IOCA5                        EQU     H'0005'
IOCA4                        EQU     H'0004'
IOCA3                        EQU     H'0003'
IOCA2                        EQU     H'0002'
IOCA1                        EQU     H'0001'
IOCA0                        EQU     H'0000'

;----- VRCON Bits ---------------------------------------------------------

VREN                         EQU     H'0007'
VRR                          EQU     H'0005'
VR3                          EQU     H'0003'
VR2                          EQU     H'0002'
VR1                          EQU     H'0001'
VR0                          EQU     H'0000'

;----- EECON1 Bits --------------------------------------------------------

EEPGD                        EQU     H'0007'
WRERR                        EQU     H'0003'
WREN                         EQU     H'0002'
WR                           EQU     H'0001'
RD                           EQU     H'0000'

;----- ADCON1 Bits --------------------------------------------------------

ADCS2                        EQU     H'0006'
ADCS1                        EQU     H'0005'
ADCS0                        EQU     H'0004'

;==========================================================================
;
;       RAM Definition
;
;==========================================================================

        __MAXRAM H'1FF'
        __BADRAM H'06', H'08'-H'09', H'0D', H'1B'-H'1D'
        __BADRAM H'86', H'88'-H'89', H'8D', H'92'-H'94'
	__BADRAM H'106', H'108'-H'109', H'10C'-H'11F'
        __BADRAM H'186', H'188'-H'189', H'18C'-H'18D', H'190'-H'1EF'

;==========================================================================
;
;       Configuration Bits
;
;==========================================================================

_FCMEN_ON                    EQU     H'3FFF'
_FCMEN_OFF                   EQU     H'37FF'
_IESO_ON                     EQU     H'3FFF'
_IESO_OFF                    EQU     H'3BFF'
_BOD_ON                      EQU     H'3FFF'
_BOD_NSLEEP                  EQU     H'3EFF'
_BOD_SBODEN                  EQU     H'3DFF'
_BOD_OFF                     EQU     H'3CFF'
_CPD_ON                      EQU     H'3F7F'
_CPD_OFF                     EQU     H'3FFF'
_CP_ON                       EQU     H'3FBF'
_CP_OFF                      EQU     H'3FFF'
_MCLRE_ON                    EQU     H'3FFF'
_MCLRE_OFF                   EQU     H'3FDF'
_PWRTE_OFF                   EQU     H'3FFF'
_PWRTE_ON                    EQU     H'3FEF'
_WDT_ON                      EQU     H'3FFF'
_WDT_OFF                     EQU     H'3FF7'
_LP_OSC                      EQU     H'3FF8'
_XT_OSC                      EQU     H'3FF9'
_HS_OSC                      EQU     H'3FFA'
_EC_OSC                      EQU     H'3FFB'
_INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
_INTRC_OSC_CLKOUT            EQU     H'3FFD'
_EXTRC_OSC_NOCLKOUT          EQU     H'3FFE'
_EXTRC_OSC_CLKOUT            EQU     H'3FFF'
_INTOSCIO                    EQU     H'3FFC'
_INTOSC                      EQU     H'3FFD'
_EXTRCIO                     EQU     H'3FFE'
_EXTRC                       EQU     H'3FFF'

        LIST
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: PIC16F688 Intern oscillator 8MHz

Inlägg av JimmyAndersson »

Jag hittade felet i P16F688.INC

Den här raden:

;----- WDTCON Bits --------------------------------------------------------

..hade ett tecken före semikolonet som notepad visade som en fyrkant (precis som notepad visar LF och liknande).
Jag tog bort det tecknet och då fick jag inte felmeddelandet.

Jag har bara öppnat den filen med notepad (.INC är associerat till notepad), så tecknet borde ha kommit från något annat program.
Det är iallafall ytterligare ett lysande exempel på något som bara jag kan lyckas med.... :doh:



Nu när jag väl förstår felen så är de uppenbara. Ungefär som när någon påpekar en rostfläck i lacken och man bara efteråt bara ser den där rosten..
Att jag inte såg "rosthålen" innan är förstås jobbigt.
Hur mycket man än vill det så *kan* man inte med någon rätt beskylla mig för att vara slarvig.
Det är absolut inte så att jag skriker på hjälp så fort jag kör fast. När jag lägger upp en tråd så
är det när jag har suttit allt för länge (men jag har lärt mig ta pauser ..oftast :) ) och behöver lite input.

Slarvfel eller inte, jag vet inte varför jag ibland inte hittar felen.
Det kanske därför som jag är ljudtekniker/konsult/problemlösare och inte programmerare. :)


Det vore väldigt intressant att höra andras tankar kring detta.
Ni som tyckte det var jättesvårt i början och nu har det lossnat: Hur "gjorde" ni? 5-56? :)

Jag får nog ändra rubrik på den här tråden.
Ville ta tillfället i akt och skriva om detta nu när två jobbiga problem dök upp efter varandra.


edit:
"Det primära är alltid att ta ett fel i sänder och undersöka det för sig. Gärna i ordning eftersom
felen ofta är beroende på varandra, så att säga."


Det är nog så ja. Väldigt små steg, även om det är svårt att förstå vilka delar som hör ihop och
varför det (inte) fungerar som det gör. Det finns många sätt att missförstå (eller inte förstå alls) datablad och felmeddelanden, och då hjälper det inte att all information finns där. Den måste in i huvudet också. Så är det med allt nytt.
Efter ett tag lär man sig det nästan instinktivt. T.ex om bilen låter på ett sätt så är en viss del sliten. Startar PIC-kretsen om när man lutar sig framåt så beror det på en annan grej. Totalvägrar php-koden så kan man ha missat ett semikolon. Kurrar magen så är man hundrig. Ja, sånt där.

Jag tror att det är just det som man upptäckt när det har "lossnat", dvs när man kan sätta sig och programmera något utan några större problem och man vet exakt var man hittar svaren på problemen. Dit skulle jag vilja hitta när det gäller PIC-programmering.

Men det är väl bara att fortsätta programmera, göra små testcase när man kör fast och ta en sak i taget.
Hoppas det, för det har jag nämligen tänkt göra. :)
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: PIC16F688 Intern oscillator. Och: Hur löser man problem?

Inlägg av AndersG »

Ni som tyckte det var jättesvårt i början och nu har det lossnat:
Ta en promenad.. Sova på saken :)

Nä, allvarligt. Detdär med skräptecken som ställer till det har jag haft oxå, men oftast får jag problem för att jag antar att något skall vara på ett visst sätt, men sedan inte är det :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F688 Intern oscillator. Och: Hur löser man problem?

Inlägg av sodjan »

> Men det är väl bara att fortsätta programmera, göra små testcase när man kör fast och ta en sak i taget.

Visst är det så!

Sitter just nu med en web/html/cgi/Python grunka där det blir just så, *väldigt* små steg i taget
med mycket manualer, tester och Google mellan varje ny liten detalj som "fungerar"... :-)
Att det dessutom körs remote via Citrix mot en maskin som står i Huskvarna gör det
bara mer spännande... :-) Jag har mycket hjälp av W3Schools-HTML i just detta jobb...

Ibland är det något som man fastnar på och som man går och funderar på flera dagar
och så plötsligt så hittar man det å så rullar det på. Bl.a så har det blivit ett par vändor
till de som underhåller själva web-servern (i Australien) och den Python modul som används för att
få en "persistent" Python miljö (i Frankrike), d.v.s där det ligger en server process igång som direkt
kan köra .PY script on-the-fly. Det blir väldigt bra prestanda men det var lite buggigt ett tag...

Just att fixa små "text-case" när man kör fast tycker jag personligen att många missar.
Många kastar ihop en stor app direkt, och sedan när det inte fungerar så kastar man sig på "hjälp-knappen".

Och att fixa en komplett "reproducer" när man söker hjälp borde också vara lite av en standard-åtgärd.
Så snart du postade en komplett kod så tog det ju bara ett par minuter för mig att ladda den i ett
test-projekt i MPLAB och se felen ganska direkt. Jag har ett färdigt test-projekt i MPLAB där jag
snabbt kan ladda problem-kod från forumet, det måste dock vara komplett och körbart för att det
ska ge något.

Jag tycker nog att tekniken att komma framåt är ungefär densamma helt oberoende på
vad det handlar om. COBOL, HTML, Python, PIC assembler eller något helt annat. Det är
bara att gräva och gräva tills det fungerar.

Felet från INC filen var ju lite märklig eftersom de filerna aldrig redigeras och
i princip aldrig ska ge några fel (om det inte är en bugg i MPLAB distributionen,
men det är knappast det första man ska utgå från :-) ).

> Hur mycket man än vill det så *kan* man inte med någon rätt beskylla mig för att vara slarvig.

Jag hoppas att det inte lät så... :-)

(Att lägga upp en källkod och en lista med felmeddelanden som inte ens hör ihop, är dock enbart slarv
och väldigt förvirrande. Jag har svårt att se att det någonsin skulle vara motiverat att göra det... :-) :-) )
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: PIC16F688 Intern oscillator. Och: Hur löser man problem?

Inlägg av vfr »

Håller fullständigt med!

Det är dom "metoderna", att t.ex göra små steg och göra saker reproducerbart, som är dom verkliga erfarenheterna. Inte att kunna ett visst språk eller en viss processors assemblerkod. Kan man metoderna så är det applicerbart på dom flesta saker.
ToPNoTCH
Inlägg: 5158
Blev medlem: 21 december 2009, 17:59:48

Re: PIC16F688 Intern oscillator. Och: Hur löser man problem?

Inlägg av ToPNoTCH »

Som ett avslutande tips för att undvika knepigheter med config så brukar jag hålla mig till de i MPASM medföljande mallarna.

(Under programkatalogen \Microchip\MPASM Suite\Template\Code)

Om man inte har någon bättre själv.

Sedan räcker det inte att man av misstag skriver i bifogade include filer (har man där att göra ens ??) man måste även ha sinnesnärvaron att spara när man stänger dom (för att strö lite salt i dina vidöppna sår) :badgrin:

Kul att det löste sig.
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: PIC16F688 Intern oscillator. Och: Hur löser man problem?

Inlägg av JimmyAndersson »

"man måste även ha sinnesnärvaron att spara när man stänger dom"

Precis! Det gör det hela lite skumt.
Visserligen brakade åskan lös (och slog ner i vattentornet på andra sidan gatan) när jag hade bl.a den filen öppnad,
men jag sparade bara i MPLAB (med musen) och stängde snabbt ner allt som var öppet.

Till saken hör att jag har dålig erfarenhet av att spara med tangentkombinationer (t.ex CTRL+S) pga att jag för många år sedan använde program (och Win98) där kortkommandon inte alltid fungerade. Vi kallade det för "PC-sjukan" och det innebar att man antingen tryckte CTRL+S en massa gånger, eller hellre sparade genom att klicka i menyn.
Sedan dess så är det ytterst få program där jag använder kortkommandon för att spara. (Kommer bara på Eagle och Notepad++ nu.)


Att jag överhuvudtaget har t.ex P16F688.INC öppen är för att se hur diverse "symboler" ska se ut.
Sedan kan det tydligen bli lite fel ändå, men nu har jag lärt mig att config-raderna skrivs lite annorlunda för olika PIC-kretsar. :)



Sodjan:
>> Hur mycket man än vill det så *kan* man inte med någon rätt beskylla mig för att vara slarvig.

> Jag hoppas att det inte lät så... :-)

Nej då. Ingen fara. :) Det var inte riktat till någon. Jag bara tänkte högt för att försöka hitta vad såna här fel kan bero på. :)




Det var väldigt intressant att läsa era tips och erfarenheter. :tumupp: :tumupp:
Jag ska fortsätta med koden (och problemet i första inlägget) och tänka på detta. :)
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: PIC16F688 Intern oscillator. Och: Hur löser man problem?

Inlägg av AndersG »

Ett annat bra tips är att ändra en sak åt gången då man felsöker och att ha versionshantering. Antingen typ CVS eller oxå kopiera filer manuellt.
Skriv svar