FAQ | Points | Add... | Recent posts | Search | Register | Log in


Prośba o sprawdzenie schematu i kodu...


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> Prośba o sprawdzenie schematu i kodu...
Author
Message
smanek
Poziom 11
Poziom 11


Joined: 19 Jul 2007
Posts: 69
Location: Masłów (k. Kielc)

Post#1 Post from the author of the topic 06 Apr 2010 15:40   

Prośba o sprawdzenie schematu i kodu...


Siemka
Mam za zadanie do szkoły zrobić urządzenie (coś w stylu alarmu) które po wyczuciu ruchu będzie po prostu wyło. I ma być ono na pilota RC5, taki od telewizora.

To urządzenie pracuje w ten sposób:
Na pilocie naciskamy STANDBY i włącza się tryb "uzbrojenia". Świeci się dioda że przekaźnik który włącza czujnik ruchu jest zwarty. Kiedy czujnik wyczuje ruch podaje na optotriac napięcie (ominąłem przekaźnik w czujniku, dzięki czemu podaje napięcie około 9V). Optotriac "sygnalizuje" Attiny że czujnik wykrył ruch. Attiny załącza buzzer i dzwoni on dopóki nie naciśniemy znowu STANDBY.

Zrobiłem to tak jak mogłem i jak umiałem najlepiej jednak nie wiem czy wszystko jest ok. To jest na ATTiny2313, Czujnik ruchu to TFMS5360, optotriac to MOC3041, stabilizator 7805.
Załączam Schemat i kod(w bascomie)

Dzięki za pomoc

PS. Z mikrokontrolerami dopiero zaczynam zabawę.

Prośba o sprawdzenie schematu i kodu...

Code:
$crystal = 1000000

$regfile "attiny2313.dat"

Config Pinb.7 = Output                                      'przekaźnik załączający czujnik

Pinb.7 = 1                                                  'przekaźnik załączający czujnik standardowo wyłączony

Config Pinb.1 = Output                                      'buzzer

Config Pinb.5 = Input                                       'czujnik

Config Rc5 = Pinb.6                                         'czujnik IR(RC5)

Dim Address As Byte , Command As Byte

Enable Interrupts

Do

   Getrc5(address , Command)

   Command = Command And &B01111111

   If Address = 0 And Command = 12 Then

      Toggle Pinb.7

   End If

Loop Until Pinb.5 = 0

If Pinb.5 = 0
Then
   Do
      Pinb.1 = 0
   Loop Until Pinb.7 = 1

End If

End

Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 06 Apr 2010 15:40   





Back to top
   
tmf
Poziom 24
Poziom 24


Joined: 12 Aug 2009
Posts: 4766
Location: Katowice

Post#2 06 Apr 2010 17:19helpful post - solution   

Re: Prośba o sprawdzenie schematu i kodu...


Wywal optotriaka, który się nie nadaje i zamień go na optotranzystor czy coś w tym stylu, przy stabilizatorze obowiązkowo 2 kondensatory ceramiczne 100nF. Co do programu się nie wypowiadam.
Back to top
   
Krauser
Poziom 16
Poziom 16


Joined: 01 Apr 2009
Posts: 299
Location: Leżajsk

Post#3 06 Apr 2010 18:02helpful post - solution   

Re: Prośba o sprawdzenie schematu i kodu...


Co do schematu:
- nie widzę węzłów, czy nie używasz przypadkiem polecenia Wire. Do prowadzenia połączeń należy używać Net i węzły zostaną dodane automatycznie.

Co do programu:
- po linii Config Pinb.5 = Input powinieneś dodać Portb.5=1 aby włączyć wewnętrzny rezystor podciągający
- Enable Interrupts jest nie wiadomo po co (może na razie)
- program wykona się tylko raz
- po wyjściu z Loop Until Pinb.5 = 0 Pinb.5 będzie mieć 1 czyli to co w If Pinb.5 = 0... nie wykona się.
- jeśli jesteś początkujący to sprawdź wszystko po kolei i upewnij się że dobrze rozumujesz. Napisz prostsze programy obsługujące np. tylko wyjście potem wejście i wyjście itd.
Back to top
   
Google

Google Adsense


Post# 06 Apr 2010 18:02helpful post - solution   





Back to top
   
smanek
Poziom 11
Poziom 11


Joined: 19 Jul 2007
Posts: 69
Location: Masłów (k. Kielc)

Post#4 Post from the author of the topic 06 Apr 2010 19:10   

Re: Prośba o sprawdzenie schematu i kodu...


To o coś takiego chodzi w kodzie?
Code:
$crystal = 1000000
$regfile "attiny2313.dat"
Config Pinb.7 = Output
Pinb.7 = 1
Config Rc5 = Pinb.6
Dim Address As Byte , Command As Byte

Do
Do
Getrc5(address , Command)
Command = Command And &B01111111
If Address = 0 And Command = 12 Then
Toggle Pinb.7
End If
Loop Until Pinb.5 = 1
If Pinb.5 = 0
Then
   Do
      Pinb.1 = 0
   Loop Until Pinb.7 = 1
Loop

End



Czy coś takiego?
Code:
Loop Until Pinb.5 = 0
If Pinb.5 = 1


Jeśli chodzi o schemat:
-Tak używałem wire. Teraz już będę używał NET :D
-Te kondy to z jednej i drugiej strony stabilizatora?
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 06 Apr 2010 19:10   





Back to top
   
oskar777
Poziom 18
Poziom 18


Joined: 23 Sep 2003
Posts: 485
Location: Warszawa

Post#5 07 Apr 2010 00:36helpful post - solution   

Re: Prośba o sprawdzenie schematu i kodu...


Z jednej i drugiej strony, dodaj też 100nF blisko nóżek GND i VCC scalaka dla spokoju, C1 jest zbedny skoro masz C3.
Back to top
   
Krauser
Poziom 16
Poziom 16


Joined: 01 Apr 2009
Posts: 299
Location: Leżajsk

Post#6 08 Apr 2010 07:57helpful post - solution   

Re: Prośba o sprawdzenie schematu i kodu...


1. Do ustawiania wyjść używa się PORTx.y
2. Nie podciągnąłeś wejścia sterowanego przez transoptor
3. Nie potrzebujesz wcale korzystać z pętli do loop until:
- w pierwszym przypadku to tylko skraca pętlę
- a w drugim powoduje, że program zostanie w niej na zawsze. Lepiej dodać drugi warunek If do sprawdzenia Pinb.7
Back to top
   
smanek
Poziom 11
Poziom 11


Joined: 19 Jul 2007
Posts: 69
Location: Masłów (k. Kielc)

Post#7 Post from the author of the topic 09 Apr 2010 23:38   

Re: Prośba o sprawdzenie schematu i kodu...


Takie coś ?

Code:
$crystal = 1000000

$regfile "attiny2313.dat"



Config Pinb.5 = Input

Portb.5 = 1

Config Portb.7 = Output

Portb.7 = 1

Config Portb.1 = Output

Config Rc5 = Pinb.6



Dim Address As Byte , Command As Byte



Do
   Getrc5(address , Command)

   Command = Command And &B01111111

   If Address = 0 And Command = 12 Then

      Toggle Portb.7

   End If

Loop

If Portb.5 = 0 Then

Portb.1 = 0

End If

If Portb.7 = 1 Then

Portb.1 = 1

End If

End



Z tym podciąganiem to ma tak wyglądać(jak wyżej) ? Czy tak:

Code:
Config Portb.5 = Input

Portb.5 = 1

Back to top
   
Krauser
Poziom 16
Poziom 16


Joined: 01 Apr 2009
Posts: 299
Location: Leżajsk

Post#8 11 Apr 2010 10:12helpful post - solution   

Re: Prośba o sprawdzenie schematu i kodu...


Dla pojedynczego wyprowadzenia Config PINx.y = Input/Output, a dla całego portu Config PORTx = Input/Output lub liczbowo binarnie dziesiętne i heksadecymalnie. Polecam częściej zaglądać do pliku pomocy tym bardziej, że jest też polska wersja.

I jeszcze ważna uwaga do programu: Loop umieść zaraz przed End. Pamiętaj to co między Do Loop wykonuje się w nieskończoność natomiast to co poza pętlą/pętlami tylko raz. Jeśli program dojdzie do Loop to wraca do Do, a jeśli jakimś sposobem dojdzie do End to tam zostanie i nic więcej się dziać nie będzie.
Back to top
   
smanek
Poziom 11
Poziom 11


Joined: 19 Jul 2007
Posts: 69
Location: Masłów (k. Kielc)

Post#9 Post from the author of the topic 11 Apr 2010 13:43   

Re: Prośba o sprawdzenie schematu i kodu...


Czyli o to chodzi?

Code:

$crystal = 1000000

$regfile "attiny2313.dat"



Config Pinb.5 = Input

Portb.5 = 1

Config Pinb.7 = Output

Portb.7 = 1

Config Pinb.1 = Output

Config Rc5 = Pinb.6



Dim Address As Byte , Command As Byte



Do
   Getrc5(address , Command)

   Command = Command And &B01111111

   If Address = 0 And Command = 12 Then

      Toggle Pinb.7

   End If


If Pinb.5 = 0 Then

Pinb.1 = 0

End If

If Pinb.7 = 1 Then

Pinb.1 = 1

End If

Loop

End


Jeśli dobrze rozumiem, to wejście/wyjście ustawia się przez PINx.y , a rezystory podciągające przez PORTx.y. Czy tak?

PS. Czy się różni podciąganie przez PORTx.y , a Set PORTX.y ?
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 11 Apr 2010 13:43   





Back to top
   
Krauser
Poziom 16
Poziom 16


Joined: 01 Apr 2009
Posts: 299
Location: Leżajsk

Post#10 12 Apr 2010 18:34helpful post - solution   

Re: Prośba o sprawdzenie schematu i kodu...


1. Prawie, ale zmieniłeś na źle, bo ma być
Code:

If Address = 0 And Command = 12 Then
   Toggle Portb.7
End If
If Pinb.5 = 0 Then
   Portb.1 = 0
End If
If Pinb.7 = 1 Then
   Portb.1 = 1
End If


2. Config PINx.y = Input/Output ustawia kierunek portu
natomiast PORTx.y = 1 działa różnie w zależności od tego czy dane wyprowadzenie jest wejściem czy wyjściem. Dla wejścia (input) ustawienie "1" oznacza włączenie wewnetrznego rezystora podciągającego, a dla wyjścia (output) wpisanie 0 to na tej nóżce pojawi się 0V a dla 1 będzie 5V(napięcie zasilania)
Natomiast sprawdzając PINx.y jak to robisz w warunku If to odczytujesz stan na wyprowadzeniu.
3. PORTx.y = 1 lub SET PORTx.y robi dokładnie to samo.
Back to top
   
smanek
Poziom 11
Poziom 11


Joined: 19 Jul 2007
Posts: 69
Location: Masłów (k. Kielc)

Post#11 Post from the author of the topic 12 Apr 2010 19:57   

Re: Prośba o sprawdzenie schematu i kodu...


OK. Wielkie dzięki za pomoc :D . Dla pewności umieszczam jeszcze całość.
Code:
$crystal = 1000000

$regfile "attiny2313.dat"



Config Pinb.5 = Input

Portb.5 = 1

Config Pinb.7 = Output

Portb.7 = 1

Config Pinb.1 = Output

Config Rc5 = Pinb.6



Dim Address As Byte , Command As Byte



Do
   Getrc5(address , Command)

   Command = Command And &B01111111

 If Address = 0 And Command = 12 Then

   Toggle Portb.7

End If

If Pinb.5 = 0 Then

   Portb.1 = 0

End If

If Pinb.7 = 1 Then

   Portb.1 = 1

End If

Loop

End


Pozdrawiam Michał
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> Prośba o sprawdzenie schematu i kodu...
Page 1 of 1
Similar topics
[ATMega16][BascomAVR] Prośba o sprawdzenie kodu. (1)
[ATMEGA8][C] Termostat - prośba o sprawdzenie kodu (4)
[at8][bascom] Prośba o sprawdzenie kodu (4)
[ATmega32][BASCOM] Prośba o sprawdzenie kodu. (5)
[C] Prośba o sprawdzenie kodu - programowanie ATtiny13 (5)
Bascom PWM prośba o sprawdzenie kodu (5)
Prośba o sprawdzenie kodu Bascom (2)
[Atmega8][Bascom] Prośba o sprawdzenie kodu programu i schematu (14)
PIC12F508- Prośba o sprawdzenie kodu po kompilacji. (3)
[c] Atmega32 prośba o sprawdzenie kodu matrycy (2)

Page generation time: 0.118 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed