Ingången kopplad till varken 0 eller 1 ger problem.
Ingången kopplad till varken 0 eller 1 ger problem.
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
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
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.
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.
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...

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...
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.
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.
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.InSipiD skrev:Använder varken pull-up eller rc-filter just nu men ska testa det när jag får tillfälle.
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.
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?).
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?).