eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Nauka C - co radzicie ?
Ilość wypowiedzi w tym wątku: 30

  • 21. Data: 2009-06-05 13:16:40
    Temat: Re: Nauka C - co radzicie ?
    Od: Waldemar Krzok <w...@z...fu-berlin.de>

    Rafal schrieb:
    > Waldemar Krzok pisze:
    >> MH wrote:
    >>
    >> #define begin {
    >> #define end }
    >> #define or ||
    >> i tak dalej :-)
    >
    > #define TRUE FALSE
    > //Happy debugging suckers
    >
    > z dzisiejszego wydania joemonstera:)


    #define 0 7
    #define 1 0
    #define 4 2


    jeszcze lepsze

    Waldek


  • 22. Data: 2009-06-05 15:33:36
    Temat: Re: Nauka C - co radzicie ?
    Od: cepu69 <c...@t...pl>

    MH wrote:
    >> mozesz, ale nie musisz. Burdel mozna zrobic z programu w Pascalu, jak sie
    >> chce. A jak ci sie nie podoba, to zrob sobie cos takiego (na poczatku):
    >> #define begin {
    >> #define end }
    >> #define or ||
    >> i tak dalej :-)
    >
    > Nie wiedziałem. To już trochę mnie zachęca ...
    Witamy w krainie preprocesora ;)

    >> Ja sie uczylem "u zrodel", czyli Kernighan & Ritchie, zreszta mialem na
    >> to w sumie 4 godziny, wraz z napisaniem i przetestowaniem programu. Da
    >> sie.
    >
    > Być może zupełnie irracjonalnie się uprzedziłem do samej notacji.. Nie
    > mniej jednak , powiedz mi czy C pod kątem zastosowania w DSP bardzo różni
    > się od C jakiego używa się do pisania jakichś tam aplikacji pod peceta?
    Jezyk C, zreszta jak wiekszosc innych jezykow wyskiego poziomu, nie
    wprowadza doatkowych rozszezen ze wzgledu na archtekture. Tak wiec C
    jest "takie same" na DSP czy x86

    > Przykładowo , chcę wysłać bajt danych do portu o określonym adresie. Czy
    > są na to funkcje biblioteczne , czy muszę robić wstawki assemblerowe?
    DSP TI nie posiada przestrzeni I/O czyli dostep do rejestru wyglada tak
    samo :
    #define MY_REG_ADDR (0x12345678)

    *(* MY_REG_ADDR) = 0x12345678;

    lub opakowanie w funkcje/metode.

    >> A w Pascalu przy intensywnym uzywaniu unions i wskaznikow mozesz napisac
    >> program (dzialajacy gdzieniegdzie) dlugosci kilkunastu linijek gdzie
    >> postronny za cholere nie zalapie o co biega.
    >>
    > Jak zaglądam po 2-3 miesiącach do programów napisanych przez siebie , też
    > zastanawiam się o co temu idiocie chodziło !!
    Biorac to pod uwage oraz "przemyslenia" zponizszych postow dziwi mnie brak
    konkluzji pt. Kod nalezy pisac w sposob w miare prosty i czytelny bo :
    1. Autor nie jest jedynym jego uzytkownikiem
    2. Pamiec autora jest zawodna
    itp.


  • 23. Data: 2009-06-05 16:01:40
    Temat: Re: Nauka C - co radzicie ?
    Od: Waldemar Krzok <w...@z...fu-berlin.de>

    cepu69 schrieb:

    >>> A w Pascalu przy intensywnym uzywaniu unions i wskaznikow mozesz napisac
    >>> program (dzialajacy gdzieniegdzie) dlugosci kilkunastu linijek gdzie
    >>> postronny za cholere nie zalapie o co biega.
    >>>
    >> Jak zaglądam po 2-3 miesiącach do programów napisanych przez siebie , też
    >> zastanawiam się o co temu idiocie chodziło !!
    > Biorac to pod uwage oraz "przemyslenia" zponizszych postow dziwi mnie brak
    > konkluzji pt. Kod nalezy pisac w sposob w miare prosty i czytelny bo :
    > 1. Autor nie jest jedynym jego uzytkownikiem
    > 2. Pamiec autora jest zawodna

    Konkluzja chyba oczywista i kawanaławizmu nie potrzeba. A jak potrzeba,
    to się pod tym podpisuję wszystkimi członkami. Bywają coprawda istoty
    programistyczne, które myślą, że jak program napiszesz czytelnie i
    dobrze skomentujesz, to po pierwsze będzie wolniej działał, a po drugie
    siedzisz jako programista na zaminowanym stołku. A to może się akurat
    obrócić przeciwko takiemu. Taki przypadek: mieliśmy w robocie studenta
    piszącego pracę dyplomową. Pisał porządne programy, znaczy działały, był
    szybki etc. Zrobił wszystko na czasie, obronił się na bdb. Po dyplomie
    nie mogliśmy go przyjąć, bo akurat było cienko z możliwością zapłacenia
    mu normalnej pensji, więc odszedł i chciał się zwerbować do innej firmy.
    Pech chciał, że szef nowej firmy to kumpel naszego szefa. No i się
    zdzwonili, a szef słyszał jak fakuję nad programem studenta. Podszedł,
    popytał, obejrzał i dał cynk kumplowi. No i były student nie dostał
    fajnej pracy, choć według aplikacji i CV był na pierwszym miejscu.
    Szukali jednak ludzi, którzy potrafią pracować w zespole i nic się nie
    wali jak w trakcie projektu ktoś pójdzie na chorobowe czy urlop.

    Waldek


  • 24. Data: 2009-06-05 16:17:48
    Temat: Re: Nauka C - co radzicie ?
    Od: "pawel" <p...@p...onet.pl>

    > Jaką literaturę polecacie , ew. coś w sieci do nauki od podstaw.
    Witam.

    Jako literaturę konieczną do przeczytania to Kernighan & Ritchie,
    przeczytanie i przerobienie prostych przykładów
    z tej knigi np: w dosowym borlandzie.
    Bez tego ani na dsp, ani avr, ani arm, ani windows API, ani linux ani
    cokolwiek innego.
    Książka jest ogólna i opisuje standard Ansii C. Nie ma chyba pozycji
    opisującej programowanie DSP w języku C.
    Jest zapewne tylko opis biblioteki udostępnionej przez producenta
    konkretnego DSP. Tzn. jak wywołać daną funkcję
    w języku C, jak odwołać się do portu w języku C itd..
    Te nawiasy {} nie różnią się niczym od begin i end. Poza tym zgodnie ze
    standardem ansii C nie ma możliwości definiowania zmiennych gdzie się chce
    tylko na początku programu lub początku funkcji, inaczej kompilator powinien
    zgłosić błąd.
    Pozdrawiam
    Paweł



  • 25. Data: 2009-06-05 20:13:14
    Temat: Re: Nauka C - co radzicie ?
    Od: Adam Dybkowski <a...@4...pl>

    cepu69 pisze:

    >> Przykładowo , chcę wysłać bajt danych do portu o określonym adresie. Czy
    >> są na to funkcje biblioteczne , czy muszę robić wstawki assemblerowe?
    > DSP TI nie posiada przestrzeni I/O czyli dostep do rejestru wyglada tak
    > samo :
    > #define MY_REG_ADDR (0x12345678)
    >
    > *(* MY_REG_ADDR) = 0x12345678;
    >
    > lub opakowanie w funkcje/metode.

    Raczej nie wszystkie TI DSP. Na przykład takie TMS320VC5416 (które mocno
    eksploatujemy w niektórych firmowych sprzętach) mają wydzieloną
    przestrzeń I/O, oddzielną od pamięci danych i oddzielną pamięć programu.
    Trzeba nieco więcej naspawać w kodzie aby zrobić dostęp I/O.

    Ale i tak przecież nikt zdrowo myślący nie będzie w C pisał
    przetwarzania sygnałów, FFT czy innego Viterbiego. Od tego są funkcje
    asemblerowe. A język C w przypadku procków DSP dobrze się sprawdza jako
    "klej" łączący różne kawałki kodu.

    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.


  • 26. Data: 2009-06-05 20:15:19
    Temat: Re: Nauka C - co radzicie ?
    Od: Adam Dybkowski <a...@4...pl>

    pawel pisze:

    > Te nawiasy {} nie różnią się niczym od begin i end. Poza tym zgodnie ze
    > standardem ansii C nie ma możliwości definiowania zmiennych gdzie się chce
    > tylko na początku programu lub początku funkcji, inaczej kompilator powinien
    > zgłosić błąd.

    Zmienne można definiować na początku każdego bloku {}, na przykład:

    if (a > 3)
    {
    int x;
    printf ("a = %d", a);
    x = a + 8;

    itd. Co wg mnie nie robi zamieszania w kodzie, a właśnie odciąża główny
    blok zmiennych deklarowany na początku funkcji.

    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.


  • 27. Data: 2009-06-06 09:26:27
    Temat: Re: Nauka C - co radzicie ?
    Od: "Artur M. Piwko" <m...@b...pl>

    In the darkest hour on Fri, 05 Jun 2009 22:15:19 +0200,
    Adam Dybkowski <a...@4...pl> screamed:
    >> Te nawiasy {} nie różnią się niczym od begin i end. Poza tym zgodnie ze
    >> standardem ansii C nie ma możliwości definiowania zmiennych gdzie się chce
    >> tylko na początku programu lub początku funkcji, inaczej kompilator powinien
    >> zgłosić błąd.
    >
    > Zmienne można definiować na początku każdego bloku {}, na przykład:
    >
    > if (a > 3)
    > {
    > int x;
    > printf ("a = %d", a);
    > x = a + 8;
    >
    > itd. Co wg mnie nie robi zamieszania w kodzie, a właśnie odciąża główny
    > blok zmiennych deklarowany na początku funkcji.

    Zawsze można od czasu do czasu tak:

    if (a > 3)
    {
    printf("a = "%d", a);
    {
    int x = a + 8;
    printf("x = %d", x);
    }
    }

    Ale po co, skoro mamy od jakiegoś czasu C99...

    --
    [ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:238B ]
    [ 11:25:11 user up 12095 days, 23:20, 1 user, load average: 0.13, 0.38, 0.45 ]

    If at first you don't succeed... So much for skydiving. -- Henry Youngman


  • 28. Data: 2009-06-06 21:18:00
    Temat: Re: Nauka C - co radzicie ?
    Od: Adam Dybkowski <a...@4...pl>

    Artur M. Piwko pisze:

    >> Zmienne można definiować na początku każdego bloku {}, na przykład:
    [...]

    > Zawsze można od czasu do czasu tak:
    >
    > if (a > 3)
    > {
    > printf("a = "%d", a);
    > {
    > int x = a + 8;
    > printf("x = %d", x);
    > }
    > }

    To też bywa czasem czytelniejsze choć nie wygląda już tak "naturalnie". ;)

    > Ale po co, skoro mamy od jakiegoś czasu C99...

    Powiedz to kompilatorowi dla texasowych DSP'ków, nie mającemu nic
    wspólnego z gcc.

    BTW: W ogóle pisząc dla takich procków, natywnie 16-bitowych (gdzie
    nawet typ "char" jest 16-bitowy oraz sizeof(int)=1) trzeba od razu
    myśleć nieco inaczej, niż w aplikacjach dla ARMa czy AVRa. Portowanie
    normalnie pisanych bibliotek na DSPki 16-bitowe wiąże się z niemałym
    zamieszaniem. Tak to już jest gdy się używa np. TMS320VC5416 i
    kompilator C sprzed chyba 10 lat.

    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.


  • 29. Data: 2009-06-07 06:31:10
    Temat: Re: Nauka C - co radzicie ?
    Od: "Artur M. Piwko" <m...@b...pl>

    In the darkest hour on Sat, 06 Jun 2009 23:18:00 +0200,
    Adam Dybkowski <a...@4...pl> screamed:
    >> Zawsze można od czasu do czasu tak:
    >>
    >> if (a > 3)
    >> {
    >> printf("a = "%d", a);
    >> {
    >> int x = a + 8;
    >> printf("x = %d", x);
    >> }
    >> }
    >
    > To też bywa czasem czytelniejsze choć nie wygląda już tak "naturalnie". ;)
    >

    Kilka razy zastosowałem, chociaż wygląda brzydko. A musiałem być wtedy
    zgodny z ANSI C.

    >> Ale po co, skoro mamy od jakiegoś czasu C99...
    >
    > Powiedz to kompilatorowi dla texasowych DSP'ków, nie mającemu nic
    > wspólnego z gcc.

    No tu już trzeba krajać jak materiału staje... ;>

    > BTW: W ogóle pisząc dla takich procków, natywnie 16-bitowych (gdzie
    > nawet typ "char" jest 16-bitowy oraz sizeof(int)=1) trzeba od razu
    > myśleć nieco inaczej, niż w aplikacjach dla ARMa czy AVRa.

    Ciekawe.

    --
    [ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:223B ]
    [ 08:28:41 user up 12096 days, 20:23, 1 user, load average: 0.24, 0.50, 0.35 ]

    Don't comment or patch bad code; rewrite it.


  • 30. Data: 2009-06-08 10:41:05
    Temat: Re: Nauka C - co radzicie ?
    Od: cepu69 <c...@t...pl>

    Adam Dybkowski wrote:
    > cepu69 pisze:
    >
    >>> Przykładowo , chcę wysłać bajt danych do portu o określonym adresie. Czy
    >>> są na to funkcje biblioteczne , czy muszę robić wstawki assemblerowe?
    >> DSP TI nie posiada przestrzeni I/O czyli dostep do rejestru wyglada tak
    >> samo :
    >> #define MY_REG_ADDR (0x12345678)
    >>
    >> *(* MY_REG_ADDR) = 0x12345678;
    >>
    >> lub opakowanie w funkcje/metode.
    >
    > Raczej nie wszystkie TI DSP. Na przykład takie TMS320VC5416 (które mocno
    > eksploatujemy w niektórych firmowych sprzętach) mają wydzieloną
    > przestrzeń I/O, oddzielną od pamięci danych i oddzielną pamięć programu.
    > Trzeba nieco więcej naspawać w kodzie aby zrobić dostęp I/O.
    Ja bawilem sie na troche innym "poziomie" stad to podejscie.
    Rodzinna C6000 ma "normalna" 32 bitowa przestrzen adresowa i w ramach
    ciekawostek dropsa np. mimo wlaczonego cache'a danych 1-poziomu nie trzeba
    bylo flushwac buforow, na ktorych pracowalo DMA (tak na marginesie tam
    wszystkie operacje I/O wykonywanem byly przez DMA)

    > Ale i tak przecież nikt zdrowo myślący nie będzie w C pisał
    > przetwarzania sygnałów, FFT czy innego Viterbiego. Od tego są funkcje
    > asemblerowe. A język C w przypadku procków DSP dobrze się sprawdza jako
    > "klej" łączący różne kawałki kodu.
    Tak, ale jest to juz wyzsza szkola jazdy. Na poczatek calkowicie wystarczy C
    szczegolnie, ze TI dostarcza konfigurowalny z poziomu IDE system
    opweracyjny czasu rzeczywistego i wyprodukowanie wlasnej aplikacji
    typu "Hello World" jest proste.

    Natomiast programowanie w asemblerze procesora sygnalowego nalezy zostawic
    na pozniej, szczegolnie gdy w gre wchodzi zrownoleglanie instrukcji ( C6000
    ma dwie jednostki wykonawcze i moze wykonac chyba do 8 instrukcji
    jednoczesnie).

    Co do pisania w C przetwarzania sygnalow TI dostrcza o ile mnie pamiec nie
    myli zestaw makr "przyspieszajacych" kod typu rozwijanie petli.

strony : 1 . 2 . [ 3 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: