Atiny 13 po podaniu masy impuls

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Miiik
-
Posty: 9
Rejestracja: 10 paź 2012, 22:02
Lokalizacja: Kraków
Kontakt:

Atiny 13 po podaniu masy impuls

Post autor: Miiik » 10 paź 2012, 22:15

Witam jestem tu nowy i mam nadzieje że dobrze trafiłem

Otóż potrzebuje by ktoś z kolegów pomógł mi napisać program w Bascom-ie na attiny 13 by po podłączeniu masy na pin pb3 Uc puścił impuls sekundowy na pin pb2.
To samo kiedy podłącze masę na pb4 to uc puści impuls sekundowy na pb1

Jestem początkujący w tych sprawach.
Znam podstawy bascom-a, ale nie mogę zrobić tak jak już wspomniałem wyżej, udaje mi się jedynie wysyłać impuls co jakiś czas, a potrzebuje tylko jeden.

Kod: Zaznacz cały

$regfile = "attiny13.dat"


$crystal = 1200000
$hwstack = 32
$swstack = 8
$framesize = 16



Config Pinb.4 = Input
Set Pinb.4

Config Portb.1 = Output                                     
Set Portb.1

Sw1 Alias Pinb.4
Wyj1 Alias Portb.1                                          
                                            
Dim A As Byte                                             


A = 0

If Sw1 = 0 Then:

While A < 2
Waitms 100
Toggle Wyj1
Incr A
Wend
End If
jak zablokować pente aby pościć tylko jeden impuls ?

simrowit
-
Posty: 29
Rejestracja: 11 kwie 2012, 20:41
Lokalizacja: Żywiec

Post autor: simrowit » 11 paź 2012, 15:12

Trzeba wprowadzic dodatkowa zmienną bitową pamiętajacą, że dane wejscie jest już zwarte do masy i nie wykonywac w tym momencie warunku.

Kod: Zaznacz cały


$regfile = "attiny13.dat" 


$crystal = 1200000 
$hwstack = 32 
$swstack = 8 
$framesize = 16 



Config Pinb.4 = Input 
Set Pinb.4 

Config Portb.1 = Output                                      
Set Portb.1 

Sw1 Alias Pinb.4 
Wyj1 Alias Portb.1                                          
                                            
Dim A As Byte                                              
Dim flaga as bit

reset flaga
A = 0 
do

if sw1=1 then
flaga=0          'sw1 rozwarte
end if

If Sw1 = 0  and flaga = 0 Then   
flaga = 1      'sw1 zwarte do masy warunek wykona sie tylko raz , 
                    'ponownie dopiero po 
                     'kolejnym rozwarciu i zwarciu do masy sw1
While A < 2
Waitms 100 
Toggle Wyj1 
Incr A 
Wend 
End If

loop

Miiik
-
Posty: 9
Rejestracja: 10 paź 2012, 22:02
Lokalizacja: Kraków
Kontakt:

Post autor: Miiik » 12 paź 2012, 18:56

Dziękuje kolego, zaraz sprawdzę czy to działa, ale patrząc na kod, myślę że nie powinno być problemu :cool:

ODPOWIEDZ