Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATmega8 - grzeje się. Jak rozwiązać testowanie portów?

30 Lis 2008 19:15 1655 7
  • Poziom 18  
    Witam!!!

    Mam problem z ATmega8 ponieważ strasznie się grzeje. W pewnym moim projekcie musiałęm wykonać sprawdzanie stanu wyprowadzeń zewnętrzych PORTU C. Program jest bardzo prosty. wystawiam na PORTC same jedynki i kabelkami zwieram wyprowadzenia portu do masy. Zależnie od tego który kabelek odłącze od masy program wykonuje żądaną instrukcje. Wszystko pięknie działa tylko procesorek się strasznie grzeje. Wpiołem rezystory ograniczające prąd i tu pojawia się problem. Nie mogę trafić z wartością rezystancji. Jak za duża to nie mam logicznego zera na wyprowadzeniach, a jak za mała to procek się grzeje. Ma ktoś może pomysł w jaki inny sposób mogę rozwiązać testowanie portów??
  • Poziom 32  
    Skoro się grzeje to jest uszkodzona. Nie masz czasem jakiegoś zwarcia? Może za duże obciążenie masz na wyjściach.
  • Poziom 32  
    ePeter1234 napisał:
    Program jest bardzo prosty. wystawiam na PORTC same jedynki i kabelkami zwieram wyprowadzenia portu do masy.


    Lepiej pokaż ten program.
  • Poziom 26  
    a mienił kolega rejestr kierunku na 0, DDRC=0 żeby PORTC działał jako wejście, bo inaczej to będziesz ściągał na siłe wyjścia do masy co da minimum 20mA na wyjście * 8 wyjść daje przynajmniej 1Wat ciepła. przez 10Kilo om można wyjście atmegi zapiąć na 1 lub 0 bezproblemowo.
  • Poziom 18  
    Port C mam ustawiony na stałe na 0xff. Muszę tak mieć, ponieważ jak mam cały port kabelkami ściągnięty do masy to na pinach Portu C mam zera. Jak odczepię jeden z kabelków to na tym wyprowadzeniu pojawia się jedynka. Zależnie od stanu jaki panuje na tych wyprowadzeniach uP wykonuje odpowiednie zadania. Muszę coś wymyślić, aby ograniczyć prąd na tyle, żeby procek się nie grzał.
  • Poziom 32  
    Czy masz port C ustawiony jako wejście? Jakbyś pokazał w końcu program to wiele by się wyjaśniło, bo póki co to gadamy w kółko o tym samym.
  • Pomocny post
    VIP Zasłużony dla elektroda
    ePeter1234 napisał:
    W pewnym moim projekcie musiałęm wykonać sprawdzanie stanu wyprowadzeń zewnętrzych PORTU C. Program jest bardzo prosty. wystawiam na PORTC same jedynki i kabelkami zwieram wyprowadzenia portu do masy. Zależnie od tego który kabelek odłącze od masy program wykonuje żądaną instrukcje.

    Długo nad tym myślałeś? Przecież w ten sposób zwierasz (przez tranzystor stopnia wyjściowego) VCC z masą. Nie dziwię się, że Ci się procesor grzeje ;)

    Zrób tak:
    Code:
    DDRC = 0x00;
    
    PORTC = 0xff;
    if (PINC & _BV(nr_pinu)) {
        /* nie ma zwarcia z masą */
    } else {
        /* jest zwarcie z masa */
    }

    W ten sposób aktywujesz wewnętrzne rezystory podciągające piny do VCC. Jeśli teraz zewrzesz pin procesora z masą, to prąd popłynie od VCC przez rezystor do masy i nic się nie spali ;)

    Alternatywnie możesz zamiast wewnętrznych zastosować zewnętrzne rezystory podciągające do VCC (np. 10k), wtedy ustaw DDRC=0x00 PORTC=0x00.

    Pozdrawiam,
    Dr.Vee
  • Poziom 18  
    Dr. Vee

    Zastosuje ten sposób z zewnętrznymi rezystorami.

    Dziękuję wszystkim za odpowiedzi. Zamykam temat