Skocz do zawartości

osmial

Użytkownicy
  • Zawartość

    15
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

osmial wygrał w ostatnim dniu 5 kwietnia 2013

osmial ma najbardziej lubianą zawartość!

Reputacja

1 Neutralna

O osmial

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Piotrków Trybunalski
  • Zawód
    student
  1. Dobrze, że ktoś o tym wspomniał bo, nie czepiając się, na technicznym blogu w technicznym (można by przypuszczać) wpisie, mniej o technicznych aspektach tematu niż na wp*... Może jestem ostry ale tam przynajmniej autor wspomniał że procek jest kręcony już w fabryce! Rozwijając jeszcze myśl Elvisa - nie do końca się zgadzam, że sytuacja będzie jak z Linuksem - to zupełnie inny segment i tutaj nie liczą się programy z Windowsa. Zaletą Linuksa jest otwarty kod który możemy przebudować na każdą praktycznie architekturę i używać. WIndowsa dostaniemy pewnie mocno okrojonego i bez aplikacji które już znamy z desktowpów. Nie będzie też pewnie jakiegoś wielkiego boom'u na pisanie takich apek przez firmy bo systemy wbudowane to z definicji urządzenia specjalizowane w związku z czym wysypu darmowych aplikacji bym się nie spodziewał. Ale chętnie poobserwuję tę rywalizację. Ze sprzętowego punktu widzenia również zastanawiam się czy jest się czym podniecać. RPI jest słabsze od konkurencji pomimo, że oferują nowszą płytkę. Jedyne co faktycznie jest plusem RPI to społeczność. Nie oszukujmy się jednak, linuks to linuks - jest dużo miejsc w sieci gdzie można szukać pomocy. Poza tym do każdej płytki dostajemy jakiś oficjalny build który powinien na niej ruszyć - resztę można sobie samemu do konfigurować albo zrobić swoje distro. Żeby nie było, tutaj źródełko do krótkiego porównania co konkurencja oferuje w tej samej cenie: http://www.cnx-software.com/2015/02/02/raspberry-pi-2-odroid-c1-development-boards-comparison/ Warto wziąć pod uwagę, że RPI2 to produkt jeszcze ciepły, Odroida C1 już jakiś czas produkują. *wp, onet albo inny jakiś, że tak napiszę, mainstreamowy portal o wszystkim i niczym
  2. @matt90 - atmega32 to nie mikrokontroler 32 bitowy, to 8 bitowiec z 32kB pamięci flash Wracając do Twojego pierwszego pytania to przede wszystkim powinieneś napisać jaki to ma być typ robota, bo mam co najmniej kilka pomysłów ale fajnie było by znać chociaż ogólny zarys problemu. Alternatywą dla propozycji które już padły może być moduł GPRS, który nie wymaga stawiania systemu operacyjnego, uC komunikuje się z modemem poprzez UART więc nawet najprostsza avrka wystarczy do tego celu.
  3. dzięki za radę, jest na prawdę przednia:) Teraz tylko wskaż mi miejsce gdzie napisałem, że taki kod jest czytelny. Widzę, że mylisz pojęcia, bo to co uważasz za pułapkę języka jest tak naprawdę złym (w sensie prowadzącym do nieczytelności) formatowaniem kodu.
  4. OldSkull, pisząc, że jest to błąd miałem na myśli ten konkretny przykład gdzie ten średnik zmienia logikę dzialania programu. Zastosowanie while(warunek); jest jak piszesz stosowane nagminnie, szczególnie w pracy z mikrokontrolerami. Nie zgodzę się jednak, że otwarcie nowego bloku jest błędem. W mojej wersji gcc: gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) taki kod: while(1); { int i = 0; } kompilowany z flagą -Wall nie daje nawet warningów. Tutaj: http://devpytania.pl/questions/17297/po-co-cc-pozwala-na-stawianie-nawiasow-klamrowych-do-ktorych-nie-jest-zastosowana-instrukcja-sterujaca troszeczke więcej na ten temat. Jest też zaproponowane kilka ciekawych zastosowań tej opcji:)
  5. Jasne, tylko pisanie w artykule np.: while (*s != 0); { s++; } i zaznaczanie, że jest to pułapka języka jest IMO złym nastawieniem autora, bo to najzwyklejszy błąd w kodzie, a to czy kompilator zwrócu warning czy nie to kwestia kompilatora i ewnetualnie nad tym można się rozwodzić. Chodzi mi o to, że język sam w sobie nie powinien być rozpatrywany w kontekście tego czy ma pułapki czy nie jeśli te zachowania przewiduje dokumentacja analogicznie w innym języku można stworzyć analogiczną konstrukcję do ww. i czy ona tez będzie pułapką języka? Nie, będzie to błąd programisty.
  6. Każda funkcjonalność jest nieoczywista jeżeli nie posiadamy wystarczającej wiedzy na jej temat. Ludzie natomiast nie muszą przyzwyczajać się do czyichś nawyków, ponieważ głupotą było by takie podejście w firmach w których ciągle występują zmiany w zespołach i tak naprawdę nigdy nie doszło by do poznania nawyków wszystkich pracowników, dlatego istnieje coś takiego jak zasady kodowania (tutaj odnośnie tego samego podrozdziału w artykule) które obowiązują w firmie i których trzymać się mają pracownicy. Co do reszty artykułu to tak jak powiedziałem, jeśli ktoś pisze świadomie w swoim języku, stara się rozumieć co gada do niego kompilator, korzysta z narzędzi kontrolujących jakość kodu, wycieki pamięci etc. wtedy artykuł tego typu można wsadzić między bajki. Oczywiście rozumiem, że chciałeś podzielić się wiedzą i jest to słuszne ale szczerze radzę abyś w przyszłości pisał artykuły w innym tonie bo takie jak ten są podwaliną forumowych mitów, a nie to pewnie było Twoją intencją. C jak każdy język ma swoje specyficzne funkcjonalności, nie jest też najprostszy i nie jest idioto odporny ale żaden nie jest. Może natomiast być piekielnie efektywny, a ceną za to są jak to nazwałeś 'pułapki', zdefiniowane przez standard z resztą
  7. Możliwe, że sie czepiam ale widzę ten temat któryś tam już raz i za każdym razem rośnie mi ciśnienie Dlaczego? Po pierwsze tytuł jak z onetu mający na celu moim zdaniem nabicie kliknięć w link, a zawartość... jest kontynuacją tytułu. O co mi chodzi? Mianowicie o przedstawienie elementów języka jako czegoś co zostało wprowadzone nie po to aby służyć programiście ale na złość jemu. Na przykład taki cytat (zdań w tym sensie jest wiele w tym wpisie). Autor traktuje czytelnika jak przygłupa który ma w każdym kolejnym podpunkcie wpajane, że język C powstał po to by utrudnić mu życie... tylko mam takie jedno pytanie, dlaczego coś takiego miało by nie być stosowane ? Dopuki programista świadomie korzysta z języka moim zdaniem nie ma się czego obawiać. Nie ma w tym wpisie prawdopodobnie żadnej ukrytej funkcjonalności języka nie opisanej przez standard, jeśli więc standard coś przewiduje to jaki sens ma pisać o pułapkach ? Pułapka to coś nieznanego, co może faktycznie wymagać sprecyzowania A coś takiego: To już na prawdę zagrywka na poziomie onetu To nie struktury są złe. Po pierwsze można w kompilatorze wyłączyć wyrównywanie, po drugie jest to jak najbardziej porządana funkcjonalność.
  8. 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...
  9. Nie robisz XOR'a na zmiennej a; w momencie deklaracji a, zdefiniuj ją na zero, a w przerwaniu ją XOR'uj z jedynką. Efekt będzie taki, że po każdym wejściu w przerwanie nastąpi zmiana z 0 na 1 lub z 1 na 0. Standard przewiduje, że wartość 0 może być traktowana jako FALSE, natomiast każda inna jako TRUE. Więc wrzuć a (bez żadnych porównań) do if;a i będzie działać tak jak chcesz. Mam jeszcze pytanie do tego warunku: if (!(PIND & przycisk)) co zamierzasz dzięki temu osiągnąć ?
  10. więc zrób zmienną globalną (koniecznie volatile) i ją xor'uj. Zmienna globalna i volatile bo obsługę przycisku w takim przypadku wypadało by wrzucić w przerwanie.
  11. W obsłudze przycisku zrób XOR'a: PORTx ^= 0x01;
  12. ../../../ <- ten fragment w ścieżce jest skrótem, a nie wyjściem w górę Nie mam teraz możliwości podejrzenia jaka jest dokładna ścieżka ale możesz sobie poszukać i poćwiczyć jednocześnie zwiedzanie katalogów w terminalu. Komenda LS (może być z małych ofc ale będę tak pisać bo jest czytelniej) pokazuje zawartość katalogu więc po wejściu w /usr/lib/gcc/avr/4.5.3/ wrzuć LS lub LS -ALL (wtedy masz podgląd praw dla każdego pliku/katalogu) i sobie przeglądaj dalej każdy kolejny.
  13. Z tego co widać nie ma błędu tylko ostrzeżenie, dokładnie to chodzi o wyłączoną optymalizacje itd. W dodatku nie korzystasz z żadnej funkcji z util/delay.h więc wszystko powinno brykać. Upewnij się, czy otrzymujesz plik wynikowy, skorzystaj też z funkcji _delay_ms() lub _delay_us() i zobacz czy dostajesz error. pozdro ps. po wejściu w lib powinieneś szukać gcc, a w nim dopiero avr
  14. hej, jeśli korzystasz z Bray terminala to wystarczy, że w sekcji Transmit zaznaczysz opcję CR = CR + LF i w linijce w której znajduje się pole do wprowadzania tekstu zaznaczysz + CR i wtedy nie musisz dokładać żadnych CR'ów w komendach (oczywiście kończących komendę). Poza tym w jakiej postaci wprowadzasz mu tego czy tak jak wpisałeś tutaj? Jeśli tak, to jest to błąd ponieważ CR i LF to odpowiednio znak końca linii i powrotu karetki w tablicy ascii widnieją jako pojedyncze znaki więc sim900 ani żadne inne urządzenie nie zrozumie czegoś takiego , trzeba podać coś dla niego zrozumiałego. W tym przypadku w terminalu (Bray ma taką możliwość) możesz podać wartość hex konkretnego znaku, ba możesz nawet mieszać ze sobą ascii i hexy, warunek jest jeden, trzeba hexa poprzedzić znakiem dolara aby Bray wiedział, że ma do czynienia ze znakiem podanym w postaci hexagonalnej. W przypadku programu w C wystarczy podać standardowe znaki końca linii (\n) lub powrotu karetki (\r) i zostaną one poprawnie odebrane
×
×
  • Utwórz nowe...