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? 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 4 cze 2025, o 14:40


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
    Autor Wiadomość
    PostNapisane: 24 sty 2012, o 14:03 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    Kwestia zasobów mikrokontrolera jest szczególnie ważna podczas pisania programu i dobór właściwego
    jest bardzo ważny. Znamy wiele krzyków z elektrody gdzie wielu pisze " ATMega8 do czegoś takiego tu wystarczy TINY" Zapewne jest w tym wiele racji , ale należy też pamiętać o tym że większość zasobów
    wyrażana jest w kilobitach nie kilobajtach. Początkujący maja wiele problemów z rozróżnieniem wartości
    i panowaniem nad wieloma czynnikami wpływającymi na program, takimi jak stos, rejestry itd często też
    udaje się im skompilować program który ... jakimś cudem nie mieści się w pamięci procesora dlaczego tak się dzieje??

    Tu oprzemy się na naszej małej Medze8

    Jest ona mała i popularna oraz w większości przypadków aż za dobra do projektów wiec słów kilka:

    Pamięć Flash 8 Kbajtów (8192-słowa 8bitowe )
    Pamięć EEPROM 512 bajtów (512 - słów 8bitowych)
    Pamięć SRAM 1Kbit (1024 bity /8 co nam daje 128 słów 8 bitowych (bajtów))

    Jak widać zależności SRAM mamy bardzo mało a musi się w nim wiele zmieścić.

    Skoro jednak mega 8 ma 8Kb Flasha to czym się przejmować i dlaczego w poście o delayu podałem wartości po kompilacji w bitach. To proste kompilator arduino którego używam wersja 022 dostosowana do Sunduino wyświetla po kompilacji objetość pliku wynikowego w bitach właśnie.

    I teraz liczymy to następujaco:

    1bit = 1bit
    8bitów = (słowo 8bitowe)
    1024bity = 1 kilobit

    jak z tego wynika wystarczy ilość kilobitów podzielić przez 8 co nam daje liczbę 8bitowych słów czyli bajtów programu.

    W samej pamięci flash nie jest to aż tak istotne , ale w przypadku pamięci SRAM czy popularnych EEpromów zewnętrznych oraz pamięci DATAFLASH to już kwestia 1 wagi.

    Pojemność pamięci zewnętrznych EEprom jest zawsze wyrażana w KILO BITACH i tu najwięcej
    popełnia się błędów dlatego że :

    Kupiliśmy sobie wielkiego eeproma, a co wystarczy na duuuużooo np:
    kostka serial EEProm 24AA1026 posiadająca zasoby na poziomie 1MB dużo prawda nic bardziej mylnego.
    Pamięć ta jest wyrażona w MegaBITACH czyli jest to aż 1024kilobity. Czyli ile tak właściwie??

    można to obliczyć następująco:

    Jak wiemy z noty nasza pamięć posiada 1MegaBit pojemności na 8 stronach adresowych
    czyli 128 x 8 = 1024bajty czyli 1Kbajt pojemności.

    Warto o tym pamiętać. Podobnie jest z pamięciami DATA FLASH i Serial SRAM ... oraz SRAM zawartymi
    w procesorach.

    W zasadzie w mikrokontrolerach wprowadzono z bajtami pewnego rodzaju uproszczenie.
    ponieważ ich pamięć flash jest przeliczana na słowa 8 bitowe (z racji ilości bitów w rejestrach)
    W związku jednak z naleciałością komputeryzacyjną stosuje się do wyrażania tej pamięci jednostkę
    bajt (słowo 8 bitowe) a w stosunku do innych pamięci stosuje się bit lub wielokrotność kilobit

    tak wiec zapis:
    1Kb = 1 kilobajt
    a
    1KB = 1 kilobit

    różnica jest taka że

    1Kb = 1024 bajty = 819 2bity
    natomiast
    1KB = 1024 bity = 128 bajtów

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 14:13 
    Offline
    Moderator
    Avatar użytkownika

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

    SunRiver napisał(a):
    Pamięć SRAM 1Kbit (1024 bity /8 co nam daje 128 słów 8 bitowych (bajtów))


    No ale tu chyba wkradła się mała pomyłka ? hmmm ?

    Babcia ATmega8 ma jednak 1024 bajty pamięci RAM dostępnej dla śmiertelnika, który chce jej używać. Czyli jednak 1 Kilo Bajt a nie 1 Kilo Bit. Tak mi się wydaje przynajmniej - na ile znam ten procek.


    natomiast to:
    SunRiver napisał(a):
    Pamięć Flash 8 Kbajtów (8192-słowa 8bitowe )


    Bym uzupełnił może tak:
    Pamięć Flash 8 Kbajtów (8192-bajty )
    Jednak pamięć zorganizowana jest w postaci słów, gdzie słowo oznacza dwa bajty. Pisząc jeden, nawet najprostszy rozkaz asemblera np NOP zajmujemy w tejże pamięci nie 1 bajt ale aż 2 bajty !!! (CAŁE SŁOWO)

    W efekcie pamięci flash dla programu posiadamy w ATmega8 tak na prawdę nie 8KBajtów a 4KSłowa (tak się to powinno określać) .... czyli możemy zapisać tylko 4096 rozkazów !!! i ani jednego więcej.

    W przypadku np procków PIC 8-bitowych pamięć FLASH podaje się i słusznie w KBajtach ale tu to już jest jak dla mnie przynajmniej wolna amerykanka (dlatego może są bardziej popularne w Ameryce ;) ) mają one np organizację pamięci w słowa 14-bitowe ..... brrrr Przez to np nie da się optymalnie wykorzystać pamięci Flash do załadowana jakichś danych 8-bitowych. A w przypadku AVRów - spokojnie w jednym słowie 16-biotowym upakujemy pięknie dwa bajty danych.... Może się gdzieś mylę w przypadku PIC'ów - ale na pewno zaraz mnie kolega SunRiver sprowadzi na ziemię i sprostuje. (ja z góry przepraszam, jeśli coś w sprawie PIC'ków namieszałem)

    _________________
    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 sty 2012, o 14:39 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 paź 2011
    Posty: 580
    Lokalizacja: Warszawa
    Pomógł: 0

    zgadzam się 1 kilobajt :P jest drobna pomyłeczka :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 15:08 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    No przepraszam wszystkich za mała pomyłeczkę w istocie babcia M8 ma 1Kb pamięci SRAM
    czyli 1024 bajty czyli 8kilobitów (8192bity) w istocie strzeliłem byka.

    Co zaś do pamięci PIC to posłużę się jako przykładem układem PIC18F2550 można by rzec taka PICKOWA mega8 oczywiście w dużym uproszczeniu
    Procesor ten posiada Fizycznie 32Kbajty pamięci Flash co pozwala na zmieszczenie w niej 16384 instrukcji 8 bitowych.
    posiada 2Kbajty (2048bajtów) pamięci SRAM i 256bajtów EEprom. No dobra taka pickowa mega328 :) i tu jest wszystko tak samo jak w AVR, ale
    jak słusznie zauważył kolega Mirek niektóre pice posiadają bardzo dziwne ilości pamięci pogrupowane w słowa 14 bitowe d-word ale jest to spowodowane tylko i wyłącznie oszczędnością pamięci i instrukcji gdzie po prostu zrealizowano dla uproszczenia UWAGA !!

    bajt 7 bitowy :) spowodowane jest to tym, że nic nie tracimy na funkcjonalności , po prostu obcinany jest nieznaczący bit z instrukcji.
    to działa tak jak kasowanie w wyniku pomiaru zera nieznaczącego.

    gdzie przykładem może być np PIC16F690 :) gdzie pamięć jest zorganizowana w 4096 × 14-bitowych słów :)
    to tak w bardzo dużym skrócie, bo geneza tego rozwiaząnia jest trochę długa i przynudnawa , ale wierzcie mi na słowo ma głębszy sens

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 15:34 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 paź 2011
    Posty: 580
    Lokalizacja: Warszawa
    Pomógł: 0

    nio pice są dosyć ciekawymi i fajnymi "kuzynami" AVR :P

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 15:39 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    Uprzedzając pytania dotyczące tych magicznych 14 bitów w PIC
    dodam jeszcze tylko tyle że budowa procesorów PIC podobnie jak ATMega opiera się na architekturze harvardzkiej,
    tzn. mają oddzieloną pamięć danych od pamięci programu ale Pice dodatkowo mają dwie oddzielne magistrale o różnej
    szerokości słowa. Dla pamięci programu są stosowane słowa 14-bitowe, natomiast pamięć danych jest 8-bitowa.
    Dlatego procesory PIC są zaliczane do grupy procesorów 8-bitowych.
    Dzięki tak długim słowom pamięci programu w pojedynczej instrukcji może być zawarty
    zarówno kod, jak i argument (argumenty) operacji, wskutek czego liczba słów
    możliwych do zapamiętania w pamięci odpowiada liczbie możliwych do wykonania
    instrukcji. W przypadku architektury tradycyjnej jedna komórka zawiera zwykle kod
    operacji, a kolejne – argumenty. Dlatego kod wynikowy takich samych programów
    jest zazwyczaj dla procesorów PIC nieco krótszy.
    W procesorach zastosowano potokowy system pracy ( pipeline), w którym procesor
    podczas wykonywania rozkazu pobiera z pamięci następny, co sprawia wrażenie, że
    wykonanie rozkazu trwa tylko jeden cykl maszynowy.
    Wszystkie rejestry specjalne procesora – SFR ( Special Function Register) – odwzorowane
    są w pamięci RAM i są dostępne tak samo jak inne komórki pamięci,
    tzn. poprzez adresowanie bezpośrednie lub pośrednie. Pomysł ten nazwano koncepcją
    tablicy rejestrów ( Register File Concept).
    Inną interesującą cechą procesorów PIC jest to, że w każdym słowie pamięci programu
    może być umieszczony zarówno argument, jak i wynik operacji, tradycyjnie
    przesyłany do akumulatora. Jego rolę pełni w tych procesorach rejestr roboczy oznaczony
    jako W ( Working Register). Brak wyjątków, obecnych zazwyczaj w takich
    przypadkach, bardzo upraszcza programowanie procesora. Cechę tę producent nazywa
    symetrią lub ortogonalnością instrukcji. Teraz mam nadzieje ze stało się już wszystko jasne.

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 15:41 
    Offline
    Moderator
    Avatar użytkownika

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

    O!!! czytając w końcu na temat ala odpowiednika ATmega328 wśród PIC'owej braci - szybko skoczyłem do sklepu tuż za internetowym rogiem, żeby zasięgnąć języka co ten procesorek ma w sobie jeszcze - aby się choć troszkę przekonać do PIC'ków. Pomyślałem, że czymś mnie miło może zaskoczy....

    Zatem poza rodzajami pamięci, które pięknie kolega SunRiver porównał (dzięki - bo ja nie jestem w stanie się połapać w tych PIC'kach) .... jak się sprawa ma z innymi peryferiami.

    1. Pamięci EEPROM maławo bo tylko 256 bajtów - no ale co tam - aż tak często się z niej nie korzysta
    2. 1xUART + SPI/I2C - ATmega328 tyż posiada
    3. 1xTimer 8-bit + 3xTimer16bit ;) ... wow tu już banan się pokazał - dużo lepiej niż w ATmega328
    4. 10 kanałowy ADC hmm też trochę lepiej
    5. 1xUSB .... no no nooo ... ładnie, nawet bardzo ładnie

    (SunRiver - przestań!, bo przez ciebie jeszcze mnie coś podkusi i wezmę w ręce te kocie PIC'e) ;)

    A tak na poważnie - to może podpowie kolega SunRiver jak to jest (tak ogólnie mi chodzi a nie o szczegóły) z praktycznym wykorzystaniem tego USB w procku zarówno od strony procka-programu jak i szczególnie od strony PC ????

    _________________
    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 sty 2012, o 15:50 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    w zasadzie to wygląda tak w uproszczeniu że dostajemy sprzętowy USB który pracuje na sterownikach HID chyba najprostszym przykładem
    może być zbudowany na 18F2550 programator, debuger, USB-RS , analizator stanów logicznych czyli PICKIT2 :)

    Albo na trochę większym bracie odpowiedniku ATmegi32 PIC18F4550 płytka PICDEM gdzie przez USB mamy bezpośredni dostęp
    do sprzętu na płytce i jego monitorowanie włącznie z bootloaderem na USB bez przejściówek typu FTDI i komplikowania sobie życia
    w sposób znany z AVR np poprzez oprogramowanie CDC , po prostu dostajesz od Microchipa kompletna klasę USB wraz ze sterownikiem HID
    oraz wymaganym VID i PID nie mówiąc o tym że możesz wystapic o nadanie własnych nieodpłatnie.

    Obrazek

    a na kompie po podłączeniu działa to tak:
    Obrazek

    No i najważniejsze co nie zauważyłeś jest to USB 2.0

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Ostatnio edytowano 24 sty 2012, o 16:03 przez SunRiver, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 15:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 paź 2011
    Posty: 580
    Lokalizacja: Warszawa
    Pomógł: 0

    ciekawe są też PIC10F wielkości tranzystorka SMD :P

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 16:13 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    A się wyrwał z 10 siatkami :) łobuz jeden:)

    ale fakt PIC10F322 jest dosyć ciekawy mimo niewielkich wymiarów i 6 nóżek :)
    posiada spore zasoby:)

    0,896 KB flash
    osiąga 4 mipsy
    64bajty ram
    2 8 bitowe timery
    3kanałowy 9 bitowy ADC
    działa w zakresie napiec 1.8 - 5.5V
    i ma 40 lat gwarancji na pamiec Data flash :)
    i wiele innych:)

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 16:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 paź 2011
    Posty: 580
    Lokalizacja: Warszawa
    Pomógł: 0

    moj mały faworyt jeśli chodzi o minimalizacje :] czekam na Pickita tylko, bo zaopatrzenie w pice juz mam :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lis 2014, o 13:05 
    Offline
    Użytkownik

    Dołączył(a): 29 mar 2012
    Posty: 59
    Lokalizacja: Lubliniec
    Pomógł: 3

    SunRiver napisał(a):

    Jak wiemy z noty nasza pamięć posiada 1MegaBit pojemności na 8 stronach adresowych
    czyli 128 x 8 = 1024bajty czyli 1Kbajt pojemności.


    Sun nie łapie tego jakoś:

    skoro mamy pamięć 1 Mega Bit czyli jest to 1024 kilo Bitów, a to jest znowu 1024 * 1024 Bitów czyli 1048576 Bitów, tak się to liczy?
    Bo wtedy nie rozumiem do końca tego już zapisu czyli 128 x 8 = 1024bajty czyli 1Kbajt pojemności, chyba sam już za dużo zacząłem kombinować ;p



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lis 2014, o 13:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 cze 2013
    Posty: 988
    Lokalizacja: Byram, MS 39272
    Pomógł: 55

    PICe są o tyle fajne i zarazem trudne, że posiadają tylko kilka instrukcji w assemblerze. Większość rzeczy uzyskuje się poprzez intsrukcje wejścia/wyjścia. Ta minimalizacja bardzo ułatwia zapamiętanie mnemoników ale powoduje, że kod staje się mniej czytelny niż w MEGACH i trudniejszy do napisania. Natomiast kod napisany pod PICa w C jest dość łatwo przerabialny na MEGOWEGO C. Znaczy inaczej. Da się to łatwo zrobić. Jako przykład proszę poczytać kod w C dla PICa z tej strony. http://www.electronics-lab.com/projects/mcu/015/ lub http://www.circuitvalley.com/2011/12/tw ... phics.html Prawda, że wygląda podobnie jak MEGA C?

    _________________
    Pomysły na podpis - wyślij SMSa +1 769 243 0011



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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


    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