Debouncing avbrott med MPIDE del 2: RC filter (6 / 15 steg)
Steg 6: Ja det är ditt Problem...
Öppna upp din följetong bildskärm genom att klicka på ikonen med en låda och antenn i det övre högra hörnet av din MPIDE fönster (se till din styrelse är fortfarande ansluten till datorn). Du bör se ett tomt vitt fönster springa fram.
Tryck nu på knappen. Några rader av numren ska visas i fönstret (liknar den andra bilden). Dessa har skickats från din microcontroller!
Varje gång du utlösa ett avbrott på brädan, registrerar din kod hur lång tid det har gått sedan senaste avbrottet utlöstes. Det registrerar också om avbrottet utlöstes på en stigande kanten (trycker på knappen) eller en fallande kant (släppa knappen). Dessa värden lagras tills avbrotten är färdiga utlöses. Sedan, nästa gång blir det en chans, det dumpar alla dessa lagrade värden i raden seriell kommunikation, att läsas av din dator.
Det är vad du ser visas på skärmen. Varje gång raden "sända" visas, är som början på en ny data soptipp från din styrelse. Generellt för alla stigande och fallande kant, styrelsen finner tid att överföra mellan avbryter, men som inte kan garanteras.
Kolla in den andra bilden. Här, har vår styrelse inte tid att överföra data, så det måste cache det tills det får en chans att dumpa den på en gång. Detta händer eftersom vår knapp studsar och avbrotten få utlöses för snabbt för vår styrelse sända. Titta på hur länge varje högt och lågt värde varar. För denna krets, kan studsar vara så kort som några mikrosekunder, eller så länge som 400 mikrosekunder.
Minns att vår kod registrerar vad "nedtryckt" senast var, och använder detta för cykeltiden för våra LED. När en studs händer, kanske sista "nedtryckt" då otroligt kort! Detta betyder att lampan blinka mycket snabbt, höll vilket ger intrycket av att vara.
För att bli av med dessa studsar, tillämpar vi ett RC-filter.