Infra és Servo

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Tom2tom
DrótVégénSzéndarab
Hozzászólások: 34
Csatlakozott: 2008. december 22. hétfő, 7:00

Infra és Servo

Hozzászólás Szerző: Tom2tom »

Sziasztok,

Létezik, hogy ATMega8 (Bascom) nem tudja egyszerre kezelni a Config Servos és Config Rc5 modult?
Mert külön-külön működik - vagy csak infra, vagy csak Servo -, de együtt nem.
Az If elágazások egyikét még végrehajtja, de utána mintha lefagyna a program.
Pedig elvileg külön TIMER-t használnak (RC5 TIMER2, Servo pedig TIMER0).
Mi lehet a gond?

Kód: Egész kijelölése

$regfile = "m8def.dat"
$crystal = 8000000

Config Portb.0 = Output

Config Servos = 1 , Servo1 = Portb.0 , Reload = 100 , Interval = 180
Config Rc5 = Pind.2 , Timer = 2 , Wait = 1000

Dim J As Byte
Dim Address As Byte , Command As Byte

Servo(1) = 20


Enable Interrupts

Do

 Getrc5(address , Command)

 If Address = 0 Then
  'Command = Command And &B01111111
  Servo(1) = 9
  Waitms 2000
 End If

 If Address = 1 Then
  'Command = Command And &B01111111
  Servo(1) = 14
  Waitms 2000
 End If

 If Address = 2 Then
  'Command = Command And &B01111111
  Servo(1) = 17
  Waitms 2000
 End If

Loop
A hozzászólást 1 alkalommal szerkesztették, utoljára Tom2tom 2013. december 8. vasárnap, 19:10-kor.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Infra és Servo

Hozzászólás Szerző: Robert »

RC5 átrakható másik timerre, ha van olyan az AVR-ben.
Avatar
Tom2tom
DrótVégénSzéndarab
Hozzászólások: 34
Csatlakozott: 2008. december 22. hétfő, 7:00

Re: Infra és Servo

Hozzászólás Szerző: Tom2tom »

Meg lett a hiba :idea:

Kód: Egész kijelölése

$regfile = "m8def.dat"
$crystal = 8000000

Config Portb.0 = Output

Config Rc5 = Pind.2 , Timer = 2 , Wait = 1000
Config Servos = 1 , Servo1 = Portb.0 , Reload = 100 , Interval = 180

Dim J As Byte
Dim Address As Byte , Command As Byte

Servo(1) = 20


Enable Interrupts

Do

 Getrc5(address , Command)

 If Address = 0 Then
  Command = Command And &B01111111
 End If

 If Command = 16 Then
  Servo(1) = 9
  Waitms 100
 End If

 If Command = 59 Then
  Servo(1) = 13
  Waitms 100
 End If

 If Command = 17 Then
  Servo(1) = 17
  Waitms 100
 End If

Loop
Válasz küldése