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

AVR - Pomiar adc atmega8 sprawdzenie kodu

krzysiekwfd 17 Lut 2015 13:18 6618 97
  • #1 14447791
    krzysiekwfd
    Poziom 11  
    Witam mam problem z pomiarem adc niby wszystko jest ok ale nic nie działa??prosze o sprawdzenie kodu
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 14447812
    krzysiekwfd
    Poziom 11  
    a co jest zle bo juz załamuje ręce??
  • #4 14447816
    szczywronek
    Poziom 28  
    U Ciebie jest tak:
    - uruchom ADC
    - odczytaj wynik
    - poczekaj na koniec pomiaru

    Dwa ostatnie punktu bym zamienił miejscami ;)

    Nie pomyliłeś PB0 i PB1 - na pocz. programu masz "definicję led'a" z PB0 a potem xor'ujesz PB1.
  • #5 14447824
    krzysiekwfd
    Poziom 11  
    szczywronek napisał:

    Nie pomyliłeś PB0 i PB1 - na pocz. programu masz "definicję led'a" z PB0 a potem xor'ujesz PB1.

    no dzięki tak jest :)

    Dodano po 9 [minuty]:

    o dziwo po poprawieniu dalej nie działa :/
  • #7 14448667
    krzysiekwfd
    Poziom 11  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    oto cały kod a co do działania porostu brak jest reakcji..
  • Pomocny post
    #8 14449201
    BlueDraco
    Specjalista - Mikrokontrolery
    Jakiej reakcji się spodziewasz, a co obserwujesz?

    Co zrobiłeś z VREF?
  • #9 14449376
    krzysiekwfd
    Poziom 11  
    liczyłem na zapalnie sie diody, vref jest ustawione na wewnętrzne 2,56V
  • #10 14449521
    BlueDraco
    Specjalista - Mikrokontrolery
    A jak ta dioda jest podłączona? Nie wiemy też, co podajesz na wejście ADC. Schematu ani nawet obrazka nie pokazałeś.
  • #11 14449588
    krzysiekwfd
    Poziom 11  
    tak to własnie wygląda mikrofon + tranzystory generują napięcie w zakresie 1,5-3V sprawdzałem wiec pomiar powinien odbywać się normalnie ale nie reauguje AVR - Pomiar adc atmega8 sprawdzenie kodu
  • #12 14449631
    dondu
    Moderator na urlopie...
    Czym sprawdzałeś - oscyloskopem?

    Każdy problem należy rozkładać na czynniki. Zamiast mikrofonu podłącz więc potencjometr i sprawdź czy poprawnie program reaguje. Dopiero na tej podstawie możesz powiedzieć, że program nie działa prawidłowo.

    Po drugie jak chcesz zobaczyć skoro wykorzystujesz XOR?

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

    zrób if() porządnie na dwa przypadki.
  • #13 14449645
    excray
    Poziom 41  
    Minimalne napięcie na wejściu 1,5V przy Vref 2,56V daje wartość > 600 w najgorszym wypadku. Nigdy nie mniej.
  • #14 14449658
    krzysiekwfd
    Poziom 11  
    dondu napisał:

    Po drugie jak chcesz zobaczyć skoro wykorzystujesz XOR?

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

    zrób if() porządnie na dwa przypadki.

    czyli jak ??ze raz ją włączam pinb0 a później wyłączam ??
  • #16 14449747
    krzysiekwfd
    Poziom 11  
    zrobiłem to tak ale nadal ten sam problem

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


    Cytat:
    No tak - zastanów się co robi dotychczasowa wersja programu, gdy warunek jest spełniony.


    jeśli wartość jest większa niz 100 to zaświeca diodę jesli mniejsza to gasi
  • #18 14449781
    krzysiekwfd
    Poziom 11  
    niestety ale nie, bo na razie nie mam dostępu do elementów ale jutro może coś ogarnę i spróbuje sprawdzić ten program
  • #20 14449878
    krzysiekwfd
    Poziom 11  
    dalej to samo nic się nie dzieje
  • #22 14449903
    krzysiekwfd
    Poziom 11  
    tak nie ma żadnych problemów a miganie mi działa bo wczoraj uruchamiałem
  • #23 14450074
    BlueDraco
    Specjalista - Mikrokontrolery
    Przyjrzyj się uważnie swojemu programowi - w sterowaniu diodą piszesz bzdury. Za pierwszym razem dioda miała migać z częstotliwością wielu kHz przy niskim poziomie na ADC. Za drugim - zaświeca się przy poziomie wysokim i tak pozostaje.
    Napisałeś warunek "jeśli adc > 100 to zrób coś, a jeśli nie większe od 100 i jednocześnie większe od 100 (czyli nigdy) to coś innego".
  • #24 14450136
    krzysiekwfd
    Poziom 11  
    czyli powinno być tak ??
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #25 14450158
    dondu
    Moderator na urlopie...
    Sprawdziłem program działa poprawnie dla przypadku zasilania 5V i ref ustawnione na zewnętrzny pin AVcc jaki pisąłem powyżej.

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


    W moim poście z warunkiem powinno być oczywiście PORTB &= ~(1<<PB0);
    a nie jak podałem PORTB = ~(1<<PB0);
    "czeski błąd". Post poprawiłem.
  • #26 14450176
    krzysiekwfd
    Poziom 11  
    u mnie coś jest nie tak bo nie działa zmienię atmege na nową i wtedy zobaczę
  • #28 14450188
    krzysiekwfd
    Poziom 11  
    nie mam czym zrobić jutro dopiero mogę ale zapewniam podłączone jest dobrze
    e: a jakie masz napięcie na pinie aref??
  • #30 14450203
    krzysiekwfd
    Poziom 11  
    bo u mnie jest 2,70V i nie wiem czy powinno tak być ??
REKLAMA