nonkel_dw
nonkel dw
Hoi jongens,
Ik ben al een hele namiddag bezig om een 18F452 pic aan de praat te krijgen in ASM.
Ik heb een werkend stukje programma van uit een 16F, ik heb de bank switching verwijderd, en ook de nodige registers aangepast.
Maar na het inladen van de hex doet de microcontroller niets.
Moet er in een 18F versie nog een speciale configuratie gedaan worden zodanig dat het programma begint te lopen?
nonkel_dw
nonkel dw
Heb ik gedaan, maar zie niet direct fouten of verschillen met een 16F microcontroller.
Dit is de init
ORG 00h
goto init
init
;zet alles digitaal
CLRF PORTA ;maak porta laag
CLRF PORTB ;maak portb laag
CLRF PORTC
CLRF PORTD
movlw 0x07
MOVWF ADCON1
; BSF STATUS,RP0 ;Select Bank1
MOVLW B'111111' ;maak van poort A INgangen
MOVWF TRISA
MOVLW b'00000011' ;maak van poort B uitgangen
MOVWF TRISB
MOVLW B'10011000'
MOVWF TRISC
BSF TRISC,7 ;op poortb,1 na
MOVLW B'00000000'
MOVWF TRISD
MOVLW B'00000011'
MOVWF TRISE
CLRF LATB
MOVLW 04h ;waarde voor baudrate
MOVWF SPBRG ;in het register setten
BSF TXSTA,BRGH ;high speed
BCF TXSTA,SYNC ;Async connection
BSF PIE1,RCIE ;Set recieve interrupt
; Stel de pic in alles digitaal
; BCF ADCON1,3
; BSF ADCON1,2
; BSF ADCON1,1
BSF INTCON2,6 ; flankdetectie op stijgende flank voor interupts
;ga terug naar bank 0
;
;$$$$$$$$$$$$$$$$$$$$i2c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
; BSF SSPCON,SSPEN ; ENABLE SERIEEL ONTVANGEN
; BSF SSPCON,SSPM3
; BSF SSPCON,SSPM2
; BSF SSPCON,SSPM1
; BCF SSPCON,SSPM0
; Uart instellen
BSF RCSTA,RX9 BSF RCSTA,CREN
BSF RCSTA,SPEN ;Enable UART
MOVF RCREG,W ;clear RCREG
MOVF RCREG,W ;clear RCREG
MOVF RCREG,W ;clear RCREG
BSF INTCON,PEIE ;Enable interrupts
BSF INTCON,GIE
bsf INTCON,INT0IE
BSF INTCON,4 ; zet interupt on
;PWM INNSTELLEN
; PWM 1
BSF CCP1CON,3
BSF CCP1CON,2
BSF CCP1CON,4
BSF CCP1CON,5
; PWM 2
BSF CCP1CON,5
BSF CCP1CON,4
BSF CCP2CON,3
BSF CCP2CON,2
BSF T2CON,TMR2ON
Hier een Begin stukje van mij
Probeer eerst eens een uitgang te laten pulsen.
en check die uitgang met de scoop
;---- HEADER -------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------
LIST p=18F452 ;
INCLUDE <p18f452.inc> ;
errorlevel -302 ;surpress warning 302
;-------------------------------------------------------------------------------------------
;---- CONFIGURATION BITS -------------------------------------------------------------------
;-------------------------------------------------------------------------------------------
__CONFIG _CONFIG1H, _HSPLL_OSC_1H
__CONFIG _CONFIG2H, _WDT_OFF_2H
__CONFIG _CONFIG4L, _LVP_OFF_4L
;-------------------------------------------------------------------------------------------
;---Reset-Vector ---------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------
ORG 0x000 ;reset vektor
goto start ;
;-------------------------------------------------------------------------------------------
;--- Included Subroutines ------------------------------------------------------------------
;-------------------------------------------------------------------------------------------
#INCLUDE <Definitions.inc> ;
#INCLUDE <IO.inc> ;
#INCLUDE <Setup.inc> ;
;
#INCLUDE <Serial_IN2.inc> ;
;-------------------------------------------------------------------------------------------
start call Setup ;
;-------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------
#INCLUDE <Fase_A.inc> ;
#INCLUDE <Fase_B.inc> ;
#INCLUDE <Fase_C.inc> ;
#INCLUDE <Fase_D.inc> ;
#INCLUDE <Fase_E.inc> ;
#INCLUDE <Fase_F.inc> ;
#INCLUDE <Fase_G.inc> ;
#INCLUDE <Fase_H.inc> ;
;-------------------------------------------------------------------------------------------
end
Ik zie net je posting met data
ik zie "INCLUDE <p18f452.inc>"niet staan
als je in de real asm data kijkt kan je zien wat er echt in bytes de cpu uitvoert
Op 3 juni 2009 18:51:05 schreef nonkel_dw:
Heb ik gedaan, maar zie niet direct fouten of verschillen met een 16F microcontroller.
Dit is de init
Include?
Config?
Sorry speciaal voor Henry S.
#include "http://www.circuitsonline.net/forum/faq/2"
Hij miste het begin .. dus geef hem richting ...
ipv "read datasheet"
Voor de rest mag het het toch zelf doen ... zelf ontdekken
zelf zien .. maar als je de eerste start zelf niet kan maken .. is het echt moeilijk in assembler
nonkel_dw
nonkel dw
Dit staat ook in men file alleen was ik dit vergeten te copieren
list p=18f452, n=48, t=ON, st=OFF
#INCLUDE <P18F452.INC>
ORG 0x08 ;Interrupt vector
MOVWF W_SAVE ;save context,
MOVF STATUS,W ;save STATUS, PCLATH & W
MOVWF S_SAVE
MOVF PCLATH,W
MOVWF P_SAVE
goto int
Ik heb best al wat ervaring, alleen zie ik hier niet echt een fout, ook geeft de compiler geen fout.
[Bericht gewijzigd door nonkel_dw op (26%)]
Op 3 juni 2009 19:08:15 schreef x21r:
Sorry speciaal voor Henry S.#include "http://www.circuitsonline.net/forum/faq/2"Hij miste het begin .. dus geef hem richting ...
ipv "read datasheet"
Als je overstapt van 16F naar 18F is het eerste wat je doet de datasheet lezen.
Waar staan de interrupt routines?
Zoals het nu staat loopt de init dwars over de low en high interrupt vectors heen.
nonkel_dw
nonkel dw
nee nog niet dit ga ik nu eens maken
ik kom zo ook niet echt uit
mijn blink a led
Deze doet het ook niet...
list p=18f452
#INCLUDE <P18F452.INC>
VERTRAGING EQU 0X20
VERTRAGING2 EQU 0x21
ORG 00h
goto init ;Initialize PIC
init
CLRF PORTA ;maak porta laag
CLRF PORTB ;maak portb laag
CLRF PORTC
CLRF PORTD
movlw 0x07
MOVWF ADCON1
MOVLW B'00000000'
MOVWF TRISD
MAIN
BSF PORTD,6
CALL DELAY
CALL DELAY
BCF PORTD,6
CALL DELAY
CALL DELAY
GOTO MAIN
DELAY
MOVLW D'255'
MOVWF VERTRAGING
MOVWF VERTRAGING2
LUS
DECFSZ VERTRAGING,F
GOTO LUS
DECFSZ VERTRAGING2,F
GOTO LUS
RETURN
END
[Bericht gewijzigd door nonkel_dw op (82%)]
Over die blink a led en config ..heb ik in mijn eerste post al gemeld
blij dat we het er over eens zijn H.S
Wat ik nog meer heb staan in mijn Setup ...asm
clrf PORTA,0 ;Clear Outputlatch portA
clrf PORTB,0 ;Clear Outputlatch portB
clrf PORTC,0 ;Clear Outputlatch portC
clrf PORTD,0 ;Clear Outputlatch portD
clrf PORTE,0 ;Clear Outputlatch portE
movlw 0x07 ;
movwf ADCON1,0 ;all inputs are digital movlw b'11010111' ;
movwf TRISC,0 ;portC.7: input HARDWARE UART
Ik weet niet meer waarom die ,0 er achter staat ..ik weet wel dat het werkt
Ps kijk eens wat de real assembler output is
nonkel_dw
nonkel dw
Idd Henry dit werkt nu wel na de config lijn er in gezet te hebben met een 16f versie werk ik altijd met de config lijn van Mplab maar hier schijnt het niet te werken.
Is er een vervang comando voor RRF en skpc bij een 18F versie
Ik heb voor RRF deze vervang comando's gevonden RRCF,
RRNCF
Iemand die hier ervaring mee heeft?
Kijk eens naar de template-files van de 18F-PICs, met name de plaats van de interruptvectoren.
Laat eens duidelijk zien hoe je config-instellingen eruit zien.
Als je niet uit de datasheet kan opmaken wat de instructies RRFNC en RRFC doen, is misschien in assembler programmeren wat te hoog gegrepen.
Maak onderscheid tussen PORT en LATCH. Stel ook altijd de TRIS van de poorten in, etc.
nonkel_dw
nonkel dw
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Is een 14bit pseudo-instructie; staat in de helpfile:
SKPC = Skip on Carry = BTFSS STATUS,C Of met 18F kun je BC/BNC gebruiken...
[Bericht gewijzigd door Arco op (16%)]