Skocz do zawartości

dondu

Nowy
  • Zawartość

    983
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    8

dondu zajął 1. miejsce w rankingu.
Data osiągnięcia: 20 grudnia 2011.

Treści użytkownika dondu zdobyły tego dnia najwięcej polubień!

O dondu

  • Urodziny 01.01.1967

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Gliwice

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

Osiągnięcia użytkownika dondu

Kreator

Kreator (11/19)

  • Za 25 postów
  • Za 5 postów
  • Za 100 postów
  • Ulubieniec czytelników
  • Lokalna gwiazda

Odznaki

77

Reputacja

  1. O, faktycznie, nie zauważyłem - swoją drogą załączyłeś niezgodnie z zasadami zamieszczania zdjęć na forum 🙂 Ja załączyłem link do dokumentu Atmela, który przy okazji warto w całości poczytać.
  2. Tak użyj 6-io pinowego, ale zgodnie ze standardem str 6: Atmel AVR042: AVR Hardware Design Considerations
  3. Oj, raczej podpowiedzi 🙂 Oto pierwsze z nich: 1. C5, C6, C8 - pomyliłeś jednostki uF z nF. 2. Rozmieszczenie pinów w gnieździe programatora masz niezgodne ze standardem. 3. nie podajesz wartości wszystkich elementów więc nie można sprawdzić np. R6-R9.
  4. To dobrze 🙂, ponieważ naniesiesz uwagi, które podał przedmówca dot 7805, z małą poprawka dot. kondensatora na AREF, którego nie musisz dodawać, jeżeli nie używasz ADC, a tak chyba jest? 1. PCB - kwarc i jego kondensatory odwrotnie na PCB - kwarc bliżej uC a kondensatory z drugiej strony, ale TXD poprowadź jak najdalej od kwarcu u jego kondensatorów. Niestety tutaj musi być kompromis, więc jeżeli nie dasz rady, zmienić położenia kwarcu, to chociaż ścieżkę i przelotkę TXD odsuń od kwarcu i jego kondensatorów. 2. SCHEMAT + PCB: C1, C3 i C6 mają nieodpowiednie wartości. Powinny mieć 100nF i być jak najbliżej pinów zasilających uC (osobno dodaj te przy 7805 jak napisał przedmówca). 3. Dodaj kondensatory filrujące zasilanie pozostałych układów scalonych i podobnie jak z 7805 zrób regulator na 3,3V. Do tych punktów przeczytaj odpowiednie fragmenty, w tym artykule: Dla początkujących - Zakłócenia w pracy mikrokontrolerów - poradnik praktyczny dla robotyków. I uwaga istotna z punktu widzenia Twojej rutyny oraz zagapienia się tych którzy z Twojego schematu skorzystają w przyszłości. Nigdy nie definiuj tak gniazda ISP jakie masz na tym schemacie. To pierwszy stopień do pomyłek, gdy gniazdo jest narysowane prawie tak jak wygląda w rzeczywistości, ale ma przestawione piny. Kiedyś na innym forum właśnie taki przypadek widziałem i ktoś kupę czasu stracił, zanim zorientował się, że ma źle podłączone sygnały programatora. Ty masz je podłączone prawidłowo, chodzi mi tylko o rutynę.
  5. Wysłałeś już? Jeżeli nie, to pokaż aktualny schemat i dodaj PCB.
  6. Aż w końcu na zawodach zgodnie z prawem Murphy'ego nastąpi ten pierwszy raz. Może więc przeczytaj to co wskazałem, by wiedzę nabyć ... od Atmela, nie ode mnie. Wywal je.
  7. To przeczytaj punkt w linku, który Ci podałem, a konkretnie podpunkt dot. pinu RESET. Czy zaszkodzą? Pewnie nie, ale na pewno nic nie dadzą. EDIT: Nie tylko Piotrze. Autor zwiera naładowany kondensator do masy, a to grozi uszkodzeniem mikrokontrolera, co opisałem w w/w punkcie.
  8. Tak na szybko: 1, LEDy bez rezystorów? Coś się usmaży ... 2. jeżeli kondensator na resecie, to poczytaj punkt III.2 tutaj . 3. XTAL'e - coś nie teges. Co tam kombinujesz?
  9. dondu

    IPreferPI

    Twój problem z enkoderami nie musi wynikać z długości pracy Twojej funkcji ich obsługi, tylko z blokowania dostępu do tej funkcji przez inne funkcje obsługi przerwań. Innymi słowy przy 20MHz zegarze 500tików/s to żadne obciążenie dla uC. Ale jeżeli inna funkcja przyblokuje przerwania na dłużej, to możliwe jest pominięcie któregoś impulsu enkodera, ponieważ flaga przerwania PCINT2 zostanie nadpisana pomimo, że poprzednie przerwanie jeszcze nie zostało obsłużone. Zastanów się nad całym programem pod tym kątem. EDIT: Generalnie globalne przerwania są wyłączane sprzętowo w momencie rozpoczęcia obsługi przerwania i odblokowywane w momencie wyjścia z funkcji assemblerowym rozkazem reti który jest przez kompilator dodawany na końcu funkcji. Dlatego funkcja obsługi przerwania zadeklarowana przez baton'a w taki sposób: ISR(PCINT2_vect) // aktualna wartość enkoderów w globalnych int enkoderL, enkoderP { ... } nie wymaga blokowania przerwań na jej początku, ani uruchamiania ich na końcu. Jeżeli natomiast chcemy by funkcję mogło przerwać inne przerwanie należy dodać do kodu na samym początku sei(): ISR(PCINT2_vect) // aktualna wartość enkoderów w globalnych int enkoderL, enkoderP { sei(); ... } lub użyć atrybutu ISR_NOBLOCK: ISR(PCINT2_vect, ISR_NOBLOCK) // aktualna wartość enkoderów w globalnych int enkoderL, enkoderP { ... } który zrobi dokładnie to samo co powyżej, czyli doda sei() na początku funkcji.
  10. dondu

    Linefollower nie reaguje na linie

    No to zapoznaj się z tym artykułem: Dla początkujących - Zakłócenia w pracy mikrokontrolerów - poradnik praktyczny dla robotyków.
  11. dondu

    Sumopiech

    Fajnie by było gdybyś pokazał schemat. Nie przejmuj się komentarzami - sumo to sumo, tak jak samochód to samochód niezależnie czy syrena, czy Porsche 🙂
  12. dondu

    Definiowanie znaków w LCD

    OK, nie popatrzyłem. W takim razie nie pomogę bo BASCOM mnie nie lubi:) Jeżeli zapełniłeś cały flash Atmega8 i optymalizacje masz włączoną prawidłowo, to czas na zmianę języka na C.
  13. dondu

    Definiowanie znaków w LCD

    Jakiego środowiska używasz?
  14. dondu

    Definiowanie znaków w LCD

    Jaką optymalizację masz włączoną?
  15. Po pierwsze wklejaj schematy w formie graficznej - nie każdy ma Eagle pod ręką, przez co dłużej czekasz na podpowiedzi. Masz zamieniony MOSI z MISO: Zobacz jak są wyprowadzone piny w programatorze: http://mikrokontrolery.blogspot.com/2011/04/plytka-stykowa-zasady.html Poczytaj także ten artykuł: Dla początkujących - Zakłócenia w pracy mikrokontrolerów - poradnik praktyczny dla robotyków. i popraw swój schemat.
×
×
  • 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.