logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATtiny13A][C] - ADC nie działa +ogólne porady co do programu

Owen27 08 Maj 2014 00:03 1404 2
REKLAMA
  • #1 13580619
    Owen27
    Poziom 11  
    Witam.
    Program ma działać tak:
    -Szybkie pięciokrotne naciśnięcie przycisku odblokowuje uC (wychodzi z uśpienia), a dioda ma zamrugać.
    -Sprawdzam VCC (normalnie 4,2V), jeśli mniejsze niż 3V dioda mruga 3 razy, a uC wraca do uśpienia.
    -Po naciśnięciu przycisku włączam mosfeta i sprawdzam czy prąd nie przekracza 14A, jeśli tak to dioda mruga 10 razy, a uC wraca do uśpienia.
    -Mosfet ma być tak długo otwarty jak długo przycisk jest wciśnięty ale nie dłużej niż 10 sekund. Po przekroczeniu tego czasu wyłączam mosfet i dioda mruga 5 razy.
    -Ponowne pięciokrotne naciśnięcie przycisku blokuje uC (usypia)

    [ATtiny13A][C] - ADC nie działa +ogólne porady co do programu

    Rozwiązałem to w taki sposób (fusebity bez zmian):

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Nad uśpieniem będę jeszcze pracował, a reszta programu działa w miarę dobrze lecz po podaniu 60mV na adc1 program działa jakby napięcie było w porządku, adc2 również nie liczy prawidłowo. Pewnie popełniłem jakiś głupi błąd przy konfiguracji ADC.

    Mam jeszcze problem z ustawieniem odpowiedniej liczby powtórzeń pętli wapowania. Prąd musi być sprawdzany dość często więc postanowiłem za opóźnienie przyjąć czas konwersji, niestety zakładając 25 cykli zegara taktującego ADC, pętla, która powinna trwać 10 sekund trwa ok. 7, zakładając 13 cykli trwa ok. 13 sekund.

    Mam nadzieje, że podałem wystarczająco dużo informacji o projekcie, dla zainteresowanych będzie to e-papieros.

    Pozdrawiam.
  • REKLAMA
  • Pomocny post
    #2 13582528
    Tomq
    Poziom 38  
    A nie myślałeś, żeby zaufać precyzji timerów?
    ADC również mógłbyś podpiać pod timer ( Bit 5 – ADATE: ADC Auto Trigger Enable When this bit is written to one, Auto Triggering of the ADC isenabled. The ADC will start a conversion on a positive edge of the selected trigger signal. The trigger source is selected by setting the ADC Trigger Select bits, ADTS in ADCSRB.) i zapisywać wynik konwersji w przerwaniu.
  • #3 13632359
    Owen27
    Poziom 11  
    Użycie timera to był dobry pomysł, teraz opóźnienie trwa tyle ile chciałem, tylko nie wiem po co używać timera jako trigger skoro mamy Free Running mode zostawiając ADTS0...2 w spokoju.
    Niestety ta część dalej mi nie działa, stworzyłem taki program do testowania ADC, adc1 połączyłem z środkową nóżką potencjometru 10K podpięty równolegle do zasilania.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Do mos jest podpięta anoda diody, przy kręceniu potencjometrem powinna się zapalić lecz tak się nie dzieje.
REKLAMA