Ako zmeniť pin RESET pri AT TINY na bežný I/O vstup

Ako zmeniť pin RESET pri AT TINY na bežný I/O vstup
Elektrolab Pridal  Elektrolab
  248 zobrazení
0
 0
Komponenty

Malé AVR ako ATtiny13 a ATtiny45 sú užitočnými nástrojmi pre rôzne druhy jednoduchých aplikácií. Stáva sa však, že päť pinov I / O tohoto 8 osem vývodového obvodu jednoducho nestačí.

V takýchto situáciách spoločnosť Atmel poskytla možnosť nakonfigurovať pin RESET ako bežný vstupno-výstupný pin. To zo sbou ovšem nesie jednu nevýhodu. Strata funkcie RESET znamená, že AVR už nie je možné programovať obvyklou metódou ICP. Programovanie a programátor pomocou HVSP však nie je až tak zložité na to, aby ste si ho postavili.

PIN RESET na týchto AVR má neočakávanú funkciu: môžete ich použiť ako vstup ADC, pričom si zachováte aj funkciu RESET .
Nízke vstupné napätie samozrejme nemôžete merať, pretože sa RESET aktivuje. Napätie medzi 3 V a 5 V však môžete merať bez problémov (samozrejme s Vcc ako referenciou ADC). Vstupné napätie 0 V sa prevádza deličom napätia R1 / R2 na napätie 3,8 V, zatiaľ čo vstupné napätie 5 V vedie k ... 5 V.
Hodnota R2 sa môže mierne meniť 22k aý 47k.

Je samozrejmé, že čítanie na "digitálnom" vstupe prostredníctvom ADC je omnoho pomalšie ako pri obvyklom postupe. Ale ak získate ďalší vstupný pin za cenu 1 rezistora a nejaký čas pre procesor, tak je to bonus.
Kondenzátor 100 nF sa môže samozrejme umiestniť medzi pin RESET a GND. Medzi zmenou vstupu a momentom, keď sa táto zmena stane merateľnou, však existuje určité oneskorenie.

Okrem toho je ICP aj naďalej použiteľné. Ak to chcete skúsiť, môžete začať zo zdrojovým kódom nižšie avr-gcc , ktorý rozsvieti D1, keď je vstup RESET „vysoký“, inak D1 zhasne.

/*
  ResetPinAlsIngang - verzia ATtiny45

   2020
*/



#include <avr/io.h>

int main(void)
{
    DDRB = _BV(PB4);                                            // PB4 = výstup
    ADCSRA = _BV(ADEN) | _BV(ADPS2) | _BV(ADPS1);               // Init ADC
    ADMUX = 0;                                                  // ADC0 = analógový vstup; ref = 5V

    while (1) {
        ADCSRA |= _BV(ADSC);                                    // Spustiť ADC
        while (bit_is_set(ADCSRAADSC)) {                      // Počkajte kým,
        }                                                       // bude dokončená konverzia ADC
        if (ADC > 900) {                                        // RESET-pin je vysoký?
            PORTB |= _BV(PB4);                                  // Potom rozsvieti LED
        } else {                                                // RESET-pin je nízka
            PORTB &= ~(_BV(PB4));                               // LED zhasne
        }
    }
}

 

Zdroj : prosje.be

Poznámka : Článok bol preložený z holandského originálu "RESET-pin als ingang gebruiken." a redakčne upravený.



Páčil sa Vám článok? Pridajte k nemu hodnotenie, alebo podporte jeho autora.
 

       

Komentáre k článku

Zatiaľ nebol pridaný žiadny komentár k článku. Pridáte prvý? Berte prosím na vedomie, že za obsah komentára je zodpovedný užívateľ, nie prevádzkovateľ týchto stránok.
Pre komentovanie sa musíte prihlásiť.

Vaša reklama na tomto mieste

Vyhľadajte niečo na našom blogu

PCBWay Promo

ourpcb Promo

PCBWay Promo

ourpcb Promo

PCBWay Promo

ourpcb Promo


Webwiki Button