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 3 maja 2025, o 03:12


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 24 sie 2014, o 15:04 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 09 sie 2014
    Posty: 6
    Lokalizacja: Koszalin
    Pomógł: 0

    Witam
    Piszę, bo mam lekki mętlik w głowie. Proszę mnie poprawić jeśli się mylę. Wydaje mi się że jeden cykl zegarowy w procesorach ATMega wygląda tak:
    Kod:
    |-----|     |
    |     |     |
    |     |-----|

    <--1 cykl -->


    dla zobrazowania sobie tego na oscyloskopie napisałem wstawkę w assemblerze:
    Kod:
    #include <avr/io.h>



    int main(void)
    {
    DDRC =0xff;

        while(1) {
           asm volatile (
                 "out %0, %2" "\n\t" //PC0 = 0
                 "out %0, %1" "\n\t" //PC0 = 1
                 "out %0, %2" "\n\t" //PC0 = 0
                 "out %0, %1" "\n\t" //PC0 = 1
                 :
                 :"I" (_SFR_IO_ADDR(PORTC)), "r" (PC0),"r" (PC1)
                  );
        }
    }


    Program wgrałem do atmegi 32 przy taktowaniu 1MHz i podłączyłem oscyloskop:
    Obrazek

    Obliczyłem czas jednego cyklu 1/1 000 000 = 1us.
    Dlaczego na oscyloskopie 1 cykl = 2 us ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sie 2014, o 16:59 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 09 sie 2014
    Posty: 6
    Lokalizacja: Koszalin
    Pomógł: 0

    Faktycznie :)

    Kod:
    0000006c <main>:
    //DDRC =0xff; to jest ustawienie portu jako wyjście
      6c:   8f ef          ldi   r24, 0xFF   ; 255                    //1 cykl
      6e:   84 bb          out   0x14, r24   ; 20                      //1 cykl

      70:   20 e0          ldi   r18, 0x00   ; 0                //1 cykl
      72:   30 e0          ldi   r19, 0x00   ; 0                //1 cykl
      74:   81 e0          ldi   r24, 0x01   ; 1                //1 cykl
      76:   90 e0          ldi   r25, 0x00   ; 0                //1 cykl
    //początek pętli while ??
      78:   85 bb          out   0x15, r24   ; 21              //1 cykl
      7a:   25 bb          out   0x15, r18   ; 21              //1 cykl
      7c:   85 bb          out   0x15, r24   ; 21              //1 cykl
      7e:   25 bb          out   0x15, r18   ; 21               //1 cykl
      80:   fb cf          rjmp   .-10        ; 0x78 <main+0xc>   //2cykle


    tutaj mam dodatkowe 2 cykle procesora czyli 2 us, to mi tłumaczy tę przerwę w wykresie
    Kod:
     80:   fb cf          rjmp   .-10        ; 0x78 <main+0xc>   //2cykle


    tylko dalej nie wiem dlaczego jeden cykl nie mieści się w 1us na oscyloskopie, powinno być tak :
    Obrazek

    czyli od zbocza narastającego do następnego zbocza narastającego a jest tak:
    Obrazek

    ------------------------ [ Dodano po: 54 minutyach ]

    kurcze już chyba doszedłem :)
    Ilustruje to kolejny obrazek:
    Obrazek



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sie 2014, o 20:31 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 maja 2013
    Posty: 175
    Lokalizacja: Kraków
    Pomógł: 9

    Witam,
    tutaj jest trochę teorii w temacie cyklów zegarowych i maszynowych:
    http://www.e-tronix.eu/15,rodzaje-cykli.html

    _________________
    Rozwój i utrzymywanie Oprogramowania



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sie 2014, o 20:53 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    Krzysztof Pióro napisał(a):
    kurcze już chyba doszedłem


    No tak było i jest od zawsze ;) ... dobrze doszedłeś

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sie 2014, o 21:48 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 09 sie 2014
    Posty: 6
    Lokalizacja: Koszalin
    Pomógł: 0

    Nigdy sie nad tym nie zastanawiałem dopóki nie liznąłem assemblera :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sie 2014, o 21:54 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    Krzysztof Pióro napisał(a):
    Nigdy sie nad tym nie zastanawiałem dopóki nie liznąłem assemblera :)


    No właśnie dlatego zawsze mówię, że przynajmniej to "liźnięcie" asemblera gdy zabieramy się za jakąś rodzinę procków a piszemy normalnie kod w C ... daje od razu spore pojęcie o wielu różnych innych aspektach ...

    A jak widać wcale ten asembler nie jest taki straszny ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2014, o 08:08 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 09 sie 2014
    Posty: 6
    Lokalizacja: Koszalin
    Pomógł: 0

    Zaczyna mi sie to podobać, bo daje pelna kontrole nad prockiem. A dzieki nauce podstaw assemblera można poznać jego budowę i zasadę działania. W polaczeniu z językiem C daje nieograniczone możliwości.



    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: 7 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO