Problem z Attiny2313

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!
Awatar użytkownika
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.

Awatar użytkownika
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 :sad:

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

Awatar użytkownika
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.

Awatar użytkownika
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.

Awatar użytkownika
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
ATTINY1.JPG (10.57 KiB) Przejrzano 9019 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.

Awatar użytkownika
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?

Awatar użytkownika
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ł?

ODPOWIEDZ