Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[tiny2313][BASCOM] Pilot do aparatow nikon

kiler129 13 Feb 2009 01:12 3464 14
  • #1
    kiler129
    Level 27  
    Witajcie!
    Wpadlem na dosc ciekawy pomysl fotografowania blyskawic.
    Mianowicie gdyby wykryc zmiane natezenia swiatla na fotorezystorze (szybkie toto?) od ciemnosci do jasnosci i wyzwoalic wtedy migawke z krotkim czasem powinno wyjsc calkiem fajne zdjecie bez 20-30sec naswietlania i czekania na blysk ;)
    Problem w tym ze za pomoca bascoma chyba nie da sie wygeneroawac czegos takiego: http://www.bigmike.it/ircontrol/images/ML-L3.r2.png (po wygeneraowaniu czekamy 62ms i znowu to samo)
    Napisalem kod z toggle i nic - zero reakcji ze strony aparatu.
    Dodam ze znalazem na necie hex do tiny2313 i dziala - wiec jednoznacznie cos nie tak z bascomem i jego czasami ;/

    Ma ktos pomysl jak to rozwiazac? Moze jakas wstawka w ASM? Da sie ja pozniej jako sub zrobic i wywolac w razie potrzeby? (po wykryciu blysku)
  • Helpful post
    #2
    mirekk36
    Level 42  
    kiler129 wrote:
    Problem w tym ze za pomoca bascoma chyba nie da sie wygeneroawac czegos takiego: http://www.bigmike.it/ircontrol/images/ML-L3.r2.png (po wygeneraowaniu czekamy 62ms i znowu to samo)
    Napisalem kod z toggle i nic - zero reakcji ze strony aparatu.


    podchodząc w ten sposób to szybko okaże ci się, że pisząc ten program np w języku C - też nic nie zadziała - i co też stwierdzisz, że C jest do kitu i z niego nie da rady tego wygenerować?

    później napiszesz procedury w asm - i zapewne przy takim samym podejściu też nic ci nie wyjdzie - i co? też stwierdzisz, że asembler jest do kitu bo w nim nie można tego wygenerować ???

    .... czy może dopiero aż wtedy domyślisz się, że to wcale nie jest coś nie tak z językami za które się bierzesz - tylko z twoim programowaniem? albo i nie dostrzerzesz - tylko rzucisz to wszystko uznając, że to diabła warte?

    ... generalnie pomysł ciekawy, szczególnie gdy następuje kulka wyładowań atmosferycznych po sobie a mamy ustawiony ciut dłuższy (w nocy) czas migawki - mogą wychodzić fajne foteczki ;)

    dodam, że wygenerowanie tak prostego przebiegu, nie powinno nastręczać większych problemów także w samym Bascomie. Tyle tylko, że jeśli ty chcesz używać wbudowanych procedur opóźniająych jak:

    - waitus

    lub

    - waitms

    to zapomnij o prawidłowym efekcie finalnym dla tego rozwiązania. Nawet kodu nie pokazałeś, coś tam powyprawiał za herezje a już biadolisz na Bascoma.

    W ogóle próbując zrobić jakieś własne sterowanie IR (dowolne) to trzeba się posłużyć precyzyjnym odmierzaniem interwałów czasowych, a tu nie obejdziesz się bez pomocy Timera(-ów). Jeśli zaś zaprzęgniesz je do pracy - to w Bascomie nie jednego pilota zrobisz pomijając wbudowane standardy, które on obsługuje czyli RC5 czy Sony

    (inna jeszcze sprawa, że "gap" , który podałeś czyli 62ms (przerwa pomiędzy wysyłanymi sygnałami - może być z goła inna - być może nawet dla różnych aparatów Nikon'a i trzeba byłoby ją dobrać doświadczalnie. Na tej stronce którą podałeś piszesz, że ktoś tam zrobił włśnie 62ms i działa, ale zajrzyj sobie na http://lirc.sourceforge.net/remotes/nikon/ML-L3
    tam podane jest że dla tego typu aparatu gap powinien wynosić prawie 100ms. Nie podane jest tylko czy gap ma uwzględniać czas trwania ramki danych czy też nie - więc to też trzeba doświadczalnie sobie sprawdzić. Czyli raz puścić gap = X czasu , a drugi raz gap = X - ramka. Wbrew pozorom to byw bardzo istotne - nie zawsze ale bywa - wszystko zależy od producenta albo nawet modelu. Taki przykład miałem chociażby pisząc własną osbługę do SONY - gdzie dla 2 różnych odbiorników na tym czasie "gap'a" się właśnie przejechałem nieco więcej czasu ;)

    pozdrówka
  • Helpful post
    #3
    pixel7
    Level 22  
    Poniżej mój testowy program w bascomie. Procek m8, wew. zegar 8 mhz.
    Testowałem na nikon D80 - działa OK.

    Code:

    ' PILOT NIKON ML-3
    ' ZEGAR 8 MHZ

    Dim I As Word
    Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1

    Config Portd.5 = Output
    Reset Portd.5

    Compare1a = 100
    Enable Interrupts
    Disable Timer1
    Reset Tccr1a.com1a0

    '********************************************************************************************

    Do
          Gosub Sendnikon
    Loop

    End

    '********************************************************************************************
    Sendnikon:
     ' jedna petla for to 34 cykle
           Enable Timer1
             Set Tccr1a.com1a0
                For I = 1 To 530
                Next I                                          'stan wysoki przez 18000 cykli (2250 us)
             Reset Tccr1a.com1a0
             Disable Timer1
                For I = 1 To 6494
                Next I                                          'stan niski przez 220800 cykli (27600 us)
             Enable Timer1
             Set Tccr1a.com1a0
                For I = 1 To 153
                Next I                                          'stan wysoki przez 5200 cykli (650 us)
             Disable Timer1
             Reset Tccr1a.com1a0
                For I = 1 To 323
                Next I
             Enable Timer1                                      'stan niski przez 11000 cykli (1375 us)
             Set Tccr1a.com1a0
                For I = 1 To 135
                Next I                                          'stan wysoki przez 4600 cykli (575 us)
             Disable Timer1
             Reset Tccr1a.com1a0
                For I = 1 To 788
                Next I                                          'stan niski przez 26800 cykli (3350 us)
             Enable Timer1
             Set Tccr1a.com1a0
                For I = 1 To 153
                Next I
             Disable Timer1
             Reset Tccr1a.com1a0                                'stan wysoki przez 5200 cykli (650 us)
    Return



    Pozdrawiam,
  • #4
    kiler129
    Level 27  
    mirekk36 wrote:
    kiler129 wrote:
    Problem w tym ze za pomoca bascoma chyba nie da sie wygeneroawac czegos takiego: http://www.bigmike.it/ircontrol/images/ML-L3.r2.png (po wygeneraowaniu czekamy 62ms i znowu to samo)
    Napisalem kod z toggle i nic - zero reakcji ze strony aparatu.


    podchodząc w ten sposób to szybko okaże ci się, że pisząc ten program np w języku C - też nic nie zadziała - i co też stwierdzisz, że C jest do kitu i z niego nie da rady tego wygenerować?

    później napiszesz procedury w asm - i zapewne przy takim samym podejściu też nic ci nie wyjdzie - i co? też stwierdzisz, że asembler jest do kitu bo w nim nie można tego wygenerować ???

    .... czy może dopiero aż wtedy domyślisz się, że to wcale nie jest coś nie tak z językami za które się bierzesz - tylko z twoim programowaniem? albo i nie dostrzerzesz - tylko rzucisz to wszystko uznając, że to diabła warte?

    Nie przesadzaj ;)
    Jestem programista ale akurat bascom mi nie podchodzi. Do tego slyszalem ze odmierzyc tam cos precyzyjnie nie idzie - stad opinia.

    mirekk36 wrote:

    dodam, że wygenerowanie tak prostego przebiegu, nie powinno nastręczać większych problemów także w samym Bascomie. Tyle tylko, że jeśli ty chcesz używać wbudowanych procedur opóźniająych jak:

    - waitus

    lub

    - waitms

    to zapomnij o prawidłowym efekcie finalnym dla tego rozwiązania. Nawet kodu nie pokazałeś, coś tam powyprawiał za herezje a już biadolisz na Bascoma.

    Zauwazylem ;)
    Co do kodu to co tu pokazywac? toggle portd.0 .... waitus ... toggle itd? :)

    mirekk36 wrote:

    W ogóle próbując zrobić jakieś własne sterowanie IR (dowolne) to trzeba się posłużyć precyzyjnym odmierzaniem interwałów czasowych, a tu nie obejdziesz się bez pomocy Timera(-ów).

    Pomyslalem o tym dzisiaj rano (a jednak prawda ze po nocy przychodza pomysly xD).
    Chcialem zedytowac posta i zapytac o te timery ale wiedze ze pixel robil juz cos takiego
    ;)

    mirekk36 wrote:
    Jeśli zaś zaprzęgniesz je do pracy - to w Bascomie nie jednego pilota zrobisz pomijając wbudowane standardy, które on obsługuje czyli RC5 czy Sony

    Ze standardowymi nie ma problemow - gorzej jak jest cos takiego.
    Swoja droga ciekawi mnie po kiego nie uzyja RC5 - przeciez taki sygnal rownie latwo "nagrac" i "odtworzyc".

    Jesli natomiast chodzi o gap`a to wiem - u mnie dzialaja wartosci od 60 do 70ms. Wydaje mi sie jednak ze to jest standardowe w nikonach - w koncu jeden pilot jest do wszytkich a komunikacja jest jednostronna.

    pixel7 - wielki dzieki za kod - zaraz przetestuje.

    Znalazlem podstawowy blad w swoim programie - wysylam ciagly sygnal a nie 38kHz bodaj.

    edit: Kod kompiluje sie bez klopotow ale na pd5 caly czas 1 ;/
  • Helpful post
    #5
    pixel7
    Level 22  
    kiler129 wrote:

    Znalazlem podstawowy blad w swoim programie - wysylam ciagly sygnal a nie 38kHz bodaj.


    A miałem się zapytać w jaki sposób generujesz nośną!
  • #6
    kiler129
    Level 27  
    Tak czy siak twoj kod nie dziala - prawdopodobnie sie machnelem na fusach.
    Niestety nie sprawdze narazie - zepsulem ostaniego attinego w domu :|
    I to nie wiem jak :D Poprostu przestal dzialac ;]
    Po podalczeniu zaczyna sie grzac :P

    edit: znalazlem jeszce dwa - wiec go to fun ;)
  • Helpful post
    #7
    mirekk36
    Level 42  
    kiler129 wrote:
    Nie przesadzaj ;)
    Jestem programista ale akurat bascom mi nie podchodzi. Do tego slyszalem ze odmierzyc tam cos precyzyjnie nie idzie - stad opinia.


    kiler129 wrote:
    Co do kodu to co tu pokazywac? toggle portd.0 .... waitus ... toggle itd?


    kiler129 wrote:
    Tak czy siak twoj kod nie dziala

    odnośnie gotowca od kolegi pixel....

    więc jaki to jest twój ulubiony język skoro nie Bascom? ;) może w takim razie pokaż w tym innym kodzie co spłodziłeś? (nie jest moim celem dopiec ci, uwierz, tylko zwrócić uwagę na to że warto zawsze ale to zawsze do bólu najpierw szukać błędów u siebie)

    bo przecież pisałem ci, że za pomocą "waitus" w tym temacie daleko nie zajdziesz jeśli chodzi o nadawanie czy odbiór IR

    a ty , widzę , że za pomocą kodu typu "toogle i waitus" , który zwykle na co dzień używają ludzie w żłobku programistycznym, - wyrażasz zaraz opinię jakoby to Bascom a nie ty - nie wspierał precyzyjnych operacji ;)

    .... podejrzewam, że gdybyś nie dostał gotowca tylko sam zaczął kombinować w oparciu o Timery to:

    1. szybciej byś doszedł do rozwiązania swojego problemu
    2. poznałbyś dokładniej owe zagadnienia
    3. nabrałbyś większej wprawy w programowaniu i Bascomie
    4. nie rzucałbyś na darmo słów na wiatr w postaci dziwnych opinii ;)

    a tak? dzięki tylko gotowcowi?

    1. poświecasz więcej czasu niż gdy sam byś to robił
    2. gdy już ci wyjdzie (czego ci życzę) to i tak będziesz miał mniejsze doświadczenie w obsłudze IR ale i Bascomie ;)
    3. nadal zawsze gdy coś ci nie wyjdzie będziesz obwiniał, kompilatory, procki, programatory i bóg wie co jeszcze panie programisto zamiast spojrzeć krytycznym okiem na swoje błędy i poprawić je

    ...... a wiesz jaką byś miał radochę gdyby tobie samemu się to udało? on na prawdę byłoby się z czego cieszyć ;) tym bardziej, że zapewne znalazłoby się parę osób, które

    nie mniej jednak powodzenia życzę ;)

    Dodano po 9 [minuty]:

    aha a jeśli na prawdę robisz coś w innym języku np C ? to polecam ci także ten link - może się kieyś przyda

    https://www.elektroda.pl/rtvforum/topic1139494.html
  • #8
    kiler129
    Level 27  
    mirekk36 wrote:
    kiler129 wrote:
    Nie przesadzaj ;)
    Jestem programista ale akurat bascom mi nie podchodzi. Do tego slyszalem ze odmierzyc tam cos precyzyjnie nie idzie - stad opinia.


    kiler129 wrote:
    Co do kodu to co tu pokazywac? toggle portd.0 .... waitus ... toggle itd?


    kiler129 wrote:
    Tak czy siak twoj kod nie dziala

    odnośnie gotowca od kolegi pixel....

    Juz naprawilem kod. Napilem sie kawy a nastepnie jeszce raz przeczytalem kod -przeciez wyjscie w attiny ebdzie na PB3 a nie PD5 ;]
    Po poprawieniu deklaracji wyjscia wszytko dziala.

    mirekk36 wrote:

    więc jaki to jest twój ulubiony język skoro nie Bascom? ;) może w takim razie pokaż w tym innym kodzie co spłodziłeś? (nie jest moim celem dopiec ci, uwierz, tylko zwrócić uwagę na to że warto zawsze ale to zawsze do bólu najpierw szukać błędów u siebie)

    Obecnie pisze w PHP - w zasadzie wszytko moge napisac (ostani projekt to nawigacja z GPS i google maps).
    Schodzimy jednak z tematu ;)
    Jak chcesz pogadac o programowaniu napisz na moje gg: 6388911

    mirekk36 wrote:

    bo przecież pisałem ci, że za pomocą "waitus" w tym temacie daleko nie zajdziesz jeśli chodzi o nadawanie czy odbiór IR

    a ty , widzę , że za pomocą kodu typu "toogle i waitus" , który zwykle na co dzień używają ludzie w żłobku programistycznym, - wyrażasz zaraz opinię jakoby to Bascom a nie ty - nie wspierał precyzyjnych operacji ;)


    Wiem ze nic nie zdzialam tutaj - przkonalem sie jednak o tym dopiero po napisaniu softu. Wczenisniej nie uzywalem czasow rzedu us.

    mirekk36 wrote:

    .... podejrzewam, że gdybyś nie dostał gotowca tylko sam zaczął kombinować w oparciu o Timery to:

    1. szybciej byś doszedł do rozwiązania swojego problemu
    2. poznałbyś dokładniej owe zagadnienia
    3. nabrałbyś większej wprawy w programowaniu i Bascomie
    4. nie rzucałbyś na darmo słów na wiatr w postaci dziwnych opinii ;)

    a tak? dzięki tylko gotowcowi?

    Zapewne tak ale nie mam zamiaru uzyc tego kodu na zasadzie copy&paste - wtedy za drugiem razem tez nie napisze niczego podobnego..
    Jako ze kod jest dobrze opisany i w zasadzie dosc prosty rozumiem go wiec mysle ze jednak nauka jakas jest ;)

    mirekk36 wrote:

    1. poświecasz więcej czasu niż gdy sam byś to robił
    2. gdy już ci wyjdzie (czego ci życzę) to i tak będziesz miał mniejsze doświadczenie w obsłudze IR ale i Bascomie ;)
    3. nadal zawsze gdy coś ci nie wyjdzie będziesz obwiniał, kompilatory, procki, programatory i bóg wie co jeszcze panie programisto zamiast spojrzeć krytycznym okiem na swoje błędy i poprawić je

    Procedura wysylania kodu nie jest akurat tutaj najwazniejsza. Ogolnie caly program nie bedzie zbyt skomplikowany.
    Tak btw to wyjscie z fotorezystora podac na ADC i obrabiac?

    mirekk36 wrote:

    ...... a wiesz jaką byś miał radochę gdyby tobie samemu się to udało? on na prawdę byłoby się z czego cieszyć ;) tym bardziej, że zapewne znalazłoby się parę osób, które

    nie mniej jednak powodzenia życzę ;)

    Wiema ;)
    Nieraz sie mecze i jak wyjdzie to banan na ustach pewny ;]

    mirekk36 wrote:

    Dodano po 9 [minuty]:

    aha a jeśli na prawdę robisz coś w innym języku np C ? to polecam ci także ten link - może się kieyś przyda

    https://www.elektroda.pl/rtvforum/topic1139494.html]

    Dzieki - widzialem juz keidys ten proejekt.

    Dodano po 25 [minuty]:

    Musze chyba popracowac nad tym kodem - wyzwala moze raz na 1000x ;/
    Cos czasy sa zrypane ... moze ten gap.

    Dodano po 1 [godziny] 36 [minuty]:

    ok... wzorujac sie na kodzie pixela napisalem wlasny.
    Idea ta sama ale sknociles troche pixel ;)
    Po 1 przebieg jest inny.
    Po 2 wywolujesz tylko raz.
    Po 3 czasy sa niezbyt - wg tego co podalem dziala idealnie.

    Kod:
    Code:

    'Impletacja Nikon ML-3
    'Testowano na Nikon D60
    '!!!UWAGA!!! w przypadku zmiany cpu nalezy zmienic wyjscie diody (dla Attiny2313 jest to PB.3)
    'Kod na licencji GPLv3

    $crystal = 8000000                                          '8Mhz (ja uzylem int clock - jego dokladnosc jest wystraczajaca)
    Dim I As Word
    Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1


    Config Portb.3 = Output                                     'wyjscie diody
    Config Portd = Input                                        'port d jako wejscie
    Portd = &B1111111

    Compare1a = 100
    Enable Interrupts
    Disable Timer1
    Reset Tccr1a.com1a0                                         'domyslnie off

    '*****************************************GLOWNA PETLA***************************************************
    Do
    If Pind.0 = 0 Then Gosub Ml3                                '1 fotka
    If Pind.0 = 0 Then Gosub Mlwait                             'wyzwalanie z 2 sekundowym opoxnieniem
    Loop

    End
    '*****************************************KONIEC PETLI***************************************************
    Mlwait:
    Wait 2                                                      'Ustaw czas opoznienia dla S2
    Gosub Ml3
    Return

    Ml3:                                                        'nie wiedzialem jak to sensowie zaprogramowac bez kopiowania 2x tego samego co w code:
    Gosub Code
    Gosub Code
    Return

    Code:
     ' jedna petla for to 34 cykle
     ' jeden cykl to 8us
     ' 650uS*8 = 5200 cykli
     ' 5200cykli:34cykle = 153x for ;]
             Enable Timer1
             Set Tccr1a.com1a0
                For I = 1 To 471
                Next I                                          'ON 2000uS

             Reset Tccr1a.com1a0
             Disable Timer1
                For I = 1 To 6548
                Next I
                                                          'OFF 27830uS
             Enable Timer1
             Set Tccr1a.com1a0
                For I = 1 To 92
                Next I                                          'ON 390uS

             Disable Timer1
             Reset Tccr1a.com1a0
                For I = 1 To 372
                Next I

             Enable Timer1                                      'OFF 1580uS
             Set Tccr1a.com1a0
                For I = 1 To 97
                Next I                                          'ON 410uS

             Disable Timer1
             Reset Tccr1a.com1a0
                For I = 1 To 843
                Next I                                          'OFF 3580uS

             Enable Timer1
             Set Tccr1a.com1a0
                For I = 1 To 95
                Next I                                          'ON 400uS

             Disable Timer1
             Reset Tccr1a.com1a0
                For I = 1 To 16
                Next I                                          'Off 45uS

    Return



    Moze ktos wytestowac kto ma hw sprawdzony? Mi cos dioda swankuje (po wygladzie to chyba troszke "przypalona") i nie zawsze chce robic fotke.
  • Helpful post
    #9
    janbernat
    Level 38  
    Ciekawe ile czasu trwa błyskawica?

    Fotorezystor ma czas narastania 40-100ms.
    A czas przetwarzania sygnału przez procesor?
    A czas wysyłania kodu?
    A jaki jest czas reakcji aparatu po odebraniu sygnału?
    Takie urządzenia potrafią czasem długo "myśleć".

    Może zacząć od określenia wymagań fizycznych(w tym wypadku czasowych)

    Dodano po 8 [minuty]:

    Z VIKI:
    "Główny impuls trwa kilkadziesiąt milionowych części sekundy, a przepływ prądu zanika zwykle po kilkuset.Po nim występuje zwykle udar powrotny.Zwykle każde uderzenie powrotne jest opóźnione o 30-tysięcznych części sekundy."
  • Helpful post
    #10
    mirekk36
    Level 42  
    janbernat wrote:
    Ciekawe ile czasu trwa błyskawica?

    Fotorezystor ma czas narastania 40-100ms.
    A czas przetwarzania sygnału przez procesor?
    A czas wysyłania kodu?
    A jaki jest czas reakcji aparatu po odebraniu sygnału?
    Takie urządzenia potrafią czasem długo "myśleć".


    tu nie chodzi o uchwycenie tej właśnie konkretnej "błyskawicy" która ma wyzwolić migawkę ;) .... chodzi o burze gdzie często następuje jedno wyładowanie po drugim. Rozumiesz?

    z aparatem też nie musi być tak źle jeśli chodzi o jego myślenie ;) wystarczy ustawić na "ręczną" obsługę (o ile taką posiada - a teraz prawie każdy nawet półprofesjonalny aparat na to pozwala. Nie ma problemu z głębią ostrości bo ustawiona na maxa, migawka też prawie na maxa - nawet dobrych kilka sekund!)

    tak więc sama idea autora nie jest zła i można by było na prawdę ciekawe fotki uzyskać bez prób obliczania ile milionowych części sekundy trwa jedno wyładowanie ;) - bo nie o jedno tu chodzi
  • Helpful post
    #11
    janbernat
    Level 38  
    kiler129 napisał:
    "gdyby wykryc zmiane natezenia swiatla na fotorezystorze (szybkie toto?) od ciemnosci do jasnosci i wyzwoalic wtedy migawke z krotkim czasem powinno wyjsc calkiem fajne zdjecie bez 20-30sec naswietlania i czekania na blysk."

    "zdjecie bez 20-30sec naswietlania..."

    No to chyba chodzi o tę konkretną błyskawicę.

    Bo jak to zrobić z naświetlaniem 20-30 s i z maksymalną głębią ostrości to jest na forach foto.

    Sam robiłem takie zdjęcia niedawno.
    (ok. 40 lat temu).
    Aparat Exacta położenie migawki B, przysłona 22(o ile pamiętam).

    "Problem w tym ze za pomoca bascoma chyba nie da sie wygeneroawac czegos takiego..."
    Pewnie się da, tylko trzeba wiedzieć czego się chce.
    PS.
    mirekk36-jesteś "awanturnikiem", jak Tygrysek.
    A ja jestem "filozofem"- jak Kłapouchy.
  • #12
    kiler129
    Level 27  
    Caly czas kombinuje jak w bascomie zrobic dokladnie 38kHz - kod pixela chyba nie daje 38kHz i tu raczej jest problem.
  • #13
    wicy
    Level 22  
    Poniżej fragment kodu (sub + zmienne), przetestowany na D80, działa 100/100
    Code:

    $regfile = "ATtiny2313.DAT"
    $crystal = 4000000

    Const Carrier_on = &B01000000
    Const Carrier_off = &B11000000

    Ddrb.3 = 1                                                  'wyjscie - podpieta IR

    Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1

    Compare1a = 49
    Enable Int0
    Enable Int1
    Enable Interrupts

    Tccr1a = Carrier_off

    Do .... Loop
    End

    Sub Migawka
       Disable Interrupts
       Tccr1a = Carrier_on
       Waitus 2249
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_off
       Waitus 27599
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_on
       Waitus 649
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_off
       Waitus 1374
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_on
       Waitus 574
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_off
       Waitus 3349
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_on
       Waitus 649
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_off

       Waitms 62
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_on
       Waitus 2249
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_off
       Waitus 27599
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_on
       Waitus 649
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_off
       Waitus 1374
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_on
       Waitus 574
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_off
       Waitus 3349
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_on
       Waitus 649
       $asm
       nop
       nop
       $end Asm
       Tccr1a = Carrier_off
       Enable Interrupts
    End Sub
  • #14
    m2x
    Level 11  
    Witam. Jako początkujący mam tylko pytanie: jak w tym przypadku przerzucić funkconalność pb.3 na np. pd.0? Z tego co rozumiem najprościej jest na pb.3 z uwagi na to że to naturalne wyjście timera.
  • #15
    mirekk36
    Level 42  
    m2x wrote:
    Witam. Jako początkujący mam tylko pytanie: jak w tym przypadku przerzucić funkconalność pb.3 na np. pd.0? Z tego co rozumiem najprościej jest na pb.3 z uwagi na to że to naturalne wyjście timera.


    Nie z uwagi na jakieś naturalne wyjście Timera - bo nie ma takiego pojęcia jak naturalne wyjście Timera. A nie chodzi o to żeby wykorzystać wyjście OCx do generowania przebiegu sprzętowego PWM na potrzeby nośnej. Trzeba o takich rzeczach troszkę poczytać.