Pkwarn0003, går ej att lösa meha av andra trådar (PIC prog)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
fireas
Inlägg: 204
Blev medlem: 26 januari 2009, 12:44:25

Re: Pkwarn0003, går ej att lösa meha av andra trådar (PIC pr

Inlägg av fireas »

sodjan skrev:Nej, det kanske inte finns något som ska blinka *avsiktligt* i koden,
men ändå gör den ju det!

Det är bara att felsöka enligt metod 1A. Skala av och skala av funktioner tills
det fungerar (eller i alla fall blinkningen slutar). Någonstans där har du orsaken.

Lägg en LED som blinkar till enbart vid reset, för att kolla om processorn
startas om hela tiden. Den ska alltså vara släckt hela tiden utom just
vid en reset.

Vilken frekvens är det på "flimmret"?
Har ingen frekvensmätare eller oscilloskop till hands men 10Hz eller bågot hade jag gissat på.

Jag har strippat ner allting, tagit bort en avst. mätare, båda. Några dioder. Den uppför sig på samma sätt.

Hur ska jag lägga en diod till MCLR då jag har ett 10k resistor där?ska jag ta bort 10kn?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pkwarn0003, går ej att lösa meha av andra trådar (PIC pr

Inlägg av sodjan »

> Jag har strippat ner allting, tagit bort en avst. mätare, båda. Några dioder. Den uppför sig på samma sätt.

Koden! Och hela den kod som uppvisar samma fenomen.

OK, ca 10 Hz då. Låter lite märkligt. Det känns som att det inte
har med koden isig att göra utan något annat. Öppna ingångar.
Något fel i CONFIG. WDT (men den var väl "off", eller hur?).

MCLR pinnen ska ligga med 10 kohm till 5V.
Den extra lysdioden kan ligga på vilken I/O pinne som helst.
Bara en extra lysdiod som tänds någonstans där koden
bara kör en gång, d.v.s inte inne i din main-loop. Som en koll
på om processorn statar om hela tiden. Den ska alltså bara blinka
till *en* gång då processorn startar upp.
Användarvisningsbild
fireas
Inlägg: 204
Blev medlem: 26 januari 2009, 12:44:25

Re: Pkwarn0003, går ej att lösa meha av andra trådar (PIC pr

Inlägg av fireas »

Öppna ingångar har jag väl inte då jag har TRISA = 0x03. På båda ingångarna finns en avståndsmätare.

Lade en diod på en tom utgång och den lyser innan den går in i while-satsen. Sedan blinkar den inte igen så processorn verkar inte restarta sig.

Watchdog Timer är avstängd:S
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pkwarn0003, går ej att lösa meha av andra trådar (PIC pr

Inlägg av sodjan »

Koden ?
Användarvisningsbild
fireas
Inlägg: 204
Blev medlem: 26 januari 2009, 12:44:25

Re: Pkwarn0003, går ej att lösa meha av andra trådar (PIC pr

Inlägg av fireas »

Koden bifogad lite längre ner.

Jag har iallafall kommit på hur jag kan komma förbi blinkandet. Det verkar vara avståndsmätarna.

Mitt sista steg (no 7) har varit med gränsen 410mV. Men nu har jag ändrat till 640mV. Dvs, nu är det att om avståndsmätarna ger mindre än 640mV så ska bara en diod lysa. Det blinkar någon enstaka gång nu men det påverkar inte.

Så då är min slutsats att det var avståndsmätarna som ger lite "vajig" spänning ifrån sig.

Kod: Markera allt

void main() {
     unsigned long ADC_niva;
     unsigned long ADC_niva0;
     unsigned long ADC_niva1;

     TRISA = 0x03; // PortA - input
     TRISB = 0x00; // PortB - output
     TRISC = 0x00; // PortC - output

     ANSEL = 1;    // AN pinnarna görs analoga
     ANSELH = 1;
     C1ON_bit = 0; // Avaktivera comparatorerna
     C2ON_bit = 0;


     while (1) {
          ADC_niva0 = ADC_Read(0);          //Läser värde från 'AN0'
          ADC_niva1 = ADC_Read(1);          //Läser värde från 'AN1'
          
          if (ADC_niva0 > ADC_niva1  ) {
              ADC_niva = (488*ADC_niva0)/100;      //Får spänning i mV
          } else {
              ADC_niva = (488*ADC_niva1)/100;      //Får spänning i mV
          }

          if (ADC_niva > 2300) {
              PORTB = 0x00;
              PORTC = 0x41; // step 1/7

           } else if (ADC_niva > 1730) {
              PORTB = 0x00;
              PORTC = 0x43; // step 2

           } else if (ADC_niva > 1440) {
              PORTB = 0x00;
              PORTC = 0x47; // step 3

           } else if (ADC_niva > 1230) {
              PORTB = 0x10; // step 4
              PORTC = 0x47;

           } else if (ADC_niva > 1000) {
              PORTB = 0x30; // step 5
              PORTC = 0x47;

           } else if (ADC_niva > 800) {
              PORTB = 0x70; // step 6
              PORTC = 0x47;

           } else if (ADC_niva > 680) {
             PORTB = 0xF0; // step 7
             PORTC = 0x47;

           } else {
             PORTB = 0x00; // Initial state
             PORTC = 0x40;
           }
    }
}
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Pkwarn0003, går ej att lösa meha av andra trådar (PIC pr

Inlägg av sodjan »

Ja visst kan det vara så.

En enkel test är ju att ansluta något annat en avst.givaren,
t.ex vanlig pot, och köra spänningen fram och tillbaka manuellt.
Det ger ju direkt om det är koden eller givaren som är orsaken.
Användarvisningsbild
fireas
Inlägg: 204
Blev medlem: 26 januari 2009, 12:44:25

Re: Pkwarn0003, går ej att lösa meha av andra trådar (PIC pr

Inlägg av fireas »

Jo, som du säger. testade att köra manuellt med motstånd. Det var avståndsmätarna..
Skriv svar