Vestavné mikropočítačové systémy 4. Týden – Atmel AVR A/D převodník, analogový komparátor, reset, watch-dog a pojistky
A/D převodník 10-bitové rozlišení – 0x000 ~ 0V, 0x3FF ~ VREF Až 200kHz hodiny při plném rozlišení Doba převodu je 13 taktů až 15ksps (~200kHz) První převod trvá 25 taktů doporučuji odbýt si to hned z kraje programu a dále neuvažovat 8 multiplexovaných vstupů analogového signálu (dle typu a pouzdra nemusí být fyzicky vyvedeno všech 8) Volitelné referenční napětí AVCC (od VCC by mělo být odděleno filtrem typu dolní propust) Interní napěťová reference 2,56V Externí v rozsahu 0V ÷ VCC Volnoběžný režim / jednotlivý převod Výsledek může být hardwarově zarovnáván vlevo Taktování převodníku se volí předděličem (poměry: 2, 4, 8, 16, 32, 64, 128) Volitelné přerušení po dokončení převodu
A/D převodník – blokové schéma ADCSRA[7:3] (ADEN,ADSC, ADFR,ADIF, ADIE) ADMUX[7] (REFS1) ADMUX[5] (ADLAR) Prescaler ADCSRA[2:0] ADMUX[6] (REFS0) Conversion logic ADC[9:0] AVCC Internal 2,56V reference 10-bit DAC AREF Bandgap reference Input MUX ADMUX[3:0] ADC0ADC7
A/D převodník – ošetření vstupů Výstupní impedance zdroje měřeného napětí by měla být < 10 k Měřené signály musí vyhovovat Nyquistovu teorému (< fADC / 2) předřazení anti-aliasingového filtru Doporučení pro návrh HW Analogové cesty by měli být co nejkratší, vedené nad zemní napájecí vrstvou DPS a pokud možno ne blízko digitálních signálů AVCC by mělo být odděleno od VCC LC filterm Pokud se některé z multiplexovaných vstupů používají jako digitální výstupy, měl by být software navržen tak, aby se v průběhu převodu stav těchto pinů neměnil
A/D převodník – registry ADCSRA – Control and Status Register Bit 7 (ADEN) – povolení A/D převodníku Bit 6 (ADSC) – start převodu Bit 5 (ADFR) – volnoběžný režim Bit 4 (ADIF) – příznak dokončeného převodu, je-li povoleno přerušení, shazuje se automaticky při návratu z obslužné rutiny přerušení Bit 3 (ADIE) – příznak, že má dojít k přerušení po dokončení převodu Bit 2:0 – prescaler, dělící poměry: 2, 2, 4, 8, 16, 32, 64,128 ADMUX Bit 7:6 (REFS) – volba napěťové reference Bit 5 (ADLAR) – výsledek převodu má být zarovnán vlevo Bit 3:0 (MUX) – volba vstupního kanálu ADCL, ADCH – výsledek převodu MUX Vstup 0000 ADC0 0001 ADC1 0010 ADC2 0011 ADC3 0100 ADC4 0101 ADC5 0110 ADC6 0111 ADC7 10001101 Nepoužito 1110 1,23V (bandgap) 1111 0V (GND) REFS Zvolená napěťová reference AREF – externí zdroj referenčního napětí 1 AVCC s externím kapacitorem na pinu AREF Nepoužitá kombinace Interní reference 2,56V s externím kapacitorem na pinu AREF
Analogový komparátor Neinvertující vstup je připojen buď na pin AIN0 nebo na interní referenci (1,3V) Invertující vstup může být připojen buď na pin AIN1 nebo na výstup analogového multiplexeru A/D převodníku (ADC musí být zakázán) Přerušení může být generováno změnou, sestupnou nebo náběžnou hranou na výstupu komparátoru Výstup komparátoru může sloužit jako zdroj zachytávací jednotky čas./čítače 1
Analogový komparátor – registry SFIOR Bit 3 (ACME) – jednička vyřadí A/D převodník a zapojí výstup jeho analogového multiplexeru na invertující vstup komparátoru ACSR (Analog Comparator Control and Status) Bit 7 (ACD) – zakázání komparátoru (snížení spotřeby), po resetu je komparátor povolen. Když se mění stav ACD, měl by být ACIE vynulován, jinak hrozí nežádoucí přerušení v důsledku změny bitu ACD. Bit 6 (ACBG) – připojení bandgap reference k neinvertujícímu vstupu Bit 5 (ACO) – výstup komparátoru Bit 4 (ACI) – indikuje vznik události, která může generovat přerušení, shazuje se hardwarově po opuštění interrupt handleru Bit 3 (ACIE) – povolení přerušení při vzniku události Bit 2 (ACIC) – zavedení výstupu komparátoru do zachytávací jednotky čítače/časovače 1 Bit 0:1 (ACIS) ACIS Režim generování událostí Přerušení při změně hodnoty výstupu 1 Nepoužitá kombinace Přerušení při sestupné hraně na výstupu Přerušení při vzestupné hraně na výstupu
Reset 4 zdroje resetovacího signálu V registru MCUCSR je informace o příčině posledního resetu Bit 0 (PORF) – Power-on reset Bit1 (EXTRF) – externí signál RESET Bit2 (BORF) – Brown-out reset Bit3 (WDRF) – Watchdog reset
Reset Power-on reset Externí signál RESET VPOT = 1,3÷1,4V VRST = 0,2÷0,9V
Brown-out reset Detekce zhoršené kvality napájecího napětí Možnost zvolit jednu ze dvou hladin citlivosti BODLEVEL = 0: VBOT = 4V BODLEVEL = 1: VBOT = 2,6V VBOT+ = VBOT + VHYST/2 VBOT- = VBOT – VHYST/2 VHYST = 130mV
Watch-dog Ochrana proti „zabloudění“ programu Korektně pracující program vykoná „jednou za čas“ instrukci WDR Není-li instrukce WDR provedena do určité doby, provede se reset Nezávislý interní oscilátor 1 MHz s volitelným předděličem 16k, 32k, 64k, 128k, 256k, 512k, 1024k nebo 2048k interval 16,3ms ÷ 2,1s 2 úrovně zabezpečení Safety Level 1 Watch-dog je po resetu zakázán a spustí ho 1 v bitu WDE v registru WDTCR Vypnutí a změna předěliče se provádí speciální sekvencí Safety Level 2 Watch-dog je stále aktivní a nelze ho vypnout Změna předděliče se provádá speciální sekvencí Konfigurační registr WDTCR Bit 4 (WDCE) – ochrana proti nežádoucímu vypnutí watch-dogu Bit 3 (WDE) – povolení funkce watch-dogu Bit 2:1 (WDP) – dělící poměr hodin watch-dog timeru
Watch-dog – změnová sekvence Na změnu dělícího poměru hodin watch-dogu nebo na vypnutí (pouze Safety Level 1) je potřeba vykonat speciální sekvenci – ochrana proti nechtěné změně 1. Jednou instrukcí se do registru WDTCR do bitů WDCE a WDE zapíše 1 2. Během následujících 4 strojových cyklů je možné zapsat do WDP resp. vynulovat WDE WDT_off: WDR ; reset WDT in r16, WDTCR ; Write onces to WDCE and WDE ori r16, (1<<WDCE)|(1<<WDE) out WDTCR, r16 ; Turn off WDT ldi r16, (0<<WDE) out WDTCR, r16 ret
Pojistky (fuses) Slouží k hardwarové konfiguraci procesoru Výběr oscilátoru Aktivace watch-dog timeru Povolení detektoru brow-out napětí a volba úrovně Konfigurace bootblocku a lockbitů Volba rozběhové doby Nahrazení signálu externího resetu prostým I/O pinem (pozor, bez signálu RESET už nelze programovat sériovým programátorem) Povolení SPI programování Jsou realizovány buňkami EEPROM Nastavit se dají pouze programátorem Zavedená terminologie: Nenaprogramovaná pojistka odpovídá hodnotě 1 Naprogramovaná pojistka odpovídá hodnotě 0 V programovacích nástrojích obvykle zaškrtnutý checkbox představuje naprogramovanou pojistku, tzn. hodnotu 0
Pojistky – výběr oscilátoru Externí krystalový rezonátor 0,4 ÷ 0,9 MHz 0,9 ÷ 3,0 MHz 3,0 ÷ 8,0 MHz 1,0 ÷ 16 MHz Externí nízkofrekvenční krystal (32768 Hz) Externí RC oscilátor 0,1 ÷ 0,9 MHz 8,0 ÷ 12 MHz Interní kalibrovatelný RC oscilátor 1,0 MHz 2,0 MHz 4,0 MHz 8,0 MHz Externí hodiny