Pic 18f4221 LED blinkar inte

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Pic 18f4221 LED blinkar inte

Inlägg av Pajn »

Hej. Jag sitter med 1n 18f4221 framför mig som jag inte kan få att fungera.
Jag försöker köra ett enkelt LED blink program (alltid bra att börja med på nya picar)

Den programmerar jättefint men lysdioden blinkar inte. Min kod:

Kod: Markera allt

void main() {
     PORTD = 0;
     TRISD = 0;
     while(1) {
              PORTD.F2 = 0;
              Delay_ms(1000);
              PORTD.F2 = 1;
              Delay_ms(1000);
     }
}
Clock är satt till 8MHz och "INT RC-Port on RA6,Port on RA7"

och resten av config:

Kod: Markera allt

<MCU_DEVICE_FLAGS>
  <DEVICE>
    <DEVICE_NAME>SCHEME</DEVICE_NAME>
    <SETTINGS>
      <COUNT>29</COUNT>
      <SETTING0>
        <NAME>Oscillator</NAME>
        <DESCRIPTION>INT RC-Port on RA6,Port on RA7</DESCRIPTION>
      </SETTING0>
      <SETTING1>
        <NAME>Fail Safe Monitor Clock Enable</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING1>
      <SETTING2>
        <NAME>Internal External Switch Over Enable</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING2>
      <SETTING3>
        <NAME>Power-up Timer Enable</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING3>
      <SETTING4>
        <NAME>Brown-out Reset Enable</NAME>
        <DESCRIPTION>Disabled, SBOREN Ignored</DESCRIPTION>
      </SETTING4>
      <SETTING5>
        <NAME>Brown-out Reset Voltage</NAME>
        <DESCRIPTION>2.0V</DESCRIPTION>
      </SETTING5>
      <SETTING6>
        <NAME>Watchdog Timer</NAME>
        <DESCRIPTION>Disabled-Controlled by SWDTEN bit</DESCRIPTION>
      </SETTING6>
      <SETTING7>
        <NAME>Watchdog Timer Postscale</NAME>
        <DESCRIPTION>1:32,768</DESCRIPTION>
      </SETTING7>
      <SETTING8>
        <NAME>CCP2 Mux</NAME>
        <DESCRIPTION>CCP2 I/O Muxed With RC1</DESCRIPTION>
      </SETTING8>
      <SETTING9>
        <NAME>Port B A/D Enable</NAME>
        <DESCRIPTION>Port B[4:0] Are Digital I/O on Reset</DESCRIPTION>
      </SETTING9>
      <SETTING10>
        <NAME>Low Power Timer1 Osc Enable</NAME>
        <DESCRIPTION>High Power Consumption, High Noise Immunity</DESCRIPTION>
      </SETTING10>
      <SETTING11>
        <NAME>MCLR Pin Enable</NAME>
        <DESCRIPTION>MCLR Enabled, RE3 Disabled</DESCRIPTION>
      </SETTING11>
      <SETTING12>
        <NAME>Stack Overflow Reset Enable</NAME>
        <DESCRIPTION>Enabled</DESCRIPTION>
      </SETTING12>
      <SETTING13>
        <NAME>Low Voltage Programming Enable</NAME>
        <DESCRIPTION>Enabled</DESCRIPTION>
      </SETTING13>
      <SETTING14>
        <NAME>Boot Block Size Select</NAME>
        <DESCRIPTION>256 W (256 W)</DESCRIPTION>
      </SETTING14>
      <SETTING15>
        <NAME>Extended Instruction Set Enable bit</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING15>
      <SETTING16>
        <NAME>Background Debug</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING16>
      <SETTING17>
        <NAME>Code Protect Block 0</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING17>
      <SETTING18>
        <NAME>Code Protect Block 1</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING18>
      <SETTING19>
        <NAME>Code Protect Boot</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING19>
      <SETTING20>
        <NAME>Code Protect Data EEPROM</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING20>
      <SETTING21>
        <NAME>Write Protect Block 0</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING21>
      <SETTING22>
        <NAME>Write Protect Block 1</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING22>
      <SETTING23>
        <NAME>Write Protect Config Bits</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING23>
      <SETTING24>
        <NAME>Write Protect Boot Block</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING24>
      <SETTING25>
        <NAME>Write Protect Data EEPROM</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING25>
      <SETTING26>
        <NAME>Table Read Protect Block 0</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING26>
      <SETTING27>
        <NAME>Table Read Protect Block 1</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING27>
      <SETTING28>
        <NAME>Table Read Protect Boot Block</NAME>
        <DESCRIPTION>Disabled</DESCRIPTION>
      </SETTING28>
    </SETTINGS>
  </DEVICE>
</MCU_DEVICE_FLAGS>
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic 18f4221 LED blinkar inte

Inlägg av sodjan »

Säkert felkopplat.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Pic 18f4221 LED blinkar inte

Inlägg av bearing »

Testa att skriva 0xFF till porten i början av main istället, och koppla en lysdiod mellan valfri PORTD-pinne och jord. Om den kopplas rätt, men inte lyser vet du att processorn inte kör koden. Antagligen är den då i reset.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Pic 18f4221 LED blinkar inte

Inlägg av Pajn »

Jag har kopplat

Kod: Markera allt

VDD - 10K - Mclr -1    40- PGD
                  |    39- PGC
                  |    38- PGM
                  |    32- VDD
                  |    31- VSS
             VDD -11   |
             VSS -12   |
                  |    21- RD2 - >| - 100R - VSS
Den lyser med

Kod: Markera allt

void main() {
     PORTD = 0;
     TRISD = 0;
     while(1) {
              PORTD.F2 = 0xFF;
     }
}
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Pic 18f4221 LED blinkar inte

Inlägg av bearing »

Får du ingen varning för "PORTD.F2 = 0xFF;"?

Det är ju bara en bit, så den kan inte lagra värdet 0xFF. Finns risk att kompilatorn tolkar det till att sätta hela PORTD till 0xFF, och då vet du ju inte ändå inte om lysdioden sitter på rätt pinne.

Men om det nu är kopplat rätt kan det ju vara så att processorn går långsammare än vad delay-rutinerna "tror". Det skulle i så fall kunna göra att delayen blir mycket längre än en sekund. Testa att byta ut värdet till 100 ms och se om den blinkar.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic 18f4221 LED blinkar inte

Inlägg av sodjan »

> Den programmerar jättefint men lysdioden blinkar inte.

Vad gör den då ?
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Pic 18f4221 LED blinkar inte

Inlägg av Pajn »

@bearing blev fel när jag skrev här, ska såklart vara "PORTD = 0xFF;"

@sodjan inget, iaf. vad jag kan se.

Med koden

Kod: Markera allt

void main() {
     PORTD = 0;
     TRISD = 0;
     while(1) {
              PORTD.F2 = 0;
              Delay_ms(10);
              PORTD.F2 = 1;
              Delay_ms(10);
     }

}
blinkar den lite sporadiskt (några blink, mörkt en stund, några blink osv.) samt långsamt, närmare 100ms
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic 18f4221 LED blinkar inte

Inlägg av sodjan »

Har du ställt in processorns hastighet i ditt verktyg (vad det nu är) ?
Fungerar det om du gör samma sak i assembler ?
Hur fungerar det i MPLAB/SIM (om det går att köra där...) ?
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Pic 18f4221 LED blinkar inte

Inlägg av bearing »

Det är ju lite skumt att den blinkar sporadiskt. Det skulle kunna bero på att programräknaren hamnar på någon slumpvis position där ingen kod finns, utan bara ettor, vilket betyder NOP, tror jag. Den kör då genom hela programminnet och börjar om från början (tror jag). Kan också vara att den resettar sporadiskt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic 18f4221 LED blinkar inte

Inlägg av sodjan »

Det vanligaste är att WDT är "på".
Om det är så här nu kan jag inte avgöra.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Pic 18f4221 LED blinkar inte

Inlägg av Pajn »

Jag ändrade lite config bitar "Stack Overflow Reset" till off och "low voltage programming" till off och nu funkar det nästan.
Bara det att det går för långsamt Delay_ms(10); blir i verkligheten en paus på 100ms och Delay_ms(1000); blir 10 sek. Jag har satt oscillator värdet på 8MHz vilket det ska vara, nått mer jag måste tänka på?

EDIT: WDT är av, jag har satt som jag brukar på 16F (=allt på default förrutom WDT och Brown-out resett som är av och intern oscillator, ingen clkout)
Användarvisningsbild
E85
Inlägg: 1274
Blev medlem: 29 maj 2007, 16:24:19
Ort: Övik

Re: Pic 18f4221 LED blinkar inte

Inlägg av E85 »

100ms är väl inte speciellt långsamt. 10ms blink ska du inte kunna se ens. Är du säker att inte 100ms blir 800ms osv? Då skulle det väl förmodligen vara att den kör i 1MHz istället för 8.

Antar att du har satt OSCCON annars är det därför.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Pic 18f4221 LED blinkar inte

Inlägg av Pajn »

200ms är ju lätt att missa när man endast räknar i huvudet, kan mycket väl ha vart 800ms och inte 1000ms.

Jag hade inte satt någon OSCCON (första gången med 18F) Nu har jag gjort det

Kod: Markera allt

     OSCCON = 111;
och nu är det bättre, men inte bra.

Kod: Markera allt

     while(1) {
              PORTD = 0xFF;
              Delay_ms(1000);
              PORTD = 0;
              Delay_ms(1000);
     }
Ger blink som är ca. 2 sek långa.
Användarvisningsbild
E85
Inlägg: 1274
Blev medlem: 29 maj 2007, 16:24:19
Ort: Övik

Re: Pic 18f4221 LED blinkar inte

Inlägg av E85 »

Nu var du nog lite för snabb... Fundera litegrann på vad OSCCON = 111; egentligen gör. (tips: tänk binärt)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pic 18f4221 LED blinkar inte

Inlägg av sodjan »

> OSCCON = 111;

D.v.s OSCCON = b'01101111';

Var det det du ville ha ?

> Jag hade inte satt någon OSCCON (första gången med 18F)

Inte unikt för F18, det är i princip samma oscillator i de nyare F16.
Skriv svar