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

[ATmega128][C] - Analogowy komparator - przelaczanie

bimbarabam 15 Sty 2013 00:34 1323 0
REKLAMA
  • #1 11790663
    bimbarabam
    Poziom 14  
    Chce wyznaczyć czas ładowania kondensatora w obowodzie RC pomiędzy punktami 0.25RC i 0.5RC. Atmega128 ma takie cos ze jedna z koncowek (ain1) mozna przelaczac jezeli adc jest wylaczony, na ktorys z portow analogowych i moj pomysl polega na tym ze na dwa rozne kanaly portu analgowego sa podpiete napiecia z dzielnikow odpowiadajace 0.25RC i 0.5Rc przy Ucc = 5V. Pomiar ma wyglądać tak załączam napięcie z pinu portu B do obwodu RC zeby zaczac ladowac kondensator, nastepnie ( noga kondensatora jest podczepiona do Ain0, a Ain1 jest podlaczona do "0.25RC") gdy napiecie na kondesatorze przekroczy wartosc napiecia na pinie AiN1 uruchamia sie przerwanie komparatora i startuje timer(zerujac ilosc przepelnien) i przelacza Ain1 na '0.5 RC". Gdy kondensator przekroczy nowe napiecia wowczas wylaczam timer i wyswietlam w main ilosc przepellnien timera. Napisałem kod, ale z jakiegos powodu dostaje ze ze przepelnien timera miedzy 0.25RC, a 0.5RC jest 0 O_O. Ogólnie rezystor w obwodzie RC = 100k, kondensator 100n, timer leci na czestotliwosci 1.8432MHz, a TNCT1 w timierze ustawiam na FF00 przy kazdym przepelnienu wiec liczy tylko 256 taktow. Wiec miedzy 0.25RC, a 0.5RC powinien spokojnie naliczyc kilkadziesiat przepelnien. Podrzucam kod

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

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

    tim1.c:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
REKLAMA