3P4W LED-klocka med temperatur Display (4 / 5 steg)
Steg 4: Avslöja dolda Easter Egg
Klockan drift
- om Summer är ansluten, firmware gör det möjligt för alarm inställning och användning
- enda knapptryckning växlar igenom timmar + minuter, larm/på + sekunder och sömn lägen
- långt tryck in installationsläge, efterföljande lång knapptryckning roterar thru menyn
- menyn objekt cykler genom uppsättning ALr, Cnt, AdJ, bri
- i 'SEt' time setup-läge träder Tryck kort på setup
- en gång installationen, kort sagt press växla siffriga värden (timmar, minuter) och långt tryck bekräftar
- Val av 12H eller 24H display
- jämväl i "ALr" larm installationsläge, kan timmar och minuter anges
- Val av larm på eller av
- 'Cnt' väljer kök timerfunktion, ange minuter och sekunder, långa tryck för att bekräfta och börjar räkna ner
- i "AdJ" kalibrering installationsläge, 0-60 'få värde"kan ställas in att göra klockan snabbare, varje enhet lägger cirka 0,5 procent för att klockhastigheten
- När i viloläge, MCU går i kraft ned-läge, konsumerar mindre än 1uA av makt, watchdog-timer är inställd så att systemet vaknar upp varje 1/8 sekund. Detta gör emellertid att hålla för att alltid vara långsam eftersom det tar ett par cykler att driva upp MCU igen. Därför måste vi ha ett kalibreringsvärde att hålla exakt
- senaste inställningsvärdena sparas i EEPROM och kommer att användas för nästa driver
- i "bri" dimmer miljö, kort pressar cyklar genom tillgängliga ljusstyrkenivåer, långt tryck bekräftar inställning
- ledde segmentet multiplexing inkluderar tidsfördröjningar att kompensera ljusstyrkan skillnader för enskilda siffror. dvs. När dislaying en siffra '8' stanna vi längre än en siffra "1" för att kompensera för förlusten av ljusstyrka när man kör flera segment.
Påskägg
Det finns en dold funktion för den äventyrliga builder att utforska. Kan det vara som en programvara påsk ägg där man måste Observera knapptryckning sekvens eller timing? Eller kommer det omflyttning hårdvaran för att avslöja hemligheten?
för att knäcka ägget, kan du:
1. byggda projekt och "poke" runt. Det finns inte så många IO pinnar att peta.
2. Använd mspdebug som simulator (hårda vägen)
3. göra använda av msp430-objdump mot elf filen. (enklaste vägen, relativt) chrisc mspdebug sim
Simulation started, 0x10000 bytes of RAM
(mspdebug) prog 3p4w-clock.elf
Erasing...
Writing 128 bytes to f800...
Writing 128 bytes to ff80...
(mspdebug) reset
(mspdebug) step
( PC: f804) ( R4: 0000) ( R8: 0000) (R12: 0000)
( SP: 0280) ( R5: 0000) ( R9: 0000) (R13: 0000)
( SR: 0000) ( R6: 0000) (R10: 0000) (R14: 0000)
( R3: 0000) ( R7: 0000) (R11: 0000) (R15: 0000)
__low_level_init:
f804: b2 40 80 5a 20 01 MOV #0x5a80, &__WDTCTL
__do_copy_data:
f80a: 3f 40 02 00 MOV #0x2, R15
f80e: 0f 93 TST R15
f810: 05 24 JZ __do_clear_bss
f812: 2f 83 DECD R15