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

attiny13 - miganie diodą led

harrry_poter 06 Mar 2010 20:30 5567 25
  • #1 7793039
    harrry_poter
    Poziom 9  
    Czy standardowo w attiny13 trzeba coś ustawić żebym mógł migać dioda?!

    zaznaczone fusebity w ponyprog:
    CKDIV8, SUT0, CKSEL0


    program:

    $regfile = "attiny13.dat"
    $crystal = 8000000 
    
    Config Pinb.3 = Output
    
    Do
    Set Portb.3
    Wait 1
    Reset Portb.3
    Wait 1
    Loop
    
    End
    


    dioda zapala się, świeci ciągłym światłem, dlaczego?
  • #2 7793194
    ja_dzik
    Poziom 18  
    Dawno nie pisałem w Bascomie. Z tego co pamiętam powinno być Config Portb.3=Output, a nie Config Pinb.3=Output. Oraz z tego co widzę masz w fusebitach ustawione że sygnał zegara jest dzielony przez 8. Jeśli dobrze pamiętam to fabrycznie zegar jest ustawiony na 1MHz, przy podziale przez 8 daje to 125kHz. Ty masz zadeklarowane że pracuje on z 8MHz: $crystal = 8000000. Co powoduje że program działa(chyba) 64 razy wolniej i zamiast 1sekundy czekasz 64sekundy. Ustaw $crystal = 1000000, a w fusebitach wyłącz podział sygnału zegarowego przez 8, czyli bit CKDIV8.
  • #3 7793319
    landy13
    Poziom 31  
    ja_dzik napisał:
    Dawno nie pisałem w Bascomie. Z tego co pamiętam.... Jeśli dobrze pamiętam
    Więc może nie zabieraj głosu, bo źle pamiętasz. Konfiguracja jest przwidłowa. ATtiny13 jest fabrycznie taktowany 9.6MHz, co przy podzielniku przez osiem daje 1.2MHz i tak też powinien być ustawiony $crystal. A skoro jest na 8MHz to sekunda ma ok. 6.7sek.
  • #4 7793410
    harrry_poter
    Poziom 9  
    Zrobiłem tak jak mówisz ja_dzik, dioda nadal nie miga

    aa przy okazji to wersja attiny13v-10pu - mniejsze taktowanie i nie mogę znaleźć za dużo o nim w internecie :<
  • #5 7793827
    lukashb
    Poziom 39  
    Jednak proponowałbym koledze zmienić na portb.3 z pinb.3. Pinb użyjemy kiedy np. sprawdzamy stan portu, tzn

    If Pinb.x = y then
    z
    endif
    Pozdrawiam
    Ps. Sprawdź to
    $regfile = "attiny13.dat" 
    $crystal = 8000000 
    
    Config Portb.3 = Output 
    
    Do 
    Portb.3 = 1
    Wait 1 
    toggle Portb.3 
    Wait 1 
    Loop 
    
    End 
    Musi działać. Program w pętli ustawia 1 na porcie 3, czeka 1s, zmienia stan portu na przeciwny, czeka znów 1s i powraca dopoczątku zaczynając od nowa, sekunde świeci i sekunde nie świeci.
  • #6 7793882
    ja_dzik
    Poziom 18  
    landy13 pomyliłem się co do dokładnej wartości, a nie co do ogólnego działania.
    harrry_poter spróbuj może wgrać do procka plik z załącznika. Napisałem na szybko w c programik o takim samym działaniu.
  • #7 7793905
    harrry_poter
    Poziom 9  
    Dziękuje, ale niestety teraz nie mam możliwości sprawdzenia programu, jutro o ~10 wgram twój plik i od razu odpiszę.
  • #8 7795092
    harrry_poter
    Poziom 9  
    Zmiana portu z Pinb.3 na Portb3. nie pomogła

    ja_dzik, twój kod działa dioda miga co ~6s.Teraz pytanie dlaczego działa :D
  • #9 7795265
    ja_dzik
    Poziom 18  
    Akurat czas opóźnienia nie był dokładnie wyliczany tylko na oko zrobiony(dla tego te 6 zamiast 1 sekundy).
    Ja mam lepsze pytanie. Czemu nie działa twój program który jest napisany w Bascomie. To że jeden z najprostszych programów napisanych w C działa to się nie ma co dziwić. Spróbuj może zainstalować inną wersję Bascoma.
  • #10 7795575
    mazomen
    Poziom 16  
    Ja w programie z pierwszego postu zmieniłem tylko linijke $crystal na 1200000 i u mnie dioda miga co 1s.

    
    $regfile = "attiny13.dat"
    $crystal = 1200000
    
    Config Pinb.3 = Output
    
    Do
    Set Portb.3
    Wait 1
    Reset Portb.3
    Wait 1
    Loop
    
    End
    
  • #11 7795747
    Bartek47
    Poziom 11  
    Config Pinb.3 = Output

    Ten fragment nic nie zmienia można go usunąć. To czy sa włączone bufory silnoprądowe czy nie zależy od rejestru DDRB a on nie odpowiednika w stylu PORTB i PINB
  • #12 7795910
    harrry_poter
    Poziom 9  
    A może jest to związane z tym że nie jest to standardowy attiny13, tylko ten z mniejszym poborem prądu i mniejszym taktowaniem? attiny13v
  • #14 7796370
    harrry_poter
    Poziom 9  
    Mazomen, działa - miga co 1 sekundę

    czyli co zrobiłem źle? taktowanie?
  • #15 7796375
    mazomen
    Poziom 16  
    Skompilowałem ci program który podałem w poście wyżej
  • #16 7796567
    harrry_poter
    Poziom 9  
    :| Chciałbym ci powiedzieć że ten program który podałeś sam skompilowałem i dioda nie migała :| czyli że co popsuł mi się kompilator haha?
  • #17 7796576
    mazomen
    Poziom 16  
    A jakiej wersji BASCOMA używasz?
  • #18 7796697
    Konto nie istnieje
    Poziom 1  
  • #19 8015564
    profesorek_96
    Poziom 16  
    A czy można tak pisać że np attiny13 ma taktowanie 16mhz?
    Dlaczego procek się nie zablokuje?
    Jeśli bym chciał napisać program na attiny13 to jakiej częstotliwości mam użyć 1,2 mhz czy może jeszcze innej?
    Jaka jest różnica w programie który pracuje z z częstotliwością np 1mhz a 9mhz?
    Wiem że może przynudzam ale jestem początkujący i nie za bardzo wiem?
    To miganie diody chyba można by było zrobić na pwm.
  • #20 8015619
    utak3r
    Poziom 25  
    profesorek_96 napisał:
    To miganie diody chyba można by było zrobić na pwm.


    Pewnie, że można, tylko to trochę jak strzelanie z armaty do komara ;)
    Aby zrobić to PWMem, musiałbyś wybrać jakąś (w sumie dowolną prawie) częstotliwość i zmieniać wypełnienie w zakresie 0..100%.
  • #21 8098828
    jakubek151
    Poziom 10  
    małe pytanko,
    a jak wyglądałby ten program w C?


    z góry dzięki...
  • #22 8113441
    maniek1818
    Poziom 22  
    jakubek151 napisał:
    małe pytanko,
    a jak wyglądałby ten program w C?


    z góry dzięki...

    Podejrzewam że, jak pojawi się tu listing programu migania diodą w C, to temat rozrośnie się w nieskończoność. Jeżeli ktoś ma kłopoty to niech nie wstydzi się korzystać z helpa, a nie tworzy nowy temat który jest praktycznie o niczym (piaskownica). Po drugie, jak ktoś nie wie dlaczego DIODA miga, to z tego co pamiętam BASCOM ma symulator.
    Pozdrawiam
  • #23 8117084
    landy13
    Poziom 31  
    maniek1818 napisał:
    Podejrzewam że, jak pojawi się tu listing programu migania diodą w C, to temat rozrośnie się w nieskończoność. Jeżeli ktoś ma kłopoty to niech nie wstydzi się korzystać z helpa.
    Mógłbyś podrzucić gdzie znajduje się help do C?
  • #24 8170956
    maniek1818
    Poziom 22  
    landy13 napisał:
    maniek1818 napisał:
    Podejrzewam że, jak pojawi się tu listing programu migania diodą w C, to temat rozrośnie się w nieskończoność. Jeżeli ktoś ma kłopoty to niech nie wstydzi się korzystać z helpa.
    Mógłbyś podrzucić gdzie znajduje się help do C?

    Kurs z EdW, polecam gorąco, z tego co wiem, to znajdziesz go na serwerze FTP, do którego dane dostępu są dostępne w lutowym wydaniu EP.
    Pozdrawiam
  • #25 8172041
    gaskoin
    Poziom 38  
    jakubek151 napisał:
    małe pytanko,
    a jak wyglądałby ten program w C?


    z góry dzięki...


    
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    int main (void){
        DDRB |= (1 << 3);
        TCCR1B |= (1 << WGM12);
        TCCR1A |= (1 << COM1A0);
        OCR1A = 15625;
        TCCR1B |= ((1 << CS10) | (1 << CS11));
        while(1) {}
    }
    


    dioda musi być podłączona do wyjścia PB3,

    ------------------------------------------------------------------------------------------------

    UPS to dla AtTiny2313 :P działa też na Atmegach, tylko porty muszą być odpowiednio pozmieniane
  • #26 8172831
    landy13
    Poziom 31  
    maniek1818 napisał:
    Kurs z EdW, polecam gorąco, z tego co wiem, to znajdziesz go na serwerze FTP, do którego dane dostępu są dostępne w lutowym wydaniu EP.
    Pozdrawiam
    Może to i prawda, ale ja nie pytałem o KURSY których jest w sieci mnóstwo, ale o HELP o którym nic nie słyszałem.
REKLAMA