logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega32][C] Przesyłanie danych z Inpu Capture Unit

mati1988k 28 Sty 2012 22:37 1308 2
REKLAMA
  • #1 10462319
    mati1988k
    Poziom 13  
    Napisałem program który ma odczytywać odległości pomiędzy zboczami narastającymi sygnału PPM z nadajnika modelarskiego.
    [Atmega32][C] Przesyłanie danych z Inpu Capture Unit
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jednak dane wysyłane przez USART nie aktualizują się tylko się cały czas zwiększają ze stałą prędkością.

    Dane odbierane w Bray's terminal:
    Cytat:
    1: 41 | 2: 131 | 3: 225 | 4: 314 | 5: 415 | 6: 1107 | 7: 1201
    1: 1312 | 2: 2005 | 3: 2099 | 4: 2193 | 5: 2283 | 6: 2376 | 7: 2465
    1: 2902 | 2: 2997 | 3: 3090 | 4: 3180 | 5: 3274 | 6: 3363 | 7: 3464
    1: 3895 | 2: 3988 | 3: 4078 | 4: 4172 | 5: 4261 | 6: 4362 | 7: 5054
    1: 5260 | 2: 5951 | 3: 6046 | 4: 6139 | 5: 6229 | 6: 6323 | 7: 6412
    1: 6849 | 2: 6944 | 3: 7037 | 4: 7127 | 5: 7221 | 6: 7310 | 7: 7411
    1: 7841 | 2: 7935 | 3: 8025 | 4: 8118 | 5: 8208 | 6: 8308 | 7: 9000
    1: 9206 | 2: 9898 | 3: 9993 | 4: 10086 | 5: 10176 | 6: 10270 | 7: 10359
    1: 10984 | 2: 11074 | 3: 11168 | 4: 11257 | 5: 11358 | 6: 12050 | 7: 12144
    1: 12255 | 2: 12948 | 3: 13042 | 4: 13136 | 5: 13226 | 6: 13319 | 7: 13408
    1: 14124 | 2: 14217 | 3: 14306 | 4: 14407 | 5: 15099 | 6: 15193 | 7: 15287
    1: 15997 | 2: 16091 | 3: 16185 | 4: 16275 | 5: 16368 | 6: 16457 | 7: 16558
    1: 17266 | 2: 17356 | 3: 17457 | 4: 18149 | 5: 18243 | 6: 18337 | 7: 18427
    1: 19141 | 2: 19235 | 3: 19325 | 4: 19418 | 5: 19507 | 6: 19608 | 7: 20300
    1: 20506 | 2: 21198 | 3: 21292 | 4: 21386 | 5: 21476 | 6: 21569 | 7: 21659
    1: 22374 | 2: 22467 | 3: 22557 | 4: 22658 | 5: 23350 | 6: 23444 | 7: 23538
    1: 24248 | 2: 24342 | 3: 24436 | 4: 24526 | 5: 24619 | 6: 24708 | 7: 24809
    1: 25517 | 2: 25607 | 3: 25708 | 4: 26399 | 5: 26494 | 6: 26587 | 7: 26677
    1: 27392 | 2: 27485 | 3: 27575 | 4: 27669 | 5: 27758 | 6: 27859 | 7: 28551
    1: 28757 | 2: 29449 | 3: 29543 | 4: 29637 | 5: 29727 | 6: 29820 | 7: 29909
    1: 30625 | 2: 30718 | 3: 30807 | 4: 30908 | 5: 31600 | 6: 31695 | 7: 31788
    1: 32498 | 2: 32593 | 3: 32686 | 4: 32776 | 5: 32870 | 6: 32959 | 7: 33060
    1: 33768 | 2: 33857 | 3: 33958 | 4: 34650 | 5: 34744 | 6: 34838 | 7: 34928
    1: 35642 | 2: 35736 | 3: 35826 | 4: 35919 | 5: 36009 | 6: 36110 | 7: 36802
    1: 37008 | 2: 37700 | 3: 37794 | 4: 37888 | 5: 37978 | 6: 38071 | 7: 38160
    1: 38876 | 2: 38969 | 3: 39058 | 4: 39159 | 5: 39851 | 6: 39946 | 7: 40039
    1: 40749 | 2: 40844 | 3: 40937 | 4: 41027 | 5: 41121 | 6: 41210 | 7: 41311
    1: 42018 | 2: 42108 | 3: 42209 | 4: 42901 | 5: 42995 | 6: 43089 | 7: 43179
    1: 43893 | 2: 43987 | 3: 44077 | 4: 44170 | 5: 44259 | 6: 44360 | 7: 45052
    1: 45258 | 2: 45950 | 3: 46045 | 4: 46138 | 5: 46228 | 6: 46322 | 7: 46411
    1: 47127 | 2: 47220 | 3: 47309 | 4: 47410 | 5: 48102 | 6: 48196 | 7: 48290
    1: 49000 | 2: 49094 | 3: 49188 | 4: 49278 | 5: 49371 | 6: 49461 | 7: 49562
    1: 50269 | 2: 50359 | 3: 50460 | 4: 51152 | 5: 51246 | 6: 51340 | 7: 51430
    1: 52144 | 2: 52238 | 3: 52328 | 4: 52421 | 5: 52510 | 6: 52611 | 7: 53303
    1: 53509 | 2: 54201 | 3: 54296 | 4: 54389 | 5: 54479 | 6: 54573 | 7: 54662

    Czy ktoś z was potrafi mi wytłumaczyć dlaczego te wartości się nie nadpisują tylko dodają ? :)
  • REKLAMA
  • #2 10463990
    tmf
    VIP Zasłużony dla elektroda
    Dlatego, że w chwili zajścia zdarzenia do ICR przepisywana jest wartość licznika timera. ICR to nie jest rejestr, który jest przez timer inkrementowany, stąd też nie ma wielkiego sensu do niego coś zapisywać. A że licznik timera się inkrementuje, więc kolejne wartości ICR to po prostu wartości licznika timera w momencie zajścia zdarzenia. Aby to zmienić powinieneś zerować licznik timera (pamiętając o zerowaniu ew. preskalera).
  • #3 10466956
    mati1988k
    Poziom 13  
    Hej. Dzięki za pomoc. Działa trochę lepiej ale jednak dalej źle. Tym razem dane już się zmieniają w zależności od położenia drążka w nadajniku, ale druga zmienna zmienia się zawsze a jest zbyt mała żeby to była przerwa synchronizacyjna. No i nie wiem co to za dana na miejscu zerowym tablicy, w ogóle się nie zmienia. Jest niby ponad 8000 ale jak ustawie if(czas>5000) to nic nie jest wysyłane.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Cytat:
    S 1: 8222 | 2: 325 | 3: 377 | 4: 369 | 5: 359 | 6: 374 | 7: 0 X
    S 1: 8222 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 324 | 3: 376 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 376 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 376 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 376 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 359 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 359 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 326 | 3: 377 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 326 | 3: 377 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 326 | 3: 377 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 376 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 376 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8220 | 2: 325 | 3: 376 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 324 | 3: 377 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8220 | 2: 325 | 3: 377 | 4: 369 | 5: 359 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 359 | 6: 374 | 7: 0 X
    S 1: 8222 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8222 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8222 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 324 | 3: 376 | 4: 369 | 5: 360 | 6: 375 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 376 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 376 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 360 | 6: 374 | 7: 0 X
    S 1: 8221 | 2: 325 | 3: 377 | 4: 369 | 5: 359 | 6: 374 | 7: 0 X
REKLAMA