Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

liczby parzyste w bascomie lub asm jak sprawdzać??

RafalM 15 Lis 2004 10:29 2960 21
  • #1 15 Lis 2004 10:29
    RafalM
    Poziom 10  

    Jestem początkującym ludkiem w zakresie zabaw z uC w bascomie. Pisząc program zegarka chcialem aby zamiast wskazywania sekund na LCD, upływ sekund wskazywał migający ":" pomiędzy godziną a minutami.
    Jedyny pomsł jaki mam to sprawdzenie czy liczba sekund odczytana z pcf8583 jest liczba parzysta lub nie i w/g tego zapalić lub zgasić ":".

    Narazie realizuje to wsposób prymitywny mianowicie dziele sekundy przez dwa i sprawdzam czy wynik ma ulamek

    tzn
    .....
    n=Frac(sekundy/2)
    if n=0 then
    lcd ":"
    else
    lcd " "
    end if
    ....

    niestety
    n jest liczba single i troche zajmuje pamieci ten dodatek.

    moze macie drodzy koledzy krotszy sposób nawet w posatci wsawki w asemblerze sprawdzenie parzystości sekund ;-)

    0 21
  • #3 15 Lis 2004 11:36
    Xitami
    Poziom 29  

    operator AND, n AND 1 da 0 dla parzystych

    0
  • #4 15 Lis 2004 14:25
    elektryk
    Poziom 42  

    Jeśli liczba jest w akumulatorze, to każdy "klasyczny" procesor ma bit parzystości.

    0
  • #5 15 Lis 2004 14:29
    Xitami
    Poziom 29  

    Jeśli coś leży w akumulatorze to nie wystarczy, trzeba jeszcze takim akumulatorem jakoś potrząsnąć ;), ale przede wszystkim, czym innym jest parzysta liczba jedynek w liczbie a czym innym parzystość liczby.

    0
  • #6 15 Lis 2004 15:04
    yego666
    Specjalista PLD

    Nie zawsze trzeba potrzasnac akumulatorem by dostac ustawione flagi. Niektore procki ustawiaja czesc bitow ( parity, zero ) przy samej operacji przeslania przez rejestr ( ew. akumulator ). Bywa to wygodne o ile zestaw instrukcji jest dobrze przykrojony do takiego ukladu.
    Niemniej jakkolwiek by nie bylo, parzystej liczby sie w ten sposob nie wykryje. Trzeba jakiegos ANDa albo rotacje przeprowadzic.
    W prockach '51 istnieja ( o ile sie nie myle) instrukcje testowania pojedynczych bitow rejestrow (w tym akumulatora ) i pamieci. Moznaby je wykorzystac w tym przypadku.

    0
  • #7 15 Lis 2004 15:37
    Kaszmirek
    Poziom 18  

    W sumie to ja nie bardzo jestem w temacie, ale czy nie lepiej zrobić tak:

    .....
    n=sekundy MOD 2
    if n=0 then
    lcd ":"
    else
    lcd " "
    end if
    ....

    Pozdrawiam.

    0
  • #8 15 Lis 2004 17:16
    olekewaagata
    Poziom 25  

    A czy nie najprościej jest zadeklarować jakąś flagę jednobitową i w obsłudze jednej sekundy robić jej komplementację i w zależności od tego czy flaga=0 wyswietlać spację a flaga=1 wyswietlać ':'.

    0
  • #9 15 Lis 2004 18:44
    Xitami
    Poziom 29  

    I tak i nie Ewo, Agatko i Olku, bo czas pobieramy ze scalonego zegarka, jeśli odczytujemy go przynajmniej raz na sekundę jest OK, lecz jeśli rzadziej to jest lipa.

    0
  • #10 15 Lis 2004 19:44
    Dexter77
    Poziom 28  

    Nie wiem co to za procek, ale najprostszy sposob to odczytana liczbe sekund przesunac o jeden bit w prawo przez flage przeniesienia C. Dla AVR bedzie to instrukcja ROR (asembler) i mozesz wtedy dokonac skoku instrukcja BRCS lub BRCC do procedury zapalajacej/gaszacej dwukropek.
    Pozdro
    Dexter

    0
  • #11 15 Lis 2004 20:07
    ACULA
    Poziom 34  

    Najprościej to będzie gdy zapyta się autora co to za procek ;)


    Co do rotacji i 51 to rzeczywiście jest bezsens
    wystarczy
    jb ACC.0 ale musi być ACC, a nie A

    wg mnie to i tak jest bezsens bo ciągle wysyłasz coś na wyświetlacz, prędzej podepniesz INT pcf'a i co sekundę zapiszesz inny znak. Wtedy albo sprawdzasz ACC albo flagę , którą w każdym przerwaniu traktujesz cpl znak. Dodatkowa zaleta to oszczędność czasu i wyświetlacza. Czas powinien być odczytywany i wysyłany co 1 sekundę.
    -------------------

    Xitami napisał:
    I tak i nie Ewo, Agatko i Olku, bo czas pobieramy ze scalonego zegarka, jeśli odczytujemy go przynajmniej raz na sekundę jest OK, lecz jeśli rzadziej to jest lipa.

    A widziałeś zegar odczytywany rzadziej niż co 1 sekundę?? Ja wolałbym żeby w moim minuty zmieniały się co 60 sekund a nie żadne 60-65 ;)

    0
  • #12 15 Lis 2004 20:50
    Xitami
    Poziom 29  

    Rozwiązań jest 1001. Pisanie że jakieś jest bez sensu, jednocześnie narzekając, że nie zna się szczegółów jest bez sensu w dwójnasób.

    ACULA napisał:
    A widziałeś zegar odczytywany rzadziej niż co 1 sekundę?? Ja wolałbym żeby w moim minuty zmieniały się co 60 sekund a nie żadne 60-65 ;)

    A owszem, nawet mam taki zegarek, całkiem fajnie chodzi, przyznasz że 1 sek. na około 300.000 lat to całkiem dobry wynik.

    0
  • #13 15 Lis 2004 21:19
    ACULA
    Poziom 34  

    Nie ściemniaj.
    Jakie 300000lat??
    Wyobraź sobie że badasz np tętno, obserwujesz od momentu przeskoczenia na 05 do momentu 06
    wg mnie to jest np 2-5 sekund na 60 sekund co daje newet 10% odchyłki
    1 sekunda na minutę jest przy odczycie min co sekundę, a co dopiero przy rzadszym odczytywaniu.
    Chyba tak wygląda zasada działania ZEGARA ;) Dla mnie to nie jest całkiem dobry wynik.

    Wracając do tematu to ktoś napisał o przesuwaniu i 51. DLatego napisałem że bez sensu.
    Głównym celem mojego postu było zwrócenie uwagi na wyjście INT, jakoś nikt o nim nie wspomniał ;)

    0
  • #14 15 Lis 2004 21:30
    Xitami
    Poziom 29  

    Nie ściemniam, choć teraz nie jestem pewny czy to była sekunda na 300.000 czy na milion lat. Czas w moim budziku odczytywany raz na minutę, nie przewidziano go do pomiaru tętna i może dla tego pokazuje tylko godziny i minuty.
    Wybór konkretnego rozwiązania zależy od rozwiązywanego problemu.
    Np. w PC zegarek oglądany jest chyba tylko raz po włączeniu (tak było w czasach przed Windowsowych).

    0
  • #15 15 Lis 2004 21:43
    ACULA
    Poziom 34  

    Xitami napisał:
    Wybór konkretnego rozwiązania zależy od rozwiązywanego problemu.
    Np. w PC zegarek oglądany jest chyba tylko raz po włączeniu (tak było w czasach przed Windowsowych).

    Czyli Twój "zegar" ma dokładność 1 minuty ;) A nie 1sekundy na 300000lat. Z drugiej strony ciekawe jak mierzyłeś odcinki czasu skoro przełączenie minut następuje w losowych sekundach np raz po 62 raz po 63 sekundach ;)

    Co do pomiaru tętna to nie zrozumiałeś postu lub nie przeczytałeś go. Ja właśnie pisałem że niektórzy mierzą czas obserwując zmieniające się minuty. Dlatego dla mnie ma znaczenie czy zmiana minut następuje na chybił trafił czy jest mierzony czas (60 sekund, a nie losowo od 60 do iluś sekund ).

    Co do PC to raczej rzadkość aby pokazywał się czas. Przynajmniej ja nie spotkałem takiej płyty.
    O ile dobrze pamiętam to jedynie po komendzie TIME lub po odpowiednim sformatowaniu prompt pojawiał się w kazdej linii poleceń. Więc znowu ZONK bo może być odczytywany np co 0,001s. Nie trafiłeś z tym przykładem ;)

    0
  • #16 15 Lis 2004 23:04
    Xitami
    Poziom 29  

    Szkoda że pleciemy sobie nie na temat, ale co tam.
    Tętno można mierzyć na wiele sposobów, np. przez pomiar czasu trwania określonej liczby uderzeń serca, widziałem śliczne egzemplarze mechanicznych zegarków z odpowiednią tarczą.
    Mój budzik doskonale nadaje się do odmierzania minutowych cykli (tak jak proponujesz) i to z dokładnością grubo poniżej sekundy, z identycznym błędem mogę nim odmierzyć czas np. 525.600 minut. No to jaki jest dokładny?
    Prompt prawie na 100% nie. Time, chyba tak choć 1000 razy na sek. raczej nie da rady. Poza tym, czy ja pisałem że nie może.
    A w ogóle po co ten dialog jeśli nie potrafię czytać?

    0
  • #17 15 Lis 2004 23:25
    ACULA
    Poziom 34  

    A czemu nie na temat, częstotliwość rzecz ważna. W końcu to zegar ;)
    Nadal nie rozumiesz. Nie możesz odmierzyć 60 sekund, jeżeli masz odczyt powyżej jednej sekundy to wynika z podstaw matematyki.
    Jeżeli sprawdzasz co 1,1 sekundy to po 54 odczytach nic się nie zmieni bo 54x1,1=59,4 więc zmiana nastąpi po 55 odczycie czyli po upływie 60,5sekundy. Więc nie wiem jak ma odmierzyć 60 sekund . No chyba że co 2,3,4,5 ,6,10 sekund, ale to pod warunkiem dobrania dokładnie tej wartości.
    Napisałeś że Twój zegar chociaż sprawdza powyżej jednej sekundy to dokładność ma grubo poniżej sekundy.
    Możesz napisac co jaki czas odczytujesz czas??

    Aby zmniejszyć błąd przy odczycie z PCF nalezy albo użyć "synchronizacji" z PCF albo zmniejszyć internały czasowe.
    Zasada podobna do twierdzenia o próbkowaniu ;)

    Co do stwierdzenia że z takim sammym błędem zmierzesz 1 minutę i klikaset tysięcy minut to zostawię bez komentarza, ;) Z drugiej strony ciekawe jak to zmierzyłeś i z jakim błędem, kilku sekund czy %?? .

    Xitami napisał:
    Prompt prawie na 100% nie.

    Co do prompt doczytaj np DOS dla początkujacych. To Ty wyciągnałeś problem dosu ;) Można skonfigurować że w każdej linii "zachęty" pojawia się czas, data, lub inne znaczki itp
    Wpisz prompt $T ;)
    Co do 1000 wyświetleń czasu to nalezy użyć pliku wsadowego ;)

    PS Nadal nie napisałeś jak zmierzyłeś czas 1 sekunda na 300000lat, czyżby przechwałki?? ;)

    0
  • #18 16 Lis 2004 01:32
    Xitami
    Poziom 29  

    A czemu nie na temat, częstotliwość rzecz ważna. W końcu to zegar ;)
    TEMAT POJAWIA SIĘ NAD KAŻDYM POSTEM ;)
    Nadal nie rozumiesz. Nie możesz odmierzyć 60 sekund, jeżeli masz odczyt powyżej jednej sekundy to wynika z podstaw matematyki.
    Jeżeli sprawdzasz co 1,1 sekundy to po 54 odczytach nic się nie zmieni bo 54x1,1=59,4 więc zmiana nastąpi po 55 odczycie czyli po upływie 60,5sekundy. Więc nie wiem jak ma odmierzyć 60 sekund . No chyba że co 2,3,4,5 ,6,10 sekund, ale to pod warunkiem dobrania dokładnie tej wartości.
    Napisałeś że Twój zegar chociaż sprawdza powyżej jednej sekundy to dokładność ma grubo poniżej sekundy.
    Możesz napisac co jaki czas odczytujesz czas??

    CZEMU NIE WYSTARCZY ZEGAR TYKAJĄCY DOKŁADNIE RAZ NA MINUĘ?
    NAPISAŁEM „...(TAK JAK PROPONUJESZ)...”
    Aby zmniejszyć błąd przy odczycie z PCF nalezy albo użyć "synchronizacji" z PCF albo zmniejszyć internały czasowe.
    Zasada podobna do twierdzenia o próbkowaniu ;)

    MOŻNA TEŻ INACZEJ, A JEŚLI PRZEZ ODPOWIEDNIO DŁUGI CZAS, BĘDĘ SPRAWDZAŁ JEGO WSKAZANIA CO POWIEDZMY GODZINĘ I 1E-20 SEKUNDY, W KOŃCU BĘDĘ POTRAFIŁ DOSTROIĆ SIĘ DO NIEGO CAŁKIEM DOKŁADNIE. CYFROWYM OSCYLOSKOPEM MOŻNA ZOBACZYĆ PRZEBIEGI O CZĘSTOTLIWOŚCI WYŻSZEJ NIŻ POŁOWA CZĘSTOTLIWOŚĆ PRÓBKOWANIA.
    Co do stwierdzenia że z takim sammym błędem zmierzesz 1 minutę i klikaset tysięcy minut to zostawię bez komentarza, ;) Z drugiej strony ciekawe jak to zmierzyłeś i z jakim błędem, kilku sekund czy %?? .
    NIE MIERZYŁEM, UWIERZYŁEM FIZYKOM
    „...Prompt prawie na 100% nie....”
    Co do prompt doczytaj np DOS dla początkujacych. To Ty wyciągnałeś problem dosu ;) Można skonfigurować że w każdej linii "zachęty" pojawia się czas, data, lub inne znaczki itp. Wpisz prompt $T ;)

    TO TO JA WIEM, ALE PRAWIE NA 100% PROMPT NIE KORZYSTA ZE SPRZĘTOWEGO ZEGARKA (TEGO Z BATERIĄ) TYLKO TEGO CYKAJĄCEGO Z „OKRĄGŁĄ” CZĘSTOTLIWOŚCIĄ 18,2 Hz.
    Co do 1000 wyświetleń czasu to nalezy użyć pliku wsadowego ;)
    ZMIERZYŁEM 1000 WIERSZOWY BAT: „TIME <ENTER.TXT >NUL” TAK CHYBA BĘDZIE NAJSZYBCIEJ. NA MOIM KOMPUTERZE (XP 1GHz) WYCHODZI COŚ OKOŁO SEKUNDY, W DOSOWYCH CZASACH CHYBA NIE DO OSIĄGNIĘCIA, TERAZ OK.
    PROMPT I TIME TO NIE JEDYNE SPOSOBY ZOBACZENIA CZASU I KORZYSTANIA Z ZEGARA PRZEZ DOS
    PS Nadal nie napisałeś jak zmierzyłeś czas 1 sekunda na 300000lat, czyżby przechwałki?? ;)
    O JAKI ZEGAREK CHODZI Z PEWNOŚCIĄ SIĘ DOMYŚLASZ. MÓJ BUDZIK POKAZUJE TYLKO GODZINY I MINUTY, MIGA DWUKROPKIEM, PEWNIE NAWET BARDZO DOKŁADNIE ALE WCALE NIE MUSI, MNIE WYSTARCZA TO ŻE MINUTY CYKAJĄ DOKŁADNIE.

    0
  • #19 16 Lis 2004 02:01
    ACULA
    Poziom 34  

    Bo różnica jest taka , że my tu piszemy o odczytywaniu PCF. Jeżeli będziesz odczytywać PCF dokładnie co minutę to PCF staje się niepotrzebny ;) Bo te 60 minut i 24 h można zrobić na rejestrach. To tylko dwa rejestry. W ten sposób można odmierzać godziny, dni ale chodzi o to żeby PCF mierzył czas.
    Wracając do Twojego programu to wszystko zalezy jak na to patrzeć. Ciekawe czy co minutę generuje się przerwanie, czy zliczasz x krótkich odcinków czasowych (przerwań). Więc to tykanie nie jest co minutę a cześciej . A co za różnica, że nie wyświetlasz pojedyńczych tyknięć. Ważne, że je liczysz ;)

    Co do tematu to inna sprawa. Wolę czytać treść postów. Gość chce uzyskać częstotliwość 0,5Hz przy najmniejszym obciążeniu procka ;) Upieram się przy INT ;)

    Co do wiary fizykom to trzeba uważać. To, że na kwarcu ktoś coś napisał to nie jest 100%, jest jeszcze reszta obwodu, która wpływa na częstotliwość nie wspominając o innych czynnikach ;)
    Z drugiej strony nawet sam producent PCF zaleca stosowanie trymera. Podobnie z innymi układami.

    Przez odczytywanie co godzinę w życiu nie dostroisz się do PCF. Jedynie porównanie obu przebiegów : INT ze zboczem sygnału procka. Ale to na największej lupie dobrego oscyloskopu. Lub specjalny miernik. Człowiek jest za tępy by ustawić dokładność 1 sekundy na 300000lat. Zanim spojrzysz co wskazuje PCF i Twój zegar atomowy to już będzie po zabawie ;) Ja przynajmniej nie spotkałem takiego supermana. Więc jak chcesz się dostrajać mierząc tylko godzinę?? Piszesz że uzyskałeś stabilność 10^-13 pochwal się producentom etalonów ;) Ja coś nie wierzę ;)
    O przytoczonych 10^-20 nawet nie wspomnę.


    PS Ładnie to tak pisać wielkimi literami?? A co z netykietą??

    PS2 ustal jedną wersję a potem pisz ;)
    a)najpierw piszesz że nie MOŻE, potem zmieniasz na nie MÓGŁ 10 lat temu
    b)najpierw piszesz że Twój zegarek ma dokładność 1sekundy na 3000000 lat, potem piszesz że nie ma ale i tak jest ładny itd ;)
    zaraz się okaże jest tak napisali w avt ;)

    0
  • #20 16 Lis 2004 03:48
    Xitami
    Poziom 29  

    Pewnie, że przerwanie co sekundę jest naturalne, a w mikroprocesorowym światku to nawet częstsze są naturalniejsze, jeżeli nie jest to tylko zegarek to pewnie przerwania występują dość często. Można dołożyć przerwanie od zegarka, a co jeśli nie można? Skąd ja to mogę wiedzieć?
    Zegarek jest mój bo kupiłem go w sklepie, i owszem cyka w nim dość często, około 77 kHz. Ale nie opiera się on na tej częstotliwości, kompletny odczyt czasu trwa minutę. Upierasz się przy przerwaniu, OK., ale wcale nie musi to być 1Hz z PCF’a prawda? Łatwo sobie wyobrazić czytanie PCF’a co ileś tam tyknięć innego przerwania.
    W pierwszym poście twierdzisz, że czas powinien być odczytywany i wysyłany co sekundę OK. Ale chcesz wcisnąć jeszcze jakąś flagę odwracaną co sekundę, po co ona?
    Fizyk na kwarcu nie napisze 100%, to może napisać tylko ktoś z marketingu. No a jeśli nie wierzyć fizykom to komu?
    Nie pisałem o refleksie człowieka..
    Nie pisałem też o „lupie” w oscyloskopie.
    Nie napisałem że przez godzinę, tylko ”... PRZEZ ODPOWIEDNIO DŁUGI CZAS, BĘDĘ SPRAWDZAŁ JEGO WSKAZANIA CO POWIEDZMY GODZINĘ I 1E-20 SEKUNDY...” a to różnica, prawda?
    To oni (producenci) się chwalili i dla tego kupiłem ten budzik ;).
    Pisałem wielkimi literami, bo chciałem jakoś odróżnić nasze teksty, przez [ quote ] post by miał hektar. Gdybym chciał krzyczeć jakoś bym to zaznaczył.
    Nie rozumiem o co chodzi w PS2 - z tym „może” i „mógł”.
    Nigdzie też nie zmieniłem zdania o dokładności mojego zegarka. A o tym jak działa przeczytałem znacznie wcześniej niż 1991 roku w którym założono AVT.

    0
  • #21 19 Lis 2004 23:42
    Xitami
    Poziom 29  

    No i przykro mi trochę, gadaliśmy sobie i jakoś umilkłeś, czemu?

    0
  • #22 20 Lis 2004 00:26
    ACULA
    Poziom 34  

    Bo czekam na autora zamiast klepać bez sensu,

    Po drugie i tak nie czytasz moich oraz innych postów, a także wysnuwasz jakieś teorie. Napisałeś, że napisałeś że co godzinę i 1E-20 sekundy. Zgoda, tak napisałeś i twierdzę że to jest ogromna różnica i nadal kompletną bzdurą. Piszesz i piszesz a nie odpowiadasz na moje pytania. Jak zamierzasz sprawdzić co 1E-20 sekundy. To już świadczy o tym że nigdy tego nie robiłeś układów z takimi zależnościami czasowymi. Ktoś kto chociaż raz miał do czynienia z czasem nigdy nie strzeli takiej wartości.
    Załóżmy , że przybijesz najlepsze laboratoria świata i uda Ci się zmierzyć co godzinę i 1E-20 sekundy, to jakie wykryjesz przesunięcie czasowe?? Wiesz w ogóle co to znaczy 1E-20 sekundy?? O dokładności (w domowych warunkach, w laboratorium znacznie dłużej) możemy zacząć mówić gdy zaczniesz mierzyć odchyłki na 24 godziny ( najlepiej znacznie więcej), a nie godzinę. Wtedy jest 24 razy większy odchył a co za tym idzie dokładność.
    Może Ty napiszesz jaki zastosujesz wzorzec, metodę pomiarową i jaką osiągniesz dokładnośc??

    Wracając do częstotliwości. Najpierw wciskałeś kity , że odczytujesz co ponad sekundę. Jak się potem okazało częstotliwość wynosi 77kHz a po prostu nie wyświetlasz sekund. To że nie wyświetli się jakiejś wielkości lub zasłoni się ją nie znaczy, że zniknęła. Co ma znaczyć , że przy częstotliwośći 77kHz odczyt trwa minutę??To , że zastosujesz dzielniki częstotliwości nic nie zmienia. Ja zaraz walnę 60*24*365 i napiszę, że odczyt roku trwa rok. Ważne co liczysz a nie do ilu, to może być stoper,sekundnik,minutnik, kalendarz. Ważne jest co ile następuje odczyt lub zliczenie.

    Następne pytanie o flagę. Widzę , że nie czytałeś poprzednich postów. Wystarczyło je poczytać.

    Co do wiary fizykom to zalezy o czym piszemy i jaki jest to fizyk. Jeśli bazarowy sprzedający zegarki to mu nie wierzę. W kwestiach elektronicznych wolę najpierw zmontować układ, już wielu twierdziło :to musi działać. Okazało się że nie musi, bo zaszkodziła np tolerancja elementów, kabelki itd. Fizyk tego tak dokąłdnie nie przewidzi. Chociaż są fizycy praktykanci, którzy wiedzą o co chodzi ale i tak nie zawsze wszystko przewidzą. Przed Kopernikiem też wierzyli fizykom ;)

    Mówisz , że nie pisałeś o lupie, ani o mierniku, ani o refleksie człowieka. To jak badasz częstotliwość i zależności czasowe z dokładnością 1E-13 -20 sekundy.


    Ostatecznie słowa:

    To oni (producenci) się chwalili i dla tego kupiłem ten budzik .

    Już mi dały do myślania, że dyskusja jest zbędna, gdyż na Twoim KUPNYM zegarku napisali, że na 300 000 lat spóźni się o sekundę i to jest wyznacznikiem Twoich teorii.

    Dlatego przestałem pisać. Zaraz i tak zmienisz zdanie, polejesz trochę wody i znowu napiszesz czemu ktoś nie chce pisać. Dlatego uważam , że lepiej czasami przemilczeć pewne sprawy.

    0