Ingången kopplad till varken 0 eller 1 ger problem.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
InSipiD
Inlägg: 27
Blev medlem: 27 januari 2008, 10:36:42
Ort: Gävle

Ingången kopplad till varken 0 eller 1 ger problem.

Inlägg av InSipiD »

Har programmerat en 16F628A till att fungera som en styrbar PWM, där jag tänkt använda mig av två knappar kopplad till varsin ingång för att sänka och höja duty cycle.
Problemet är att det råder en osäkerhet om vad ingången har för värde, under den tid då den inte är 0 eller 1, vilket gör att duty cyclen fladdrar upp och ner.

Hur löser man såna här problem? Jag tyckte mig lyckas bättre när jag använde interruptingången på RB0, men tyvärr finns det ju bara en sådan.

MVH
InSipiD
Användarvisningsbild
AndLi
Inlägg: 18323
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Inlägg av AndLi »

Du har altså två knappar in på två ingångar på Picen?

Har du pullupmotstånd alt. används de interna?

Är det inte så att det är kontaktstudsen från brytaren du har problem med?

Ett litet RC filter kan hjälpa här, eller så kontaktavstudsar man i avläsningsrutinen.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag är mycket säker på att det du beskriver inte är vad som egentligen sker men beskriv din koppling ordentligt först, så ska du se att lösningen är mycket nära.
InSipiD
Inlägg: 27
Blev medlem: 27 januari 2008, 10:36:42
Ort: Gävle

Inlägg av InSipiD »

På RB0 samt RB5 är två sladdar kopplade till var sin strömbrytare som i sin tur är kopplad till +5V. När strömbrytaren trycks ned kopplas alltså +5V på ingångarna, och när den är uppsläppt "hänger sladden i luften".

Problemet jag får om jag inte jordar ingångarna är att duty cyclen hela tiden ändras, och det händer alltså inte om jag jordar ingångarna.
Om jag tar bort strömbrytarna och bara låter kablarna hänga löst på kopplingsplattan får jag samma problem, och det blir genast mycket värre om jag rör dem.

Använder varken pull-up eller rc-filter just nu men ska testa det när jag får tillfälle.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Använder varken pull-up...

GÖR DET !!

Du bryter mot design-regel 1A när det gäller CMOS.
Vanligt nybörjarfel, i och för sig...

Det finns även massor av trådar i forumet där andra har gjort samma tabbe.
InSipiD
Inlägg: 27
Blev medlem: 27 januari 2008, 10:36:42
Ort: Gävle

Inlägg av InSipiD »

Okidoki, då ska jag slå på det :)
Började precis en kurs i hårdvarunära programmering så jag är väl lite grön ;)

Tack så mycket!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Okidoki, då ska jag slå på det

Eller sätta dit det.

> Började precis en kurs i hårdvarunära programmering

Att aldrig lämna CMOS-ingångar öppna har varken med programmering
eller mikrokontrollers att göra. Det gäller *alla* CMOS kretsar, oavsett
vad de har för funktion för övrigt.
Användarvisningsbild
007sweden
Inlägg: 3500
Blev medlem: 3 mars 2005, 20:18:12
Skype: oo7sweden

Inlägg av 007sweden »

Grattis sodjan till ditt 100000:e inlägg :) :yeahright: :wacko: :tårta:
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Kom ihåg att koppla om strömbrytaren till GND istället för till VCC, annars kommer du aldrig märka av knapptryckningen med pullup aktiverade.

(Ett alternativ är ju att låta knappen förbli kopplad till VCC och istället använda pulldown)
xxargs
Inlägg: 10189
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Inlägg av xxargs »

OK, det var nybörjamisstag no: 1 ;-)

Nu väntar jag bara på kontaktstudsarna där även sk. 'proffsen' gör fel - dvs. i utvecklingsavdelningarna där de gamla rävarna från 70 och 80-talet är utslängda - det är bara att se på tex. miniräknare hp49g och senare där man trott att lämplig delay i programvaran skulle lösa alla problemen med kontaktstudsar[1] - icke sa nicke - när det väl är inne i mjukvara så är det redan försent och har säkert med Nyqvist sampelteorem att göra - precis som aliasing/vikning i ljudet inte går att få bort när det väl har samplats in och hörs mest där det är som mest oönskad....


[1]

Ett tag så var säkert 30% av alla inläggen på forum från folk som försökte desperat hitta en konstant som fungerade utan dubbelinslag/inget alls för deras sätt att trycka och gummikontaktens tillfälliga kondition... på något som var fullständigt problemfritt på alla tidigare versioner av miniräknare...
Användarvisningsbild
hcb
Moderator
Inlägg: 5983
Blev medlem: 23 februari 2007, 21:44:50
Skype: hcbecker
Ort: Lystrup / Uppsala
Kontakt:

Inlägg av hcb »

Trådkapning!
xxargs: Efter den cliffhangern måste du beskriva Rätt Sätt(tm) att ta hand om kontaktstudsarna (och ja, jag är personligen intresserad av det!)
xxargs
Inlägg: 10189
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Inlägg av xxargs »

hmm - jag kanske stack ut hakan för mycket - men svaret är lämplig analog filtrering för att lugna ned förloppen och lämplig hysteres, från RC-kretsar till mer avancerade lösningar - förr fans det speciell avkodarkretsar för tangentbord med sådant inbyggt i sig och kunde vara ganska avancerat - problemen kommer när man försöker göra samma sak enbart med mjukvara och samplar för gles takt samt har ingångar utan hysteres och tröghet. Olika kontakttyper kan också behöva olika åtgärder innan själva insamplandet och beräkningen mellan samplen.

hmm... förresten var inte 74C922 och 923 just sådana dekoders...

Hanterar man kontakt/tangentbortsavkodning för lättvindligt och inte inser att det är ett ganska avancerad 'skit'-problem, så får man problem senare i användafasen med irriterade användare - och som i HP:s fall nästan tappade hela sin miniräknarmarknad då hårdtryckta gummitangenter istället för riktiga knappar och timingproblemet lortade ner hela HP:s lönsamma premiumsegment av miniräknare.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Inlägg av bos »

InSipiD skrev:Använder varken pull-up eller rc-filter just nu men ska testa det när jag får tillfälle.
CMOS är väldigt känsligt för störningar, och därför är det av högsta vikt att du ser till att ingångar är antingen 0 eller 1. Flytande nivåer (dvs varken 0 eller 1) på ingångar gör att ingången suger upp allt brus som finns i närheten (prova röra ett finger på pinnen, t.ex) och den kommer sen spruta ut 0:or och 1:or växelvis till kretsen, som kommer knäa och uppvisa det problem du beskriver.

Lösning till ditt problem är alltså att antingen lägga på ett pull up-/pull down-motstånd. Det kan kännas bekvämt att strunta i ett motstånd, men problemen växer till skyarna om man gör det, på samma vis som man kan få helt dunderskumma fel om man struntar i att avkoppla spänningsregulatorer eller Vdd/Vss med en kondensator.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

CMOS är väldigt känsligt för störningar

Där har Du helt fel. "Äkta" CMOS har betydligt bättre störmarginaler än TTL. Det gäller inte HCT vid nolla, eftersom dess ingångar är konstruerade för att följa de nivåer som gäller för TTL.

Däremot har de väldigt hög impedans på ingångarna som därför alltid och ovillkorligen måste vara anslutna till något.

Detta gäller även TTL, det är mycket fult att ha öppna ingångar och anta att dessa ligger snyggt och stabilt på en etta. Att det alls kan fungera beror på att TTL är strömstyrd (riktig TTL, inte HC?).
Skriv svar