PIC18F458 minimum's opkobling..

Hejsa

Jeg er ved at forsøge mig med PIC18 i forbindelse med et projekt. Jeg har besluttet først at wrappe et minimum af forbindelser op, så jeg blot ved at der er hul igennem.

til dette formål har jeg lavet diagrammet:

formatting link

Dette er wrappet op, og RS232 forbindelsen testet, ved at kortslutte de to ben der går til CPU Jeg har undladet at implementere reset knappen endnu, og blot hevet ben

1 høj, vha en 1kohm modstand.

Min kildekode til PIC'en ser således ud:

----------------------------------------------------------------------------------------- list p=PIC18F458 ; set processor type list n=0 ; supress page breaks in list file include

CONFIG OSC = EC CONFIG PWRT = ON ; Extern OSC og Power up timer CONFIG WDT = OFF ; ;************************************************************ ; Reset and Interrupt Vectors

org 00000h ; Reset Vector goto Start

org 00008h ; Interrupt vector goto IntVector

;************************************************************ ; Program begins here

org 00020h ; Beginning of program EPROM Start clrf LATB ; Clear PORTB output latches clrf TRISB ; Config PORTB as all outputs bcf TRISC,6 ; Make RC6 an output

movlw 81h ; 19200 baud @ 10MHz movwf SPBRG ; Flyt X til Baud Rate Generator Register bsf TXSTA,SYNC ; Synkron overførsel bsf TXSTA,CSRC ; bsf TXSTA,TXEN ; Enable transmit bcf TXSTA,BRGH ; Select low baud rate bsf RCSTA,SPEN ; Enable Serial Port bsf RCSTA,CREN ; Enable continuous reception

bcf PIR1,RCIF ; Clear RCIF Interrupt Flag bsf PIE1,RCIE ; Set RCIE Interrupt Enable bsf INTCON,PEIE ; Enable peripheral interrupts bsf INTCON,GIE ; Enable global interrupts

;************************************************************ ; Main loop

Main movlw 48h ; H call Transmit ; movlw 45h ; E call Transmit ; movlw 4ch ; L call Transmit ; movlw 4ch ; L call Transmit ; movlw 4fh ; O call Transmit ; movlw 20h ; call Transmit ; movlw 57h ; W call Transmit ; movlw 4fh ; O call Transmit ; movlw 52h ; R call Transmit ; movlw 4ch ; L call Transmit ; movlw 44h ; D call Transmit ;

Loop goto Loop ; loop to self doing nothing

;************************************************************ ; Transmit Character routine Transmit btfss TXSTA,TRMT ; Er Transmit buffer fuld ? goto Transmit ; Hvis fuld, test igen

goto Sendchar ; Hvis tom, hop til næste rutine Sendchar movwf TXREG ; Flyt fra WREG register til transmit register

return ;************************************************************ ; Interrupt Service Routine

IntVector ; save context (WREG and STATUS registers) if needed.

btfss PIR1,RCIF ; Did USART cause interrupt? goto OtherInt ; No, some other interrupt

movlw 06h ; Mask out unwanted bits andwf RCSTA,W ; Check for errors btfss STATUS,Z ; Was either error status bit set? goto RcvError ; Found error, flag it

movf RCREG,W ; Get input data call Transmit ; goto ISREnd ; go to end of ISR, restore context, return RcvError bcf RCSTA,CREN ; Clear receiver status bsf RCSTA,CREN movlw 0FFh ; Light all LEDs movwf PORTB goto ISREnd ; go to end of ISR, restore context, return

OtherInt goto $ ; Find cause of interrupt and service it before returning from ; interrupt. If not, the same interrupt will re-occur as soon ; as execution returns to interrupted program.

ISREnd ; Restore context if needed. retfie

end

--------------------------------------------------------------------------------------------

Jeg kan dog ikke rigtigt få hul igennem. Da jeg ikke har mulighed for at lege med ombrænding af PIC'en pt (brænder står på uni), vil jeg høre om der er noget i vejen for at undlade at forbinde de resterende ben, da disse ikke benyttes (det burde jo være ligemeget om der er noget på benene, når der ikke læses fra dem, og INT benene er jo sat til output (PORTB).)

Er interesseret i om ideen bag designet, og koden er helt hen i vejret, eller om det burde fungere (jeg vil som sagt ikke udeluykke at PIC'en er brændt forkert)

MVH Jakob Fromm

Reply to
Jakob Fromm
Loading thread data ...

"Jakob Fromm" skrev i en meddelelse news:4331ca95$0$255$ snipped-for-privacy@news.sunsite.dk...

-----------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------

Det var godt nok et ambitiøst "Test-om-der-er-hul-igennem-program". Tror du ikke det ville være smart at lave et lille program, der f.eks. toggler et port-ben for at teste om din prossesor overhovet triller rundt ;o)

Reply to
Allan Soerensen

"Jakob Fromm" skrev i en meddelelse news:4331ca95$0$255$ snipped-for-privacy@news.sunsite.dk...

Denne er harmløs, men når man falder over sådan noget er der sikkert også andre bugs i dit program.

Ups, det er ikke så godt. Du bruger jo netop WREG og STATUS i din interrupt-rutine, så du er nød til at gemme indholdet af dem og så genskabe dem igen når du afslutter dit interrupt.

Her burde du så genskabe WREG og STATUS, så de er intakte når du vender tilbage til dit hovedprogram.

Som sagt er det alt for stort et program til en hul-test når du hverken ved om dit hardware virker, om din processor er brændt rigtig og dit porgam ikke er fejlfrit.

Reply to
Allan Soerensen

Hej

Husk at digital OG analog forsyning SKAL være forbundet eller sker der intet!!! (bitter erfaring, dog ikke min egen:-)

PS: det skulle vel ikke være jfpe04?

--
Hilsen Mikkel
------
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Reply to
Mikkel Lund

Det lykkedes efter genbrænding af PIC'en at få systemet op at køre, og det snurrer lige så stille efterhånden. Næste stop er bootloader :D

Og jo, det er jfpe04 :D

Tak for forslagene

/Jakob Frommm

Reply to
Jakob Fromm Pedersen

Efter genbrænding af PIC, virker det nogenlunde :D

Og ja, det er jfpe04

Næste mål er enten picbrænder, eller bootloader (bliver nok en P16PRO brænder

formatting link

/Fromm

Reply to
Jakob Fromm Pedersen

Her bliver jeg nysgerrig. Hvad er bug'en i dette tilfælde ?

Jeg har netop problemer med at udføre noget lignende:

------------------------------------------------------------------------- movf RCREG,W ; Get input data cpfseq 68h call hello ; Hvis input = 68h, så skal "hello" ikke kaldes

movwf TXREG ; Echo character back goto ISREnd ; go to end of ISR, restore context,

-------------------------------------------------------------------------

Og så sådan et helt generelt spørgsmål, lidt relateret til ovenstående kode. Hvordan laver jeg nemt et kald såfremt mit input er lig en bestemt værdi (BEQ på M68000), på PIC, kan man så vidt jeg kan se, kun springe kode over.

MVH Jakob Fromm

Nu med PIC brænder, og nogenlunde fungerende board.

Reply to
Jakob Fromm

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.