Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 17 maja 2025, o 04:21


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 16 sie 2013, o 13:55 
    Offline
    Nowy

    Dołączył(a): 31 paź 2012
    Posty: 2
    Pomógł: 0

    Witajcie koledzy,

    jestem początkującym "programistą" z jakimś tam doświadczeniem hardware'owym. Zrobiłem układ z ATmega128 (16MHz) z wyświetlaczem LCD TFT 5,7" i mam marzenie aby opanowując go nauczyć się programowania w C. Właśnie zainstalowałem Eclipse Indigo, programator USBASP, do którego podłączyłem moją płytkę i wygląda na to, że potrafię zaprogramować procesor bo na jego nóżce PC4 obserwuję przebieg. Spodziewałem się ciągu impulsów dodatnich o czasie trwania ok. 60ns powtarzanych co kilkaset ns. Jednak obserwuję odstęp między impulsami ok 2,1 ms.
    Wiem, że popełniam jakiś fundamentalny błąd związany z wykonywaniem funkcji impuls, bo jeśli jej zawartość (linie 18 i 19 kodu) wstawię w miejsce jej wywołania (linia 11) to otrzymam żądany przebieg. Czy mógłby ktoś mi pomóc ?


    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sie 2013, o 14:43 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 57
    Pomógł: 5

    funkcja jest zadeklarowana jako void, a w jej ciele masz return; - więc tu masz na pewno błąd.

    czas trwania twojego impulsu zależny jest tak na prawdę od taktowania procesora i ilości instrukcji składających się na wykonanie operacji PORTC = 0b00010000; dużo zależy tutaj od kompilatora i sposobu w jaki zamienia kod w C na język maszynowy.
    ale zastanawia mnie również dlaczego kolejne skoki do twojej funkcji wykonują się co ~2ms.
    Spróbuj dać jakieś staromodne _delay_us() i wtedy sprawdź czy czas między kolejnymi wywołaniami funkcji się zmienia.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sie 2013, o 15:20 
    Offline
    Nowy

    Dołączył(a): 31 paź 2012
    Posty: 2
    Pomógł: 0

    EUREKA! znalazłem odpowiedź na swoje pytanie - przyczyna leży gdzie indziej. ATmega128 ma fusebit M103C "ATmega103
    Compatibility Mode", wystarczy go skasować i procesor zaczyna być posłuszny. Dzięki BARTB za dobre chęci.
    Przy okazji Mirku wielkie dzięki za mk AVR Calculator !



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 16 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO