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)
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.
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?
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?
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?
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 :(
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
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" ??
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?
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"???
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.
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?
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
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?
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.
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?
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.
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.
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?
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?
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 ;)
Synes godt om
Ny brugerNybegynder
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.