Ljuskänslig PIC ? :-)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Ljuskänslig PIC ? :-)

Inlägg av JimmyAndersson »

Har precis gjort min första PWM på en PIC18LF1320. Fungerar fint, typ... jag har fått ett fenomen på köpet:

När jag stänger av nätagget och startar det igen så är lysdioden (som är kopplad till P1A) släckt, men om man skuggar labbplattan lite snabbt så börjar lysdioden blinka som programmerat.
Efter nästan två minuter så slutar den att blinka (slocknar).
Har en skrivbordslampa (E20 60W) ca 45cm ovanför labbplattan. Om jag höjjer den till 57cm så börjar lysdioden blinka igen.

Min fråga: Vilket register har hand om detta? :lol:
Nä, skämt å sido, något reagerar på den lilla värmeskillnaden som blir. Vad kan det vara? Har bara PIC-kretsen, kristallen, kondensatorer, sladdar och en lysdiod plus motstånd kopplat. Ingen sladd hänger lös. Har jag missat något i programmeringen?

Här är koden, gjord i MikroBasic och enkelt gjord just bara för att kunna se lättare vad som är tokigt:

Kod: Markera allt

program PWMtest

TRISA = $0 ' Utgångar på A
TRISB = $0 ' Utgångar på B - används här
PR2 = $FF ' Timer2 period
CCP1CON.7=0 ' Single output
CCP1CON.6=0 ' Single output
CCP1CON.5=0 ' Sista biten i Duty Cycle
CCP1CON.4=0 ' Näst sista biten i Duty Cycle
CCP1CON.3=1 ' P1A P1C P1B P1D active low
CCP1CON.2=1 ' P1A P1C P1B P1D active low
CCP1CON.1=1 ' P1A P1C P1B P1D active low
CCP1CON.0=1 ' P1A P1C P1B P1D active low
PIR1.1=0 ' Clear Timer2 interrupt flag
T2CON.0=0 ' Prescaler 16
T2CON.1=1 ' Prescaler 16
T2CON.2=1 ' Stänger på Timer2

CCPR1L = %00001111 ' Duty cycle MSbs

end.

edit: Lagt till $ i TRIS-raderna.
Senast redigerad av JimmyAndersson 26 september 2005, 20:44:09, redigerad totalt 1 gång.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Har du någon input-pinne med som du känner av? T.ex. som är ansluten till en switch/knapp som du använder för att switcha on/off blinkningen?

Hade ett liknande fenomen när jag (i programmet) förväntade mig en puls på pinne X men hade (felaktigt) fysiskt kopplat kretsen som genererade pulsen till pinne Y. Pinne X var inte ansluten till något, men nånting genererade slumpaktigt en liten puls som kom in på pinne X som i sin tur triggade en funktion i mitt program.

Kan ha varit något sorts magnetiskt fält runt mig, eller min lysrörslampa.

Mats
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Innan så gjorde jag en A/D-konstruktion som läste av Vref- och till den var en potentiometer kopplad. Men den tog jag bort när jag skulle köra PWM. Så, jag har ingen input kopplad. Däremot verkar den pinnen vara "igång" för fenomenet försvann när jag kopplade Vref- till jord.

Så jag ändrade från "TRISA = 0 och TRISB = 0" till "TRISA = $00 och TRISB = $00". Ljusfenomenet försvann. :)



edit: Nähepp, fenomenet är kvar ändå. Se mitt nästa inlägg.....
Senast redigerad av JimmyAndersson 26 september 2005, 20:45:42, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det är inte ljuset (så klart), det är elektromagnetiska fält som spökar.

En pinne som är satt som ingång, och som inte har något anslutet, fungerar som en "antenn" och fångar upp alla elektromagnetiska fält i omgivningen. T.ex det 50 Hz brum som finns i alla inomhusmiljöer, vilket normalt är det starkaste fältet. Detta kan i princip få vilka konstiga effekter som helst...
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31455
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Och som vanligt bör man koppla alla oanvända ingångar till antingen jord eller +5V. ;)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Eller (lite enklare) sätta dom som *utgångar*... :-)
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31455
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Ja, det tar ju inte direkt nån fyyisk plats. :)
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Inlägg av PHermansson »

Håller med föregående. Lyckades göra en touchkontakt på en experimentkonstruktion nyligen. Jag kopplade en tråd som jag höll mot plus för att få en etta. När tråden inte hölls mot plus var anslutningen fri och det räckte att jag hade handen ett par cm ifrån för att det skulle räknas som en etta...
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Men om jag satt båda portarna (med TRISA = $0 och TRISB = $0) som utgångar och det ändå blir så?
Tidigare labbade jag med Vref- den är alltid en ingång. (Sitter visserligen på samma pinne som RA2, men RA2 är ju utgång via TRISA = $0)

Det är kanske lite nybörjarvarning på mig fortfarande, :) så jag kanske har missat något?

Koden syns i första inlägget i tråden. Kör med en PIC18LF1320 som har två portar: A och B.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Normalt är pinnar som även kan vara analoga ingångar, analoga som default vid reset. Har du kollat det och (om det behövs) satt alla pinnar som digitala I/O ?

Om en pinne är satt som en analog ingång, är jag inte säker på att det spelar någon roll hur TRIS är satt, men där kan jag ha fel...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

En annan sak, hur är MCLR kopplat ?
Användarvisningsbild
Greve Hamilton
EF Sponsor
Inlägg: 544
Blev medlem: 4 september 2004, 15:03:35
Ort: GBG

Inlägg av Greve Hamilton »

Jag har varit med om liknande sak. För mig räckte det med att välja högre värde på ett par pull-up-motstånd.

Sedan för att motverka fenomen som detta, kan man - som några skrev - se till att avaktivera analoga ingångar (om man inte använder dem dvs.) och ansluta oanvända I/O till jord.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> "...ansluta oanvända I/O till jord..."

Ansluta oanvända *I* till jord, ja.
Oanvända *O* bör inte ha något med problemet att göra...

Jag undrar dock hur MCLR är kopplat, den nämns inte alls
i Jimmys ursprungliga beskrivning av kopplingen. En oansluten
MCLR kan ge samma fenomen.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Det första jag gjorde när jag precis köpt PIC-kretsen var "Blink a LED" från Voti's sajt. Där körde de med 33kohm mellan MCLR och +5v. Jag hade inte 33kohm, så det blev en seriekoppling. Fram tills jag började labba med PWM så fungerade det fint. Så fort jag fick PWM'n att fungera så märkte jag av problemen ovan. Så nu bytte jag till ett motstånd (med lägre motståndsvärde) och problemen upphörde!

Ang. TRIS så hittade detta i databladet: "The TRISA register controls the direction of the RA-pins, even when they are being user as analog inputs. The user must ensure the bits in the trisa register are maintained set when using them as analog inputs." (Längst ner på Sid 89, enligt Acrobat. "Page 87" enligt databladet.)

Ska kolla detta för säkerhets skull.
Skriv svar