Skocz do zawartości

miccaldo

Użytkownicy
  • Zawartość

    65
  • Rejestracja

  • Ostatnio

Wszystko napisane przez miccaldo

  1. Właśnie tak zrobiłem, przy pomocy diod Dzięki za pomoc!
  2. O, to jest fajne rozwiązanie! Myślę że spróbuję z bramkami OR. Dzięki wielkie!
  3. Witam, Chcę zrobić własny pilot IR do sterowania urządzeniem. Będzie on miał 4 przyciski. Chciałbym również wprowadzić kontroler (Attiny2313A) w tryb power down w celu oszczędzania energii. Mam jednak problem z wybudzeniem kontrolera, bo wiem że wybudzić go można podając stan niski na pin INT0. Nie chcę jednak aby określony przycisk go wybudzał, a dowolny przycisk. Jak mogę w najprostszy sposób podłączyć przyciski, tak aby każdy mógł wybudzić AVR, ale żeby nie wpływały na siebie nawzajem? Pozdrawiam.
  4. Witam, Próbowałem zmienić taktowanie uC z 9MHz(fabryczne) na 4.8MHz. Temu taktowaniu odpowiadają fusebity: LOW - 0x69 HIGH - 0xFF Fusy wgrywałem programem Eclipse. Po wgraniu, dostaje rc - 1... Dlaczego, skoro ten problem dotyczy najczęściej jeśli ustawiło się taktowanie z kwarcem zewnętrznym, a ja przecież tego nie ustawiłem?? Tu nawet nie ma gdzie kwarca podłączyć chyba że jakiś generator. Dodam, że jakiś czas temu wydaje mi się ze wgrywałem je dokładnie tak samo na taki sam kontroler i nie było problemu. O co może chodzić?
  5. W zasadzie no nie musze.. ale jak to człowiek leniwy jest nie chce się odłączać wtyczki za każdym razem ale jest to pomysł, zamiast stać w miejscu to rzeczywiście mogę odłączać ten sensor. Z tym że i tak z chęcią bym rozwiązał ten problem, bo o coś musi chodzić tylko raczej cieżko powiedzieć co Gdybym miał wolny choć jeden pin procesora to bym zostawił to MOSI i raczej by nie było problemu, ale no niestety pełny kontroler zajęty, no RESET zostawiłem wolny ale nie posiadam równoległego programatora także nie będę tutaj zmieniał fusebitów, a kto wie może i z resetem by coś krzaczyło.
  6. Witam, Mam przedziwny problem, otóż robię taki projekcik, dwa panele z ledami i czujnikami HC-SR04. Schemat jest taki: Proszę przymknąć oko na te złącza goldpin Jak nie mogę znaleźć elementu to po prostu wstawiam goldpiny a na płytce i tak pasuje. Ogólnie płytkę mam wytrawioną, polutowaną, panele gotowe, kawał roboty za sobą. Pisząc program jednak musiałem posprawdzać każdą część po kolei, osobno enkoder, osobno ledy, dobrać pwm itd. i na koniec jeśli będę pewien że wszystko działa, napiszę finalny program. Mam niestety jednak wrażenie że elektronika "szuka" najbardziej głupic
  7. No tak miałem źle tłumienie sondy ustawione... Że nie zwróciłem na to uwagi To wszystko jest ok. Dzięki za pomoc
  8. Witam, Miałem problem z tym czujnikiem bo uC nie wykrywał mi żadnego impulsu na pinie ECHO, sprawdzilem więc to na oscyloskopie i okazało się że czujnik prawidłowo generuje impulsy, nawet odległość się zgadza po przeliczeniu, ale wartość napięcia tego sygnału ma około 500mV :/ Dlatego też kontroler tego nie łapie... Tutaj zdjęcie jak to wyglada: Czujnik powinien podać chyba coś koło napiecia zasilajacego(5V)? Wiecie może dlaczego takie niskie napięcie podaje ten czujnik? Szukałem na internecie ale nie znalazłem podobnego problemu.
  9. Witam. Wyjąłem z komputerowej nagrywarki DVD malutki silniczek krokowy. Przy sterowaniu pełnokrokowym jednofazowym silnik ma zbyt mały moment. Napisałem więc program do sterowania dwufazowego w oparciu o artykuły w internecie. Jest to niby nic trudnego, jednak moment zamiast zwiększyć się o te 40%, to raczej podziałało w drugą stronę W sterowaniu jednofazowym kiedy przytknę palcem wału silnika to czuje opór, a z kolei przy dwufazowym już gdy tylko dotknę, to silnik daje rady, zatrzymuje się... Program jest prawdopodobnie dobrze napisany, gdyż silnik się obraca. Nie wariuje, nie gubi
  10. Ok zakupiłem dzisiaj przez internet akumulator li - pol. Napiszę jak serwa będą się zachowywały przy takim zasilaniu. Dzięki!
  11. Witam, Tworze quadrupeda z 12 serwami. Jestem juz bardzo blisko aby robot zrobił pierwsze kroki, jednak niestety napotkal mnie taki problem jak w tytule tematu Kiedy chce np, aby robot dwoma nogami zrobił krok w przód(czyli sterowanie 6 serwami), to procesorek radzi sobie całkiem nieźle, nie ma problemów. Kłopot pojawia sie w momencie, kiedy chce dwoma nogami zrobić krok w przód, a jednoczesnie serwa w pozostałych nogach utrzymują kat aby robot sie nie rozkraczyl. Wtedy, dzieje sie istna masakra! Serwa zaczynają szalec, obracać sie na maksa w jedna stronę, no po prostu tragedia! Ale dlac
  12. Witam, Tworzę robota kroczącego z czterema nogami w którym jedna kończyna posiada 3 serwa, a całościowo będzie posiadał 12 serwomechanizmów. Proszę oto zdjęcia robota, jak widać dopiero ma dwie nogi i niekompletną ilość serw, ale za kilka dni już całość będzie gotowa. Chciał bym aby na początek noga zrobiła krok do przodu, jednak natrafiłem na pewien problem. Otóż kiedy próbuję sterować jednym serwem to poprawnie, czysto obraca się o taki kąt jaki ustalę w programie. Ale, kiedy np. chcę obracać o ten sam kąt, ale dwoma serwami - to jedno z nich zaczyna jakoś dziwnie drgać, obra
  13. Witam, planuję na wakacje zrobić robota czworonożnego wzorując się na popularnym robocie Phoenix, oto link: http://www.lynxmotion.com/c-117-phoenix.aspx Wszelkie elementy nóżek i korpusu wytnie frezarka która jest sparowana z programem AutoCad. Mam pytanie, czy ktoś posiada pliki, na których zapisane są skonstruowane elementy podobnego robota w finalnej wersji, gotowe do wycięcia? Niestety nie mam wprawy w tego typu programach, więc jeśli ktoś dysponował by takimi plikami na komputerze, byłbym bardzo wdzięczny jeśli mógłby mi ktoś udostępnić mi takie pliki Pozdrawiam
  14. Witam, tworzę obsługę czujnika HC-SR04, ale w trakcie naszła mnie pewna wątpliwość co do funkcji warunkowej. Czy w takim przypadku: volatile uint8_t flag = 0; ISR(INT0_vect){ if(flag == 0){ // flag = 0, przerwanie wykonuje funkcję warunkową cnt = 0; LCD_GoTo(0,0); LCD_Int(cnt); flag += 1; MCUCR |= (1<<ISC01); // przerwanie opadajace } if(flag == 1){ // w poprzedniej funkcji if zmienna flag została zwiększona o 1, czy przerwanie od razu przejdzie do następnej funkcji if? Czy zakończy się, a przy następnym wygenerowaniu przerwania zostanie wykonana funkcja if(flag == 1)?
  15. Tak, mam pełną wersję programu, a "Auto SCK Speed" jest zaznaczone. Program był skompilowany pod częstotliwość 8Mhz, ale pamiętam że chyba wszystko popsuło się po ustawieniu 0,4Mhz - 0,9Mhz (tylko rezonator ceramiczny). Spora różnica częstotliwości, może to zabiło atmege?
  16. Witam, testowałem sobie zachowanie timera, ustawiając fusebity w mkAVRcalculator, w zakładce Fusy uproszczone. Program wyświetlał sekundy na wyświetlaczu lcd, i po wybraniu jakiejś opcji z zewnętrznym kwarcem, nagle z napisów na wyświetlaczu zrobiły się lekko widoczne prostokąty, a po ponownym podłączeniu i próbie sprawdzenia uC powyższym programem, wyświetla się Błąd AVRDUDE mikrokontroler to Atmega 8 w module uruchomieniowym z wyświetlaczem lcd i kwarcem 8 MHz. Nie ustawiałem żadnych lockbitów. Słyszałem że korzystając z fusów uproszczonych nie ma możliwości uszkodzenia procesora... a tu
  17. Ok, ale np. w tym kodzie w poglądzie zmiennej cnt widzę że jeśli równa się 100, to obrot=2 -.- A z kolei jeśli podłącze normalnie z enkoderem to po jednym obrocie zapali się jedynka i tyle, koniec. Dlaczego to nie chce działać? #define F_CPU 1000000L #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define _BV(bit) (1 << (bit)) #define DIGITS 0xFB #define KANAL_A 0x04 #define DP 0x01 #define switch 1 //wyświetlacz LED volatile static uint8_t DIGITS_TAB[11] = {0x80,0xE3,0x09,0x21,0x62,0x30,0x10,0xE1,0x00,0x20,0x01}; volatile uint16_t cnt = 0;
  18. Witam, tak ma Pan racje i już napisałem cały program z tym że utknąłem na pewnej rzeczy otóż w funkcji switch program powinien zapalać odpowiednie segmenty przy odpowiednich wartościach, ale zapala się jedynka i dwójka jednocześnie, właśnie nie wiem co by zrobić aby po kolei switch wybierało odpowiednie wartości. Oto program: #define F_CPU 1000000L #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define _BV(bit) (1 << (bit)) #define DIGITS 0xFB #define KANAL_A 0x04 #define DP 0x01 //wyświetlacz LED volatile static uint8_t DIGITS_TAB[11] = {
  19. Witam, muszę zrobić licznik impulsów enkodera. Jest to enkoder inkrementalny MHK40. Program ma za zadanie w przerwaniu timera cały czas wykrywać zbocze pinu do którego podłączony jest kanał A enkodera, a jeśli pin zmienił stan, dodać +1 do licznika. Program nie działa jak bym chciał, bo zlicza najprawdopodobniej z każdym przepełnieniem licznika niezależnie od tego czy pin kanału A zmienił stan, jeśli powiedzmy ustawię preskaler na 1024, to jedynka zapali się dopiero po jakimś czasie. Jeśli ustawię na 8, zapali się zdecydowanie szybciej, chociaż tuleja enkodera stoi w miejscu. Oto program,
  20. miccaldo

    Demultiplekser 74LS138

    Ok, widziałem dokumentację, w tej tablicy prawdy wszystko jest wyjaśnione. Ale mam inny problem, bo podłączyłem demultiplekser w taki sposób: A - PB4 B - PB3 C - PB2 G1 - PA1 G2A - PA0 Ale teraz uC(attiny2313) zachowuje się w bardzo dziwny sposób, bo mam ustawione w ten sposób: int main(void) { DDRA = 0xff; DDRB = 0xff; DDRD = 0xff; PORTD = 0x00; PORTA = 0x00; PORTB = 0x00; } czyli stany niskie na wszystkich portach, ale niezależnie od tego na całym porcie A jest stan wysoki, na pinach PD0, PB2... i tutaj dotknąłem VCC anodą diody i już nic nie działa. O co tutaj chodzi?
  21. Witam, chcę zaprogramować zapalenie diody przez demultiplekser, jednak jeszcze nie miałem do czynienia z tego typu scalakami także mam parę pytań: 1. Piny A, B, C podłączam do pinów wejściowych uC? 2. Piny enable, czytałem że podobnie jak kanały A, B, C są to piny sterujące, czy muszę je podłączać? Nie mogę sterować tylko za pomocą kanałów A, B, C? 3. Nie za bardzo rozumiem jak to programować, wiem że podaję 1 i 0 na kanały, ale to wygląda w ten sposób że kiedy podam 1 na kanał A, B i C to na wszystkich wejściach będzie stan wysoki? A kiedy podam na kanał A 1, B i C 0, to stan wysoki będzi
  22. Witam, dzisiaj pojawił mi się problem z którym dotychczas się jeszcze nie spotkałem przy kompilacji programu: > "make.exe" all AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x60000, State 0x10000 C:\WinAVR-20070525\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0 AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x60000, State 0x10000 C:\WinAVR-20070525\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0 -------- begin -------- avr-gcc (GCC) 4.1.2 (WinAVR 20070525) Copyright © 2006 Free Software Foundation, Inc.
  23. Faktycznie taki głupi błąd... Wszystko już działa, dziękuję za pomoc:)
  24. Już próbowałem tak wcześniej, ale niestety nie reaguje na 3 przycisk, chociaż on działa bo sprawdzałem. Ten program zatrzymuje się przy drugim if'ie. Spróbowałem z break;, w ten sposób: if(predkosc>240) break; teraz silnik się rozpędza do wysokich obrotów i nie reaguje na nic, chyba wychodzi z pętli także to zły pomysł jest. [ Dodano: 24-11-2012, 16:07 ] Tutaj np. idealnie działa podobny program: http://mnowator.pl/tag/sterowanie-jasnoscia-diody-led-przez-pwm/ ale jakoś nie mogę dojść do tego, może ta funkcja return 0 coś zmieni? Albo spróbować coś z else if...
  25. A dało by się zrobić, aby funkcja if działała niezależnie od tego, czy powyższy warunek jest spełniony, czy też nie?
×
×
  • 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.