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!
-
grysek67
- Użytkownik
- Posty: 315
- Rejestracja: 27 cze 2007, 6:34
- Lokalizacja: Limanowa
-
Kontakt:
Post
autor: grysek67 » 07 kwie 2008, 19:19
Witam!
Napisałem następujący program:
Kod: Zaznacz cały
Dim Adres As Byte
Dim Command As Byte
Dim Kod As Bit
$regfile = "attiny2313.dat"
$crystal = 1000000
On Int0 Przer Nosave
Enable Int0
Enable Interrupts
Adres = 10
Command = 12
Kod = 0
Config Pind.6 = Output
Config Pinb.3 = Output
Do
If Kod = 1 Then
Disable Int0
Set Portd.6
If Adres = 10 Then
Adres = 42
Else
Adres = 10
End If
Rc5send 0 , Adres , Command
Waitms 200
Reset Portd.6
Waitms 200
Kod = 0
Enable Int0
End If
Loop
Przer:
Kod = 1
Return
Return
i niestety układ przerwan nie działa
czy to jest bład w programie??
-
ZbeeGin
Post
autor: ZbeeGin » 08 kwie 2008, 18:22
Nie działa w realnym układzie czy podczas symulacji?
Jeśli nie działa podczas symulacji to jest to normalny objaw. Musisz użyć opcji PULSE z symulatora by móc wyzwalać INT0/INT1.
-
grysek67
- Użytkownik
- Posty: 315
- Rejestracja: 27 cze 2007, 6:34
- Lokalizacja: Limanowa
-
Kontakt:
Post
autor: grysek67 » 08 kwie 2008, 19:05
ZbeeGin pisze:Nie działa w realnym układzie czy podczas symulacji?
Nie działa w realu a w symulacji tak

-
ZbeeGin
Post
autor: ZbeeGin » 08 kwie 2008, 19:15
Choć nie powinno to mieć żadnego znaczenia, dodaj polecenie CONFIG INT0 = RISING { FALLING | LOW LEVEL }.
'we use the int0 interrupt to detect that our slave is addressed
On Int0 Isr_sspi Nosave
'we enable the int0 interrupt
Enable Int0
'we configure the INT0 interrupt to trigger when a falling edge is detected
Config Int0 = Falling
'finally we enabled interrupts
Enable Interrupts
-
grysek67
- Użytkownik
- Posty: 315
- Rejestracja: 27 cze 2007, 6:34
- Lokalizacja: Limanowa
-
Kontakt:
Post
autor: grysek67 » 08 kwie 2008, 19:50
To niestety też nie pomogło po zetknięciu PD2 (INT0) do masy nie reaguje... ale gdy dotykam palcem tak... ale tez nie zawsze
-
ZbeeGin
Post
autor: ZbeeGin » 08 kwie 2008, 20:31
Wpisz CONFIG INT0 = FALLING skoro ściągasz do masy.
-
grysek67
- Użytkownik
- Posty: 315
- Rejestracja: 27 cze 2007, 6:34
- Lokalizacja: Limanowa
-
Kontakt:
Post
autor: grysek67 » 09 kwie 2008, 8:48
tak własnie zrobiłem i nic... nalepiej działa gdy dotkne palcem do INT0 a drugim palcem do PD6 wtedy smiga jak należy
-
elektronWielki
- Użytkownik
- Posty: 247
- Rejestracja: 30 maja 2006, 12:45
- Lokalizacja: kontownia
Post
autor: elektronWielki » 09 kwie 2008, 8:57
jak zwykle ktoś ma problem ale schematu nie poda bo i po co..
pokaż jeszcze schemat tego układu, może to jakiś błąd w projekcie.
-
grysek67
- Użytkownik
- Posty: 315
- Rejestracja: 27 cze 2007, 6:34
- Lokalizacja: Limanowa
-
Kontakt:
Post
autor: grysek67 » 09 kwie 2008, 9:25
Schemat jest taki (mniej wiecej)
-
Załączniki
-

- ATTINY1.JPG (10.57 KiB) Przejrzano 9022 razy
-
radiator
- -
- Posty: 18
- Rejestracja: 30 gru 2006, 17:29
- Lokalizacja: Ruda Śląska
Post
autor: radiator » 02 cze 2008, 20:59
Mam podobny problem. Otóż podczas normalnej pracy procesora przerwania int0 i int1 są wykonywane. Gdy procesor przejdzie do trybu powerdown, przestaje reagować na bodźce zewnętrzne. Procesor pracuje na wewnętrznym oscylatorze 8 MHz. Wszystkie połączenia i kod programu są w porządku - sprawdzałem mnóstwo razy.
-
RcTomek
- Moderator
- Posty: 243
- Rejestracja: 27 wrz 2007, 21:15
- Lokalizacja: Głogów / Wrocław
Post
autor: RcTomek » 02 cze 2008, 21:24
radiator pisze:Mam podobny problem. Otóż podczas normalnej pracy procesora przerwania int0 i int1 są wykonywane. Gdy procesor przejdzie do trybu powerdown, przestaje reagować na bodźce zewnętrzne. Procesor pracuje na wewnętrznym oscylatorze 8 MHz. Wszystkie połączenia i kod programu są w porządku - sprawdzałem mnóstwo razy.
A jak ustawiłeś wyzwalanie przerwania? Poziomem czy zboczem? Jeżeli tym drugim, to nie będzie działało. Mikrokontroler można obudzić ze stanu Idle/Power Down przy pomocy INTx wyzwalanego
poziomem.
-
radiator
- -
- Posty: 18
- Rejestracja: 30 gru 2006, 17:29
- Lokalizacja: Ruda Śląska
Post
autor: radiator » 03 cze 2008, 9:49
Dzięki za szybką odpowiedź. Rzeczywiście nie zwróciłem uwagi na to zbocze. Teraz już wszystko działa. Pozdrawiam
-
snow
- Użytkownik
- Posty: 794
- Rejestracja: 16 sty 2007, 3:44
- Lokalizacja: lubelskie
-
Kontakt:
Post
autor: snow » 03 cze 2008, 9:57
grysek67 pisze:nalepiej działa gdy dotkne palcem do INT0 a drugim palcem do PD6 wtedy smiga jak należy
Podciąganie na porcie masz włączone?
-
grysek67
- Użytkownik
- Posty: 315
- Rejestracja: 27 cze 2007, 6:34
- Lokalizacja: Limanowa
-
Kontakt:
Post
autor: grysek67 » 03 cze 2008, 15:39
snow pisze:Podciąganie na porcie masz włączone?
Podciąganie tzn co?? Układ zbudowany dokładnie jak na schemacie

-
ZbeeGin
Post
autor: ZbeeGin » 03 cze 2008, 16:59
I właśnie widać tam, że podciągania nie masz. A poza tym dioda IR i LED na jednym rezystorze, skąd to kolega ukulał?