Avatar billede yumatci Nybegynder
28. november 2006 - 09:53 Der er 33 kommentarer

PIC microcontroller videre?

Hej jeg har nu fået lavet et program:

STATUS    equ 03h
TRISB    equ 86h
PORTB    equ 06h

    bsf  STATUS,5
    movlw b'00000000'
        movwf TRISB
        bcf  STATUS,5
        movlw b'00100000'
        movwf STATUS

    movlw b'00000001'
        movwf PORTB
end       


og den compiler fint men jeg får nogle fejl alligevel ved godt hvad der er galt men nogle der kan hjælpe for ved ikke selv hvordan jeg retter dem:

Building LEDON.HEX...

Compiling LEDON.ASM:
Command line: "C:\PROGRA~1\MPLAB\MPASMWIN.EXE /p16F870 /q F:\PROVE\LEDON.ASM"
Message[302] F:\PROVE\LEDON.ASM 7 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Warning[205] F:\PROVE\LEDON.ASM 14 : Found directive in column 1. (end)

Build completed successfully.
Avatar billede dunderfjert Nybegynder
28. november 2006 - 11:49 #1
Der er ikke noget galt som sådan med assembleringen, det er warnings (advarsler) hvor specielt 302'eren er latterlig ubrugelig.

Men dit program vil gå i vasken hvis du bare lader den smutte ud i det blå.

END direktivet sætter ikke controlleren i stå, den vil hele tiden lave noget så længe der er strøm på og mclr er høj.

Noget i retning af det her:

STATUS    equ 03h
TRISB    equ 86h
PORTB    equ 06h

start
    bsf  STATUS,5
    movlw b'00000000'
        movwf TRISB
        bcf  STATUS,5  ;<- ligegyldig instruction du sætter jo status lige bagefter.
        movlw b'00100000'  ;<- Portb er altså i bank 0
        movwf STATUS

    movlw b'00000001'
        movwf PORTB
    goto  start

end   

Jeg ved ikke helt hvad du regner med der vil ske men Porb pin 0 vil blive sat høj hele tiden.
Avatar billede yumatci Nybegynder
28. november 2006 - 12:04 #2
Hmm det jeg er lidt i tvivl om er hvordan man skifter imellem de forskellige banker? altså hvis jeg starter med at skrive "bsf  STATUS,5" kommer jeg så i bank1 eller? og hvis jeg så skriver "bcf  STATUS,5" kommer jeg så tilbage i bank0 eller? Det jeg vil have mit program til i starten er bare at sætte Portb pin 0 til høj sådan jeg får en diode til at lyse. Bare sådan jeg ved om mit board virker som et start test program. Kan du hjælpe?
Avatar billede dunderfjert Nybegynder
28. november 2006 - 12:31 #3
Det står altså i manualen.
Der er 4 banker og dermed 2 bit i STATUS reg. der skifter mellem dem.
Sååh at sætte/cleare bit 5 er reelt ikke nok.

Selvom programmet jeg postede nok kunnne lave anderledes burde det virke.
Avatar billede yumatci Nybegynder
28. november 2006 - 13:02 #4
Hmm jah men har også prøvet at kigge i manualen og så godt der var 4 banker. Men forstår bare ikke helt det med hvordan man skifter mellem dem? hvordan funker det der med bit og sådan du siger der er 2 bit og at 5 ikke er nok forstår ikke helt?
Avatar billede dunderfjert Nybegynder
28. november 2006 - 13:30 #5
Du har ikke sådan godt styr på bit og bytes ?
Jeg mener du forstår ikke hvad der menes med "bit 5" og "2 bit" ?

Det er jo lidt uheldigt når hele controlleren bygger på det.
Avatar billede yumatci Nybegynder
28. november 2006 - 14:40 #6
Nej forstår det ikke så godt :( Kan jeg læse om det et eller andet sted eller kan du forklare mig det?
Avatar billede yumatci Nybegynder
28. november 2006 - 14:56 #7
Jo altså jeg forstår det godt nogenlunde er det ikke sådan her:
Hvis du siger jeg har en byte der ser sådan ud 00001001
og jeg så skal vælge bit 5 er bit 5 så ikke 1?
Og hvis du siger der er 2 bit så er der kun sådan her 00, 01, 11, 10
Er det så mine banker de fire 2 bit altså: 00, 01, 11, 10?? og hvordan funker det så eller er jeg helt forkert på den?
Avatar billede yumatci Nybegynder
28. november 2006 - 15:29 #8
Sådan som jeg har forstået det ud fra databladet så:
Altså hvis jeg cleare STATUS bit5 så kommer jeg i Bank0
Hvis jeg sætter STATUS bit5 kommer jeg i bank1
Hvis jeg cleare STATUS bit6 kommer jeg i bank2
Og hvis jeg sætter STATUS bit6 kommer jeg i bank3

er det rigtigt nu? undskyld hvis jeg forvire dig lidt. Men er selv lidt forviret :(
Avatar billede dunderfjert Nybegynder
29. november 2006 - 11:40 #9
0->00
1->01
2->10
3->11

Husk bit'ne tælles fra højre begyndende med 0 så det sidste er bit7 (i en byte).

Hvis du sætter bit5 er du enten i bank 2 eller 4 ikk' for du ved jo ikke hvad bit 6 står til. Ergo er det reelt ikke nok at sætte et bit.
Avatar billede yumatci Nybegynder
29. november 2006 - 18:04 #10
ahh tror jeg forstår nu :) altså hvis jeg vil i:

Bank1: bcf STATUS,5    og  bcf STATUS,6    bliver til  00
Bank2: bcf STATUS,5    og  bsf STATUS,6    bliver til  01
Bank3: bsf STATUS,5    og  bcf STATUS,6    bliver til  10
Bank4: bsf STATUS,5    og  bsf STATUS,6    bliver til  11

Har jeg forstået det rigtigt nu?
Avatar billede dunderfjert Nybegynder
30. november 2006 - 09:36 #11
Jooh det vil jeg mene.
Avatar billede yumatci Nybegynder
30. november 2006 - 10:06 #12
Godt ;)
Jeg har nu lavet følgende program så:

STATUS  equ 03h
TRISB    equ 86h
PORTB    equ 06h

start
        bsf  STATUS,5
        bcf  STATUS,6
        movlw b'00000000'
        movwf TRISB
        bcf STATUS,5
        bcf STATUS,6

        movlw b'00000001'
        movwf PORTB
        goto  start

end   


Og jeg compilere det og trykker så "Program" så den lægger programmet ned i PICen og der kommer ingen fejl så det må jo gå fint.
Nu kommer der så til at stå "Waiting for user command" ud for status i mplab. Hvad skal jeg så nu for at få PICen til at køre? Hvis jeg trykker på "Run" får jeg en fejl "Error performing requested operation" ??
Avatar billede dunderfjert Nybegynder
30. november 2006 - 11:43 #13
Jeg vil gætte på at den "tror" du vil debugge.

Men har du sat configuration ?
Altså det med: Watchdog on/off, Xtal mode etc.

Jeg kan ikke huske om det dengang var lagt ud som en menu eller om man skulle (kunne) sætte det i program filen.
Avatar billede yumatci Nybegynder
30. november 2006 - 12:56 #14
Det er lagt ud som en menu. Jeg ved ikke hvad den helt bestemt skal sættes til men jeg har sat det til:

Device: PIC16F870
Oscillator: RC
Watchdog Timer: Off/Disable
Power Up Timer: Off/Disable
Brown out Detect: Off/Disable
Low Voltage Program: Disable
Code Protect Data EE: code protection Off
Flash Memory Write: Memory written to by EECON
Code Protect: Code Protection Off

Er det rigtigt nok? hvordan kan jeg evt. vide hvordan de skal stå ellers?
Avatar billede dunderfjert Nybegynder
30. november 2006 - 14:40 #15
Oscillator: RC

Du kører da med crystal ikk´?

Oscillator: XT
evt. HS  (hvis det fandtes dengang)

RC er modstand-kondensator styret.

Resten lyder ok, måske skulle du bruge Power Up Timer: Enable
Avatar billede yumatci Nybegynder
30. november 2006 - 16:08 #16
Jo jeg kører med crystal mit diagram er: http://mytestpage.1go.dk/PIC16F870.JPG
Jeg har stillet Oscillator: til XT og har også prøvet HS
Jeg har sat Power Up Timer til Enable..

Programmet bliver lagt godt nok over i PICen når jeg trykker "Program"
Men når jeg trykker "Run" får jeg stadig meddelsen: "Error performing requested operation"???
Avatar billede dunderfjert Nybegynder
30. november 2006 - 17:15 #17
Jamen du skal ikke "runne" nogen ting. Hvis "Program" forløb succesfully og verification ikke fandt fejl.
Så skulle du bare kunne fjerne ICD'en og måske slukke og tænde PIC'en så skal den køre selv.
Med mindre den har hevet noget debugging stuff ned også. Det skal du nok have slået indtil videre.
Avatar billede yumatci Nybegynder
30. november 2006 - 18:05 #18
Hmm hvis jeg har slået "Enable Debug Mode" til når jeg trykker "Program" så kommer der ingen fejl men hvis jeg har slået "Enable Debug Mode" fra, så stopper den ud for STATUS: "Program ID  Pass" Skal "Enable Debug Mode" slåes til eller fra?
Avatar billede yumatci Nybegynder
30. november 2006 - 18:16 #19
Nåhh den skal hvis stoppe ved "Program ID Pass" hvis "Enable Debug Mode" er slået fra skal den ikke? Nåh men så trykker jeg "Verify" og så får jeg fejl: http://mytestpage.1go.dk/verify.JPG
Avatar billede dunderfjert Nybegynder
30. november 2006 - 19:11 #20
Device => Det er blev fundet i PIC'en
Buffer => Det der skulle være.
Address  => Adressen altså pladsen hvor instruktionen ligger.

Der er ikke kommet noget over i PIC'en.

Du har spænding på boardet hvor PIC'en sidder mens du "Program" ?
Avatar billede yumatci Nybegynder
30. november 2006 - 19:26 #21
Forstod ikke helt hvad:
Device, buffer og address er var det de 3 her:
Program Memory Fail<0x6E0>
EEPROM Memory  Fail
Fuse Bits      Fail<0E01|3F31>
eller?

Jah jeg havde støm på boardet men som du ser på mit diagram: http://mytestpage.1go.dk/PIC16F870.JPG 
har jeg ingen kordensator mellem plus og minus kan det være det der gør det?
Avatar billede yumatci Nybegynder
30. november 2006 - 19:29 #22
Sorry har fundet ud af hvor du læste det med: Device, buffer og address..
Men tror du det gør noget med den kordensator?
Avatar billede dunderfjert Nybegynder
30. november 2006 - 20:24 #23
Det er næppe kondensatoren. Er forbindelsen iorden til rb6 og 7 og de er ikke ombyttet ?
Det er lidt mistænkeligt at den læser 0x0000 fra controlleren da den normalt er noget med 0x3fff altså høje værdier. De kunne få mig til at tro der ingen forbindelse er eller dat pin ligger til stel.
Alternativt har du sluttet kontakten til mclr så den trækker til stel.
MCLR skal komme omkring 11-12v under program sekvensen.
Avatar billede yumatci Nybegynder
30. november 2006 - 21:41 #24
rb6 og rb7 skulle gerne være iorden har lige tjekket.
hvad er dat pin?
Nej jeg har ikke sluttet MCLR til stel det skulle jeg da heller ikke eller hvad? Hmm men hvis jeg ohmer fra pin MCLR og til stel så kommer der ca 26Kohm tror du det kan være fejlen?
Hvor kan jeg se hvad MCLR kommer op på altså du siger den skal op på 11-12v?
Avatar billede dunderfjert Nybegynder
01. december 2006 - 12:13 #25
Jeg kan ikke sige hvad det kan være. Prøv at gennemgå manualerne fx. omkring trouble shooting etc.
Avatar billede dunderfjert Nybegynder
02. december 2006 - 17:55 #26
Et skud i tågen ..
Den nye ICD2 bruger ikke PGM pin (PORB3) men jeg kommer i tvivl om den gamle ICD ikke gjorde det ?
Jeg mener at huske den faktisk havde PGM ført frem til ICD'en.
Avatar billede dunderfjert Nybegynder
03. december 2006 - 10:27 #27
Jeg har rodet nogle gamle noter igennem og kan se det var en dengang kendt sag.
PGM rb3 på PICen skal have en pull down til stel. Altså en 10kohm fra rb3 til stel.
Avatar billede yumatci Nybegynder
05. december 2006 - 18:17 #28
Nu har jeg loddet en 10Kohm modstand mellem Rb3 og stel men får stadig helt tomme data under dervice når jeg trykker "Verify" :( Prøver lige at kigge efter om det hele er ligesom på diagramet.. Men du har ikke nogen anden ide om hvad det kunne være?
Avatar billede dunderfjert Nybegynder
05. december 2006 - 18:57 #29
... og PGm signalet ført til ICD ?
Avatar billede yumatci Nybegynder
06. december 2006 - 11:33 #30
Ups havde jeg glemt.. Nu er der også en ledning fra ICDen til Pgm.. Når jeg trykker "Verify" får jeg følgende: http://mytestpage.1go.dk/verify.JPG  altså hvor der står pass ud for.. Betyder det ikke den lykkedes uden fejl? Men når jeg tager boardet fra ICDen blinker min diode ikke?
Avatar billede dunderfjert Nybegynder
06. december 2006 - 13:57 #31
Det ser ud som om den fik den programmed.

Det program får ikke LED'en til at blinke men lyser den ?
..altså den på rb1 ?
og den anden er slukket ?
Avatar billede yumatci Nybegynder
06. december 2006 - 14:25 #32
Hmm har ikke nogen LED på rb1 men har en på rb0 burde dette program ikke sætte rb0 høj?:

STATUS  equ 03h
TRISB    equ 86h
PORTB    equ 06h

start
        bsf  STATUS,5
        bcf  STATUS,6
        movlw b'00000000'
        movwf TRISB
        bcf STATUS,5
        bcf STATUS,6

        movlw b'00000001'
        movwf PORTB
        goto  start

end
Avatar billede yumatci Nybegynder
06. december 2006 - 14:30 #33
hov undskyld det er bare mig nu lyser den ;) det var fordi jeg har sat sådan en stor modstand foran dioden at man næsten ikke kunne se den lyste hehe..

Du skal have tusind mange tak for hjælpen dunderfjert ;) du har virkelig været en stor hjælp nu skal jeg bare til at lege lidt.. MANGE TUSIND TAK ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester