Avatar billede yumatci Nybegynder
18. februar 2006 - 14:40 Der er 40 kommentarer

Pic microcontroller vidregående

Hej jeg er nu kommet videre med mit projekt: http://www.eksperten.dk/spm/681608

Og har nu fået lavet mit board som næsten ser sådan ud: http://exp.roskvist.net/PIC_sch.bmp

Jeg har også downloadet MPLAB IDE version 5,4 og fået lavet et program til at tænde og slukke for en diode der er koblet til RA1 på Pic'en:

;Set constants for the registers
STATUS  equ  03h
TRISA    equ  85h
PORTA    equ  05h
COUNT1  equ  08h
COUNT2  equ  09h


;Set all ports to output
        bsf    STATUS,5
        movlw  00h
        movwf  TRISA
        bcf    STATUS,5


;Set Ra1 to 1 (Turn the LED on)
Start    movlw  02h
        movlf  PORTA



;Loop for the delay time
Loop1    decfsz  COUNT1,1
        goto    Loop1
        decfsz  COUNT2,1
        goto    Loop1



;Set Ra1 to 0 (Turn the LED Off)
        movlw 00h
        movlf PORTA



;Loop for the time before turning the LED on
Loop2    decfsz  COUNT1,1
        goto    Loop2
        decfsz  COUNT2,1
        goto    Loop2



;Start from the beginning again
        goto  START


end


Men nu skal jeg til at brænde er det noget du kan hjælpe med dunderfjert?

Jeg har prøvet selv men den vil ikke kontakte med mit board ved ikke om jeg gør det rigtigt!
Avatar billede dunderfjert Nybegynder
18. februar 2006 - 16:44 #1
Du bruger rb6, rb7, mclr, +, - og ikke andet vel ?

Hvad melder den af fejl ?
Avatar billede yumatci Nybegynder
19. februar 2006 - 09:55 #2
Jeg bruger også rb3 ligesom på dette diagram: http://exp.roskvist.net/PIC_sch.bmp

Det jeg gør er at jeg sætter strøm til mit board og sætter boardet til ICD brænderen. Så går jeg ind i MPLAB IDE 5.4 der skriver jeg program koden som jeg har vist ovenfor. Så går jeg op i menuen under "Picstart Plus" og trykker "Enable Programmer" og så skriver den at den prøver at kontakte brænderen, men efter et stykke tid kommer denne meddelse: "Picstart Plus not found on COM1"  Gør jeg noget forkert skal jeg ikke trykke på den der hedder "Enable programmer" eller?
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 10:55 #3
rb3 har ikke noget med ICSP at gøre og bruges ikke her.

Du behøver ikke at skrive programmet først du skal kunne komme i kontakt med den.
Det er ikke en "PicStart" du har men en ICD. Jeg bruger nu ver. 7.30 og kan vanskeligt huske menuerne i tidligere versioner. Men der må være en "programmer" menu eller noget lignende. Der må du kunne finde ICD.

Fremgangs måden er sådan:
Du skriver programmet (gem endelig)
Assemblere det dvs. find menu pkt. "Build all" eller måske blot "Build".
Den begynder så at oversætte programmet til microcontroller sprog.
Det skulle lykkedes med en "build succeded" eller noget lign.
Først nu er du klar til at loade programmet over i uC.
Avatar billede yumatci Nybegynder
19. februar 2006 - 11:28 #4
Jeg har gjort som du sagde skiftet over så den ved jeg bruger ICD. Så har jeg skrevet koden og gemt. Men når jeg vil compile/assemblere så går jeg op i "project" menuen og der står "build all" men man kan ikke trykke på den! der står også "Build node" den trykkede jeg på istedet og så ligner det at den begynder at compile men så skriver den denne meddelse:
------------------------------------------------------------------------------
Building LEDON.ASM...

Command line: " +m  LEDON.ASM"

MPLAB is unable to find output file "LEDON.hex". This may be due to a compile, assemble, or link process failure.

Build failed.
------------------------------------------------------------------------------
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 11:42 #5
Hvad står der ellers i den menu ?

Der er ikke en "Quickbuild" vel ?

Hvi du kigger HELT ned i bunden af MPLAB - proces linien cirka i midten skal der stå hvliken uC den behandler .. hvad står der ?
Avatar billede yumatci Nybegynder
19. februar 2006 - 11:53 #6
Jeg har fundet ud af det det var bare fordi jeg skulle starte et nyt projekt. Men er stød på en ny ting når jeg så har skrevet koden og trykker build all så vil den gemme og så gemmer jeg så men den bliver ved med at vil gemme det samme hele tiden? og hvis jeg bare trykker anuller skriver den at den fejlede i at lave projektet?
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 11:58 #7
HVAD vil den gemme ?

Det skal kunne virke uden at oprette et projekt. Som det er nu (i ver.:7.30) når du er begyndt på det vil ikke tilbage til absolut kode som det vi laver her.
Avatar billede yumatci Nybegynder
19. februar 2006 - 12:03 #8
Sidder og leger lidt med det og nu fik jeg den så til at "build all" men så kommer disse fejl:

---------------------------------------------------------------------------------
Building LEDON.HEX...

Compiling LEDON.ASM:
Command line: "C:\PROGRA~1\MPLAB\MPASMWIN.EXE /e+ /l+ /x- /c+ /p16F870 /q E:\PROVER\LEDON.ASM"
Message[302] E:\PROVER\LEDON.ASM 12 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Warning[207] E:\PROVER\LEDON.ASM 18 : Found label after column 1. (movlf)
Error[122]  E:\PROVER\LEDON.ASM 18 : Illegal opcode (PORTA)
Warning[207] E:\PROVER\LEDON.ASM 32 : Found label after column 1. (movlf)
Error[122]  E:\PROVER\LEDON.ASM 32 : Illegal opcode (PORTA)
Error[113]  E:\PROVER\LEDON.ASM 45 : Symbol not previously defined (START)
Warning[205] E:\PROVER\LEDON.ASM 49 : Found directive in column 1. (end)

MPLAB is unable to find output file "LEDON.HEX". This may be due to a compile, assemble, or link process failure.

Build failed.
----------------------------------------------------------------------------------

Er lidt lost for tror ikke jeg for gemt en eller anden .hex fil ordenligt? er det ikke muligt for dig at guide mig igennem helt fra begyndelsen? hvis det er kan du hente den version jeg bruger her: http://ww1.microchip.com/downloads/en/DeviceDoc/mp57040full.zip
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 12:22 #9
Rolig nu rolig nu...

Det ville altså være lidt rart hvis du svarede på spørgsmålene længere oppe.

Læs nu omhyggeligt hvad jeg skriver FØR du laver alt muligt ANDET.

Det hedder ikke movlf  men movwf.

I asm (som dette er) skal filen indordnes efter kollonne reglerne:
Labels HELT ude til højre.
kommandoer (som goto og movwf) placeres min. 1 tabulator inde.

Dertil skal vide hvad uC den skal lave det til, og hvilken konfiguration den skal have, det har du ikke fortalt noget om.
Avatar billede yumatci Nybegynder
19. februar 2006 - 12:39 #10
uC er det pic'ens hastighed altså 4 mhz? konfiguration?
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 12:41 #11
uC betyder "microcontroller".
Avatar billede yumatci Nybegynder
19. februar 2006 - 12:47 #12
Nåhh det er en pic16f84 jeg prøver at programmere. Men kiggede i manualen til brænderen havde ikke set der stod hvordan man brugte MPLAB så er begyndt at læse det har også rettet koden så nu er den compilet. Men nu er jeg lige ved at læse hvordan jeg skriver det over til ICDen. Skal jeg bare læse videre og prøve? eller skulle jeg indstille et eller andet med den uC?
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 12:55 #13
Jeg kan herfra at det ikke er en 16f84 du programmere til.
Avatar billede yumatci Nybegynder
19. februar 2006 - 13:15 #14
men hvordan ændre jeg det til pic16f84? Jeg fandt et sted hvor det lignede man skulle vælge pic type men der kunne man kun vælge fra pic16f70 til pic16f77?
Avatar billede yumatci Nybegynder
19. februar 2006 - 13:24 #15
ups jeg skrev forkert mente den kun viste man kunne vælge fra pic16f870 til pic16f877
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 13:27 #16
Det kan gøres på flere måder bla. i menuerne, men så skal ændre det du hver gang du åbner eller skifter controller.
Derfor er det lidt fiksere at angive det i program filen.

Du skriver øverst .. min. 1 tabulator inde (=1 kollonne)
    list    p=16f84a

Det bevirker:
"list" at der generes en udførlig fil med beskrivelse af hvad assembleren lavede.

p=16f84a at den laver programmet til 16f84A.

For det er en "a'er" ikk' ?

Lidt senere bør du også gå over til at bruge de forud definerede register definitioner.
Med:
    #include p16f84a.inc

Men vent med det for det giver umiddelbart nye problemer.
Avatar billede yumatci Nybegynder
19. februar 2006 - 13:32 #17
Tror faktisk det er en pic16f84 og ikke en 'a'er :( gør det noget? nu har jeg prøvet at tilføje det men når jeg trykker "program" knappen siger den "check for target" "no target"
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 13:48 #18
Du ændre bare teksten til p16f84 altså sletter a'et.
Der var noget med at rb3 skulle have en pull down på 10Kohm på nogle modeller.
Altså en 10Kohm fra rb3 til 0V.

Check iøvrigt at forbindelserne mellm din opstilling og ICD'en nu faktisk OGSÅ er rigtige.

5V + og minus må være rigtige ellers havde du lukket røgen ud af den.
Avatar billede yumatci Nybegynder
19. februar 2006 - 14:09 #19
altså jeg har pillet rb3 fra icd'en er det rigtigt? fordi før havde jeg jo lavet det sådan den 6 ledning fra icd'en gik ned til rb3! men det er pillet fra nu! og så sætter jeg en 10Kohm modstand fra uS'ens ben rb3 og op til 0v?
Avatar billede yumatci Nybegynder
19. februar 2006 - 14:17 #20
jeg har ingen 10Kohm men har en 12Kohm kan den bruges?
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 14:20 #21
Ja eller noget mindre måske. Evt. 2 stk 12k parallelt over hinanden.
Avatar billede yumatci Nybegynder
19. februar 2006 - 14:54 #22
okay nu har jeg loddet en 12Kohm på men den siger stadig "no target" jeg har kigget på mit print og alt ser ud til at være samlet rigtigt efter det diagram jeg har lavet! Jeg har lavet det på et hulprint kan mit diagram være forkert du kan se det her: http://mytestpage.1go.dk/  sådan har jeg loddet det sammen præcis!
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 15:10 #23
Jeg kan ikke se noget umiddelbart.

Men du har aldrig svaret på hvad der står i MPLAB i bunden af vinduet.

Hvilken uC kigger den efter ?
Avatar billede yumatci Nybegynder
19. februar 2006 - 15:20 #24
Den kigger efter en PIC16F870
Jeg har fundet ud af at ændre hvad den skal kigge efter men der er kun 7 valgmuligheder og det er fra PIC16F870 til PIC16F877
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 15:22 #25
Men det lyder da også som om 84'eren skulle være der imellem (?).

Hvor er det du vil sætte det ?
Avatar billede yumatci Nybegynder
19. februar 2006 - 15:33 #26
Nej der er følgende valgmuligheder:
PIC16F870
PIC16F871
PIC16F872
PIC16F873
PIC16F874
PIC16F875
PIC16F876
PIC16F877

Det er når jeg trykker "project" --> "edit project" så nede ved "development mode" trykker jeg "change" og det er så derinde jeg sætter den til at bruge IDC og der kan man så også vælge mellem de 7 processor typer
Avatar billede yumatci Nybegynder
19. februar 2006 - 15:39 #27
er du sikker på den understøtter PIC16F84 ?? fordi i manualen står der den understøtter 16F87x og der hører PIC16F84 da ikke under eller?
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 15:43 #28
Ja og jeg tror nu at har noget at gøre med at 16F84 simpelthen er for gammel til ICD!!
Den gang den kom frem var der ikke ICD til.

Jeg har nogle 16F870'ere MEN det er altså i SOIC hus (SMD).
Avatar billede yumatci Nybegynder
19. februar 2006 - 15:45 #29
hvad er SOIC hus (SMD)???
Avatar billede yumatci Nybegynder
19. februar 2006 - 15:55 #30
Hmm vil det egenligt sige at jeg godt kan brænde en PIC16F84 med brænderen men bare ikke med ICD? altså ICD er jo bare det der med at kunne køre boardet og programmere samtidig er det ikke?
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 16:00 #31
??
Hvad mener du .. "køre boardet" ?
Har du også en brænder ?
Avatar billede yumatci Nybegynder
19. februar 2006 - 16:05 #32
Jeg mener det board jeg selv har lavet? brænderen var jo den du sendte (ICD'en) men kan man ikke brænde den uden ICD? eller er det kun en ICD brænder?
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 16:28 #33
Jeg forstår ikke hvorfor jeg har SÅ svært ved at få dig ud den vildfarelse...

Læs venligst dette rigtig mange:
En "brænder" som du hentyder til var noget man brugte i gamle dage. Et apparat hvor man loaded et program el. lign over i en kreds FØR man monterede den.
Det var jo klart upraktisk i en produktion at man først skulle programmere kredsen siden montere den og skulle den kunne ændres måtte man montere den i en sokkel så den kunne komme ud igen.
Tydeligt besværligt og fordyrene.
Derfor gik man væk fra særskilte brændere ... altså "brændere" hører til på teknisk museum!!
Samtidigt gik udvikliingen mod "mindre" og "kan mere", dermed vokser behovet for at kunne se hvad der sker i controlleren.
Derfor fandt smarte uC fabrikanter som fx. Microchip og ATMEL på at kombinere det hele i et apparat der samtidigt kunne loade programmet i controlleren MENS den sidder i det færdige print! ..og samtidigt kunne "Debugge" dvs. vise hvad der foregik inde i den!
Microchip kalder det for ICSP-D "In Circuit Serial Programming - Debuging". Et voldsomt skridt frem der gjorde at nu var den særskilte brænder HELT død.

Du har ikke en brænder. Den kreds du ser på ICD er dens EGEN kreds grunden til at den sidder i en sokkel er at man dengang ikke kunne opdatere den direkte. Derfor hvis der kom nye uC'ere til skulle man hive den ud og over i en brænder og opdatere den. Men det er slut nu ICD2 der kan opdater den direkte fra Computeren.
Avatar billede yumatci Nybegynder
19. februar 2006 - 16:29 #34
Nåhh også lige meget jeg prøver med pic16f870 istedet men skal lige have købt dem og nogle nye sokler så! Hvad var det der SOIC hus (SMD)??
Avatar billede yumatci Nybegynder
19. februar 2006 - 16:33 #35
Okay nu forstår jeg :)
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 16:48 #36
Du har sådan set ikke noget at bruge sokkel til vel. Man lader kredsen sidde direkte i, med mindre man forventer at lukke røgen ud af den.
Hvis det så skulle ske kan du bare brække den af med lidt blød vold og sætte den nye i.

16F870 har til med adskellige andre fikse ting som fx. AD converter og en UART.
Tilmed er den "pin for pin kompatibel" (passer umiddelbart sammen) med 18F serien der er ret suveræn lige nu.
Avatar billede yumatci Nybegynder
19. februar 2006 - 16:55 #37
Okay men troede bare ikke det var godt for pic'en at lodde den direkte på mit print.
Den skal vil bare forbindes ligesom jeg har gjort med 16f84'eren?? Havde du en Pic16f870 hvis det var?
Avatar billede yumatci Nybegynder
19. februar 2006 - 17:04 #38
Jeg kan se jeg skal til at lave et nyt board men forbindelserne burde da være de samme fra ICD'en
Avatar billede dunderfjert Nybegynder
19. februar 2006 - 18:05 #39
Du skal hente databladet over den, benforbindelserne står også der, jeg mener egentlig det er rimeligt "selvforklarende".
Avatar billede yumatci Nybegynder
19. februar 2006 - 18:37 #40
Jep har jeg også allerede hentet. Går igang med at lave et diagram over boardet
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel