Skocz do zawartości

[C] Programowanie Sharpa w minisumo


matt90

Pomocna odpowiedź

Mam podłączone czujniki Sharpa na wejściach ADC, czy program powinien być napisany tak, że po zauważeniu przeciwnika następuje przerwanie od ADC czy normalnie zrobić to pętlą if? Jeśli przez przerwanie ADC to proszę o jakieś porady jak to zrobić bo nigdy tego nie robiłem, czytam datasheet ale nie wiele mi to rozjaśnia całą sytuację 😕

Link do komentarza
Share on other sites

Jeżeli się nie mylę to przerwanie od ADC występuje w momencie zakończenia konwersji. Niezależnie od tego jaki jest wynik tej konwersji. W przerwaniu musiałbyś sprawdzić odczyt i go zinterpretować. Więc niewiele się to różni od ciągłego oczekiwania w pętli.

A może by tak podpiąć Sharpy do komparatora analogowego???

Link do komentarza
Share on other sites

W przypadku Atmega8 wejścia komparatora to AIN0 i AIN1, mam rację? Jeśli tak to nie mogą tam być sharpy bo w tym miejscu mam podpięty mostek. Więc nie ma większej różnicy w czasie czy wszystko napiszę pętlą if czy sharpy będą wywoływać przerwanie?

Link do komentarza
Share on other sites

Chodzi o to, że musisz ciągle wykonywać pomiar ADC i analizować wynik, bo nie wiesz kiedy pojawi się przeciwnik. Szarpy nie mogą wyzwalać przerwania, bo niby jak???

Gdybyś podłączył czujnik do komparatora analogowego, to on sam ciągle by analizował napięcie i w momencie pojawienia się przeciwnika zgłosił by przerwanie.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Mam czujnik sharp analogowy, podłączony pod ADC0 jak w kodzie napisać zeby dawal sygnal kiedy zobaczy przeszkode? Nie interesuje mnie pomiar odległości tylko samo sygnalizowanie ze widzi przeszkode? Napisałem coś takiego do obługi tego sharpa ale nie wiem co dalej, i czy to jest w ogóle dobrze

#include <avr/io.h>
#include <avr/interrupt.h>
int tablica[];
int c=0;
int a=0;
int wynik=0;

ISR(ADC_vect)
{
// nie wiem co tutaj powinno być
}


int main(void)
{
/*########## ADC- sharp ################*/
ADMUX |= (1<<REFS0);// Vref na 5V;  100nF do masy
ADCSRA |= (1<<ADEN); //włączamy przetwornik
ADCSRA |= (1<<ADPS1) | (1<<ADPS2) | (1<<ADPS0); //preskaler=128 
ADCSRA |= (1<<ADIE); //przerwanie adc


   while(1)
   {
      // nie wiem co tutaj powinno być

   }
}

__________

Komentarz dodany przez: Sabre

Scaliłem z poprzednim tematem. Nie rozumiem po co śmieciłeś nowym.

Skoro nie potrafisz napisać podstawowego programu to zacznij od jakiejś książki albo od kursu z forum.

Link do komentarza
Share on other sites

Bo z tamtego nic sie nie dowiedziałem, podłączyłem sharpa pod wejście ADC, jest to sharp analogowy, czy to co napisałem jest dobrze, i jak napisać to oczekiwanie na przeciwnika i w momencie pojawienia się żeby wystąpiło przerwanie?

Link do komentarza
Share on other sites

Musisz sprawdzić jaki wynik odczytasz z ADC przy odległości jaka cię interesuje. Potem w pętli sprawdzasz czy wynik jest mniejszy i jeżeli jest to robot wykonuje akcję.

To wszystko.

Link do komentarza
Share on other sites

Jak nie wiesz jak coś takiego napisać to może lepiej kup sobie jakiś termometr analogowy i spróbuj najpierw odczytać temperaturę ? Idea ta sama...

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.