Skocz do zawartości
aixI

Attiny2313 i kwarc

Pomocna odpowiedź

Cześć, chciałem się zapytać, czy jak do uC Attiny2313 dodam kwarc 4MHz to szybkość, np. wykrycia przeszkody przez czujnik SHARP'a 10cm wzrośnie? Bo teraz mam bez kwarca i robot wjeżdża na przeszkodę zamiast ją ominąć.

AixI.

Udostępnij ten post


Link to post
Share on other sites

Nie nie będzie zauważalnego wzrostu

Udostępnij ten post


Link to post
Share on other sites

Ponadto Attiny2313 ma wewnętrzny oscylator 8MHz. Domyślnie włączony jest preskaler o wartości 8.

Udostępnij ten post


Link to post
Share on other sites

To czym to może być spowodowane?? Płyta główna robota jest na razie testowana na stykówce i położona na podwoziu robota.

Udostępnij ten post


Link to post
Share on other sites

Pokaże kod, bo schemat uległ zniszczeniu 😃 przy formacie systemu. Są to dwa kody połączone w jeden cały - mogę sterować pilotem RC5 i omijać przeszkody. (omijanie botowi jeszcze nie wychodzi tak jak pisałem wyżej)

$regfile "attiny2313.dat"
$crystal = 1000000
$lib "mcsbyte.lbx"

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Rc5 = Pind.5
Config Portb = Output
Config Pind.2 = Input
Config Pind.0 = Input


Silnik_lewy_a Alias Portb.1                                 'Atmega8 Silnik_lewy_a Alias Portb.4  V
Silnik_lewy_b Alias Portb.0                                 'Atmega8 Silnik_lewy_b Alias Portb.0  V
Silnik_prawy_a Alias Portb.5                                'Atmega8 Silnik_prawy_a Alias Portb.5 V
Silnik_prawy_b Alias Portb.6                                'Atmega8 Silnik_prawy_b Alias Portb.3 V


Pwm1a = 255
Pwm1b = 255

Dim Address As Byte , Command As Byte
Dim Tryb As Bit

Enable Interrupts



Do
  Debounce Pind.0 , 0 , Zmiana_trybu , Sub
  If Tryb = 1 Then

'1 program


     If Pind.2 = 1 Then


        Set Silnik_lewy_a
        Reset Silnik_lewy_b
        Set Silnik_prawy_a
        Reset Silnik_prawy_b

        Debounce Pind.2 , 0 , Skrec , Sub                  'skręć, gdy czujnik wykryje przeszkode

     End If

  Else

'2 program

  Getrc5(address , Command)

  Command = Command And &B01111111

  If Command = 2 Then                                      'przód
     Set Silnik_lewy_a
     Reset Silnik_lewy_b
     Set Silnik_prawy_a
     Reset Silnik_prawy_b
  Else
     Reset Silnik_prawy_a
     Reset Silnik_prawy_b
     Reset Silnik_lewy_a
     Reset Silnik_lewy_b


  If Command = 9 Then                                      'tył
     Reset Silnik_lewy_a
     Set Silnik_lewy_b
     Reset Silnik_prawy_a
     Set Silnik_prawy_b
  Else
     Reset Silnik_prawy_a
     Reset Silnik_prawy_b
     Reset Silnik_lewy_a
     Reset Silnik_lewy_b


  If Command = 5 Then                                      'lewo
     Reset Silnik_lewy_a
     Set Silnik_lewy_b
     Set Silnik_prawy_a
     Reset Silnik_prawy_b
  Else
     Reset Silnik_prawy_a
     Reset Silnik_prawy_b
     Reset Silnik_lewy_a
     Reset Silnik_lewy_b


  If Command = 7 Then                                      'prawo
     Set Silnik_lewy_a
     Reset Silnik_lewy_b
     Reset Silnik_prawy_a
     Set Silnik_prawy_b
  Else
     Reset Silnik_prawy_a
     Reset Silnik_prawy_b
     Reset Silnik_lewy_a
     Reset Silnik_lewy_b
  End If
  End If
  End If
  End If
End If
Loop

Zmiana_trybu:
Tryb = Not Tryb
Return

Skrec:
'skręć (w prawo)
Set Silnik_lewy_a
Reset Silnik_lewy_b
Reset Silnik_prawy_a
Set Silnik_prawy_b
Waitms 250

Return

Udostępnij ten post


Link to post
Share on other sites

Słabo znam bascoma(a właściwie w ogóle nie znam) ale spróbuj przenieść obsługę czujnika do przerwania zewnętrznego tak by na przeszkodę reagował natychmiastowo.

Udostępnij ten post


Link to post
Share on other sites

W przypadku tych czujników nie musisz używać polecenia debounce, ich zbocza są bardzo wyraźne i nie drgają im styki 😋

Udostępnij ten post


Link to post
Share on other sites

Bobby, dzięki za uwagę 🙂

Propaganja, to wyjście czujnika muszę podłączyć do pinu INT0, INT1 lub INT2?? Czy programowo jakoś??

Udostępnij ten post


Link to post
Share on other sites

Muszą być podłączone do pinów przerwań, czyli INTx. Rób testy na razie z "laboratoryjną" przeszkodą - białą i stosunkowo dużą.

Udostępnij ten post


Link to post
Share on other sites

Nie mogę znaleźć gdzie w Attiny2313 jest INT2 :/ INT1 i 0 jest pokazane w DS ale INT2 nie widzę :/

Udostępnij ten post


Link to post
Share on other sites

Wniosek nasuwa się jeden: t2313 ma tylko 2 kanały przerwań zewnętrznych. Plus PCINT0...7.

Udostępnij ten post


Link to post
Share on other sites

Sprawdzałem na INT1 z wgranym jednym kodem (na omijanie przeszkód) to radził sobie nieźle, a jak wgrałem ten sam kod połączony z drugim (RC5) to tak samo jak przedtem.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...