Klockan går…

Uppkopplad på labbplatta tickar nu min IV-18-klocka fram sekunderna. Dagens övning var att ansluta en 32.768kHz-kristall och skriva en ISR (interrupt-service-rutin) som räknar upp sekunder, minuter och timmar, samt laddar om (16-bitars) timer 1 med 0x8000.

composite_iv18_clock-mini.jpg

Notera att bilden är ett montage. Först en blixt-bild av labbplattan, och sedan en (suddig) av siffrorna. Displayen lyser ganska svagt eftersom anodspänningen endast är 12V från labbaggregatet. Detta för att inte bränna sönder några segment på en gång om multiplexningen skulle stanna av någon mjukvarumässig anledning.

Buggar finns det annars gott om i programmet för ögonblicket. Notera tex. att siffran för 10-tals-sekunder inte lyser. Dessutom är det ganska trångt, bara att rita siffrorna på ett programmeringsmässigt snyggt sätt (ett bitfält i C) tar ca 200 rader lättläst C-kod, men blir 2300 rader assembler. En enda rad C-kod till gör att den resulternde binärguckan inte rymms i ett segment i minnet. (fråga inte, PIC16 har inte linjärt minne, dessutom ganska lite av det)

Nästa övning blir att optimera koden för a6812:an och displayen. Tyvärr blir den nog lite obfuskerad på köpet.