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 28 maja 2025, o 19:48


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 
    Autor Wiadomość
    PostNapisane: 27 gru 2013, o 02:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 lis 2011
    Posty: 266
    Lokalizacja: Szczecin
    Pomógł: 9

    Witam,

    Czy w programie można w jakiś sposób odczytać sygnaturę procesora? Chciałbym odczytać sygnaturę uP, czyli np numer 1E960A, następnie wykorzystać to w programie jako "MAC" danego sterownika.

    Za wszystkie informację z góry dziękuję :)

    _________________
    www.gryfsmart.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 06:00 
    Offline
    Moderator
    Avatar użytkownika

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

    Nie pamiętam teraz wprawdzie czy da się to zrobić programowo no ale takie pytanie się rodzi .... skoro chcesz użyć tego jako swego rodzaju MAC'a to co zrobisz gdy będzie kilka sterowników z takim samym prockiem ? przecież będą miały dokładnie te same sygnatury ? :(

    _________________
    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: 27 gru 2013, o 10:08 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Albo dac to jako stala preprocesora, ktora bedzie pobierała 'milisy' (jesli sie tak da zrobic) - aktualny date i czas wlacznie z milisekundami. Niestety bedzie sie to wiazalo z osobna kompilacja dla kazdego sterownika.
    Poza tym programatory (np. Beeprog, Labtool i inne) maja mozliwosc 'serializacji' - czyli automatycznego nadawania numerow seryjnych. Sciagnij wersje demo z elnec.com to sobie popatrzysz :)

    Sent from my mobile.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 10:10 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 sie 2013
    Posty: 199
    Pomógł: 1

    na stronie 227 ds atmega 8 jest
    pokazane jak odczytać "signature byte"
    wg dokumentacji ds atmela nalezy odczytac np dla m8
    3 bajty
    For the ATmega8 the signature bytes are:
    1. 0x000: 0x1E (indicates manufactured by Atmel)
    2. 0x001: 0x93 (indicates 8KB Flash memory)
    3. 0x002: 0x07 (indicates ATmega8 device)

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


    ps. do przedm. po co piszecie o jakiś czasach itp. jak autor pisał jak odczytac sygnature ?
    skoro nie wiecie do czego mu to potrzebne .

    Moze che sie zabezpieczyc czy ktos mu w urzadzeniu nie podmieni m8 na inna z tej samej rodziny ?? !


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 10:47 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 lis 2011
    Posty: 266
    Lokalizacja: Szczecin
    Pomógł: 9

    Dzięki DominikN za podpowiedz! :) Ale mój pomysł i tak uległ w gruzach- dzięki podpowiedzi Mirka :D . Myślałem, że każdy procek ma inną sygnaturę (każdy procek tego samego typu). Ale kompletnie bez sensu mi się to wydawało. Mi chodziło, aby jak najmniejszym i najłatwiejszym kosztem uzyskać rożne numery (MAC) sterownika. Tak na szybko pomyślałem sobie, że odczyt sygnatury byłby najprostszy. Ale się nie zastanowiłem, że dla wszystkich procków tego samego typu będzie ona taka sama- tak jak podkreśliliście to wyżej.

    Chodziło mi o to aby przy kompilacji za każdym razem nie zmieniać tego numeru ręcznie. Aby był on tworzony dynamicznie i nigdy się nie powtórzył. Aktualnie robię tak jak mówi squeez.

    Fajny pomysł nasunął mi micky jak by w takim adresie MAC była zaszyta godzina i data kompilacji. Wówczas oprócz tego, że będzie to unikalny adres MAC to będę posiadał w nim informację kiedy dany wsad wgrywałem do procesora.
    Tylko na razie nie wiem jak to zrobić :) ...i czy w ogóle tak się da zrobić :)

    Dzięki za podpowiedzi :)

    _________________
    www.gryfsmart.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 11:25 
    Offline
    Użytkownik

    Dołączył(a): 20 wrz 2013
    Posty: 647
    Zbananowany użytkownik

    Pomógł: 101

    Może przydadzą ci się makra preprocesora __DATE__ i __TIME__ albo __TIMESTAMP__
    http://gcc.gnu.org/onlinedocs/cpp/Stand ... acros.html

    _________________
    +++++[>++++<-]>[>++++++<-]>.---------.+++.



    Ostatnio edytowano 27 gru 2013, o 11:45 przez xor, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 11:39 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    DominikN-kolega przeciez pisal ze chodzi mu o MAC'a.
    Co do generowania daty i czasu to mozesz dodatkowo zaszyc numer wersji softu :) sposobów jest wiele. Mozesz np. wygenerowac plik zewnetrzny z ktorego bedziesz pobieral dane i doklejal je do wczesniej skompilowanego hexa. Tworzac plik wsadowy bat bedziesz mogl w ten sposob tworzyc swoja serializacje :)

    Sent from my mobile.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 12:24 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 lis 2011
    Posty: 266
    Lokalizacja: Szczecin
    Pomógł: 9

    xor, ciekawy link- dzieki :) Wieczorem pobawie się tym.

    micky napisał(a):
    Mozesz np. wygenerowac plik zewnetrzny z ktorego bedziesz pobieral dane i doklejal je do wczesniej skompilowanego hexa. Tworzac plik wsadowy bat bedziesz mogl w ten sposob tworzyc swoja serializacje :)


    Za bardzo nie rozumie, mógłbyś to torchę rozszerzyć?

    Dobrze to zrozumiałem??

    Mając gotowego hex można coś do niego doklejać i wysyłać do procka? Czyli bym musiał napisać jakiś skrypt który by modyfikował *.hex

    Bym musiał znaleźć ciąg znaków, który odpowiada stałej w programie MAC i go dynamicznie z jakiegoś skryptu podmieniać i wgrywać później ten wsad do procka?

    Otworzyłem plik *.hex do edycji i same dzine cyferki, ale wygląda, że są to znaki ASCII :)

    Czyli bym musiał znaleźć ciąg znaków odpowiedzialny za zmienną za MAC i jakoś go podmieniać?

    Ale ten plik *.hex też jest jakoś kodowany?

    ------------------------ [ Dodano po: 3 minutach ]

    Mi chodzi o to aby każdy sterownik miał inny adres MAC. Obecnie robię to osobno, ręcznie przy każdej kompilacji. Ale jest to dość uciążliwe. Rozwiązanie, że może to odbywać się w sposób dynamiczny było by super. Jak jeszcze w takim adresie była by zaszyta wersja sterownika oraz data kompilacji to pełen wypas :D

    _________________
    www.gryfsmart.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 14:18 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Zarys koncepcji mam :)
    O formacie hexa poczytaj sobie u wujka google'a.

    Zalezy gdzie chcesz trzymac MACa?
    Jesli w eepromie to tworzysz skrypt/prosty programik c na PC/lub nawet arkusz w ktorym bedziesz mial zbior linii ktore chcesz wciskac do procka (lub ktory nawet bedzie sam to sobie generowal). Nastepnie parsujesz te linie i konwertujesz z bina na hexa (chyba, ze avrdude przyjmuje binarki) Avrdude podajesz odpowiedni wsad plus wsad eepromowy. Zamykasz to w pliku .bat dodajesz pause w środku petli i masz polautomat :)

    Jeśli chcesz trzymac te dane we flashu to ja bym albo dokladal kawalek swojego hexa do 'naglowka' zawierajacego Twoj program i dopiero taka kompilacja bym programowal lub masz wsad w bin, dodajesz swoj kawałeczek i wtedy programujesz (ew. konwertujac do hexa, jesli avrdude nie przyjmuje binarek)
    Hex jest o tyle wygodny, ze zawarte w nim bajty moga miec 'dziury' adresowe - tzn. plik hex moze omijac niektore grupy adresowe (np. masz zawarty w nim wsad od 0x0 do 0xfff a nastepnie np. od 0x1200 do 0x121f).

    Sent from my mobile.

    P. S. Sprawdzilem i Avrdude obsluguje raw bin :)
    P. S.2 Popatrz na immediate mode :) w avrdude


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 14:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 lis 2011
    Posty: 266
    Lokalizacja: Szczecin
    Pomógł: 9

    micky, dzięki za radę ale wydaje mi się trochę skomplikowane, jak dla mnie :) Ale u wujka google doczytam o formacie hex, może coś z tego wyjdzie :)

    Ale chyba szybszym i łatwiejszym rozwiązaniem było by skorzystanie z makra preprocesora __DATE__ i __TIME__ albo __TIMESTAMP__ (jak polecał xor) i przy pierwszym starcie wpisanie ich wartości do EEPROM. Wówczas taki adres MAC, by zawierał informację - data pierwszego odpalenia.

    _________________
    www.gryfsmart.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 14:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 sie 2013
    Posty: 199
    Pomógł: 1

    sa edytory eeprom gdzie możesz z 'reki' wpisac jakies dane , do tego jakies szyfrowanie aes i miód



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 15:11 
    Offline
    Moderator
    Avatar użytkownika

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

    IUVOit napisał(a):
    i przy pierwszym starcie wpisanie ich wartości do EEPROM.


    No to pomyśl - skoro przy starcie (pierwszym) wpisanie do EEPROM .... to rozumiem że z FLASH ... a zatem skoro będziesz miał to we Flash - to po co ci przepisywać to do EEPROM ? ... który na dodatek jest mniej pewny niż Flash ?

    to tylko taka mała sugestia-podpowiedź

    _________________
    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: 27 gru 2013, o 15:25 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 lis 2011
    Posty: 266
    Lokalizacja: Szczecin
    Pomógł: 9

    O co innego mi chodzi :)

    W EEPROM mam strukturę => OpisSterownika{IP,MAC,TypSterownika}

    Przy pierwszym wgraniu hex'a MAC ma wartość np FFFFF;

    Przy podaniu napięcia będę sprawdzał, czy MAC==FFFFF, jeżeli tak to wpisuje do niego wartość która jest zależna od __DATE__ i __TIME__ __TIMESTAMP__

    No i podstawiam MAC=funcja (__DATE__, __TIME__, __TIMESTAMP__);

    Przy kolejnym odpaleniu sterownika zmienna MAC, będzie miała wartość inną niż FFFFF;

    Jeżeli by tak było bym miał wszystko w 100% zautomatyzowane i każdy adres MAC miałby inną wartość i w jakiś sposób bym mógł zakodować kiedy sterownik był wykonany.

    ------------------------ [ Dodano po: 18 minutach ]

    xor napisał(a):
    Może przydadzą ci się makra preprocesora __DATE__ i __TIME__ albo __TIMESTAMP__
    http://gcc.gnu.org/onlinedocs/cpp/Stand ... acros.html


    Chyba znowu źle myśle, ponieważ te makra są ustawiane na etapie pierwszej kompilacji. Czyli są na sztywno zapisane w pliku hex :/ Nie wiem dlaczego wymyśliłem sobie, że są one uzupełniane podczas pierwszego startu.

    Czyli pozostaje grzebanie w plku *.hex

    _________________
    www.gryfsmart.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 16:28 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    No wlasnie dlatego sugerowalem swoje rozwiazanie :)
    Ty musisz kodowac MACa w swoim flashu/eepromie podczas flashowania procka. Lub flashowac na stale stala wartoscia a potem programowac osobno i tylko eeproma z MACiem

    Sent from my mobile.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 17:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 lis 2011
    Posty: 266
    Lokalizacja: Szczecin
    Pomógł: 9

    Masz racje :D Ale to będzie trochę zabawy :D
    Dzięki :)

    _________________
    www.gryfsmart.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 17:07 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Jest ryzyko jest przyjemność ;) powodzenia. Pamiętaj, ze sa tez programiki z linii komend hex2bin i bin2hex :)

    Sent from my mobile.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 20:53 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    A widze, ze kolega z tego samego miasta jest co ja, wiec mozna temat przedyskutować na tucznika tzn na żywca ;)

    Sent from my mobile.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 gru 2013, o 23:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 lis 2011
    Posty: 266
    Lokalizacja: Szczecin
    Pomógł: 9

    Fajnie :D Jak nie będzie mi wychodziło, będę wiedział do kogo się zwrócić :D Jak nie będziemy dawali rady, to do Mirka się na tucznika wybierzemy, tez nasz sasiad ;)

    _________________
    www.gryfsmart.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 gru 2013, o 01:01 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 wrz 2013
    Posty: 58
    Zbananowany użytkownik

    Pomógł: 10

    Tak na szybkiego mam taką oto koncepcję dla kolegi do zaoferowania program który wplata w adres MAC dzień, miesiąc, rok (od 2000 do 2127), wersję oprogramowania w formacie XX.XX max 15.15
    Jeżeli koledze się spodoba to dorobi się podmiankę w pliku hex :)

    W załączniku wstępny zarys


    Załączniki:

    Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 gru 2013, o 15:05 
    Offline
    Użytkownik

    Dołączył(a): 20 wrz 2013
    Posty: 647
    Zbananowany użytkownik

    Pomógł: 101

    Tobie chodzi o to żeby przygotować jakiś tam wsad a potem wgrać go do większej ilości procków nadając przy tej okazji unikalny numer i ewentualnie godzinę wgrania?
    W tej książce http://ebookpoint.pl/ksiazki/jezyk-c-dl ... m#format/e (na wersję ebokową jest właśnie spora promocja) jest opisana technika, która być może Cię zainteresuje. Polega ona na tym, że w programie definiuje się zmienną z atrybutem
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    , dzięki czemu zostaje umiejscowiona w określonym, zawsze tym samym obszarze pamięci (dla danego typu procka). Znając adres zmiennej za pomocą programu
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    modyfikuje się plik HEX, podmieniając wartość tej zmiennej na swoją. Wygenerowanie daty i unikalnego numeru nie jest większym problemem (przynajmniej na linuksie). Oskryptowanie tego też nie wygląda na skomplikowane (jw ;-)) - wygląda na to, że można to podać programowi jako zwykly łańcuch tekstowy bez bawienia się plikami binarnymi. Tu jest opisanych kilka przykładów wykorzystania programu: http://srecord.sourceforge.net/man/man1 ... mples.html

    _________________
    +++++[>++++<-]>[>++++++<-]>.---------.+++.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 gru 2013, o 15:43 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    MAC powinien być unikalny w sieci. Może scalak z unikalnym MAC adresem się nada np. AT24MAC402

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 gru 2013, o 17:43 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Jesli mamy tylko wygenerowac niepowtarzalny numer to w mozna tez podpiac dallaska 1wire i bedziesz mial pomiar temperatury pcb :)

    Sent from my mobile.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 lut 2014, o 18:37 
    Offline
    Użytkownik

    Dołączył(a): 26 mar 2012
    Posty: 26
    Pomógł: 0

    Ze swojej strony dodam inny pomysł. Każdy element 1wire ma swój unikalny numer seryjny. Po resecie możemy odczytać dla przykładu DS18B20 i numer podstawić do MAC..



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 lut 2014, o 19:02 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    To właśnie miałem na myśli :)

    Sent from my mobile.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2014, o 20:03 
    Offline
    Użytkownik

    Dołączył(a): 26 mar 2012
    Posty: 26
    Pomógł: 0

    :oops: No tak pomysł oryginalny ale opisany post wyżej.. Trzeba czytać wszystkie odpowiedzi zanim się odpowiada ;)



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

    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