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

Attiny 2313 bascom - Pilocik IR i tryb power down

ugh123 01 Lis 2010 21:50 2297 6
REKLAMA
  • #1 8690976
    ugh123
    Poziom 13  
    Witam wszystkich :D
    Zanim zalozylem ten temat b. duzo szukalem tego co potrzebuje i wiem ze bylo juz pisane na ten temat ale nie znalazlem nic konkretnego wiec pisze . A chodzi mi o to ze potrzebuje napisac program w bascom do attiny 2313 ktory mial by utrzymywac procka w trybie uspienia a gdy wcisne jeden z 2 guzikow to ma sie obudzic wyslac dany kod rc5 i dalej isc spac . Probowalem sam pisac ale z przerwaniami nigdy wczesniej nie mialem doczynienia niestety a nizej wstawiam kod moich wypocin
    $regfile = "attiny2313.dat"
    $crystal = 8000000
    
    Config Portb.3 = Output                                     ' dioda ir nadawcza
    Reset Pinb.3
    '--------------------------------------------------------------------------------
    Config Pind.2 = Input                                       ' pin przerwania INT0
    Reset Pind.2
    '--------------------------------------------------------------------------------
    Config Portd.1 = Output                                     ' guzik 1
    S1 Alias Pind.1
    Reset S1
    '-------------------------------------------------------------------------------
    Config Portd.5 = Output                                     ' guzik 2
    S2 Alias Pind.5
    Reset S2
    Sound Pinb.7 , 500 , 200
    On Int0 Konf
    Enable Int0
    Enable Interrupts
    Powerdown
    Wait 1
    Sound Pinb.7 , 500 , 3000
    Konf:
    Wait 1
    Sound Pinb.7 , 100 , 2000
    Config Pind.2 = Output : Reset Pind.2                       ' pin przerwania INT0
    Config Portd.1 = Input : S1a Alias Pind.1 : Set S1a         ' guzik S1
    Config Portd.5 = Input : S2a Alias Pind.5 : Set S2a         ' guzik S2
    
    Do
    If S1a = 0 Then Waitms 20
    If S1a = 0 Then Sound Pinb.7 , 500 , 500
    
    If S2a = 0 Then Waitms 20
    If S2a = 0 Then Sound Pinb.7 , 300 , 500
    Loop
    
    Return
    


    W kodzie jest wpisane zeby po wcisnieciu piszczal buzzer ale to celowo w fazie testow programu napisalem . Z gory wszystkim dziekuje i pozdrawiam serdecznie Bartek :D
  • REKLAMA
  • #2 8691585
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 8692214
    xury
    Specjalista automatyka domowa
    A nie lepiej zrobić tak, że uC nie jest zasilany do momentu naciśnięcia przycisku ?
    Rozumiem, że chodzi o oszczędność energii, więc po co w ogóle zasilać uC kiedy nie potrzebuje on pracować stale ? Zrób tak, że w momencie naciśnięcia przycisku procesor dostaje GND i równocześnie na pin od odpowiedniego kodu RC5. Po wysłaniu kodu puszczasz przycisk, a procesor przestaje być zasilany.
  • #4 8692284
    manekinen
    Poziom 29  
    Dodatkowo, pamiętaj żeby wyłączyć w fuskach brown-out detection i watchdoga - żrą prąd podczas powerdown'a. Jak dobrze to zrobisz to zejdziesz do 1uA.
  • REKLAMA
  • #5 8693037
    ugh123
    Poziom 13  
    Konkretnie to ma byc pilocik zrobiony z podkreslacza i nim bedzie sie sterowac elektroniczbym piornikiem i zamierzam to zasilic z bateri 3 V "pastylki" i bardzo mi zalezy na oszczedzaniu bateri . do kolegi emarcus nie bardzo rozumiem jak to jest z tym INTERRUPT ? czyli to ma byc tak ze pin przerwania w tym przypadku INT0 pind.2 musze ustawic w stan wysoki ? i wywolywac przerwanie zwarciem go do masy ? Sorki ale po prostu tego jakos nie bardzo rozumiem ? Dziekuje za wszystkie odpowiedzi pozdrawiam Bartek :D





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

    Problem rozwiazany przy pomocy kolegi j bravo ;D bardzo dziekuje wszystkim nizej wstawiam kod dzialajacego programu
    $regfile = "attiny2313.dat"
    $crystal = 8000000
    '-------------------------------------------------------------------------------
    Config Portb.3 = Output                                     ' dioda IR
    Reset Pinb.3
    '-------------------------------------------------------------------------------
    Config Portd.5 = Input
    Reset Pind.5                                                ' guzik S1
    S1 Alias Pind.5
    '-------------------------------------------------------------------------------
    Config Portd.4 = Input
    Reset Pind.4                                                ' guzik S2
    S2 Alias Pind.4
    '-------------------------------------------------------------------------------
    Buzzer Alias Pinb.7                                         ' buzzerek
    '-------------------------------------------------------------------------------
    
    Dim Togbit As Byte , Command As Byte , Address As Byte
    
    
    Do
    
    If S1 = 1 Then Rc5send Togbit , Address , 100
    Waitms 10
    If S2 = 1 Then Rc5send Togbit , Address , 200
    
    
    Loop
  • REKLAMA
REKLAMA