Fórum témák

» Több friss téma
Fórum » Bascom-AVR
 
Témaindító: puli122, idő: Ápr 11, 2010
Lapozás: OK   4 / 18
(#) elektromos válasza puli122 hozzászólására (») Máj 28, 2010 /
 
Ez talán segít az indulásban:Bővebben: Link
alul van , amire szukséged van
(#) puli122 válasza elektromos hozzászólására (») Máj 28, 2010 /
 
Ebből azt olvasom ki hogy a bascom egy az egyben értelmezi az AT parancsokat, pl: Call-al használva. Jól érem ?
(#) elektromos válasza puli122 hozzászólására (») Máj 28, 2010 /
 
Sajna, ebben nem tudok segíteni, mert idáig is Te segitettél nekem. Menj fel a tavir.hu oldalra, ott előbb segítenek.
(#) TavIR-AVR válasza elektromos hozzászólására (») Máj 28, 2010 /
 
A modem értelmezi a parancsokat, a Bascom sima terminálként viselkedik....
(#) elektromos válasza puli122 hozzászólására (») Máj 29, 2010 /
 
Szia! PWM használatáról, pár példa progit tudnál csinálni? Pl: PB1 kimeneten legyen 100.3 hz 1%-os kitöltési tényezővel. Ha lehetne timerekkel, és kommentekkel.
(#) TavIR-AVR válasza elektromos hozzászólására (») Máj 29, 2010 /
 
A pwm a FIX frekvencia kitoltest allitja 0...255 kozt.
A fix frekvencia az Órajel/Prescale (2^n) lehet...

A 100.3 nem igazan allithato elo kvarcbol


Amit TE akarsz, az a SW PWM!
Az avr.tavir.hu oldalon a forumban fenn is van

[quote][/quote]
  1.  
Oldal kozepen... Igaz 2 Timert hasznal, szoval nem az a hude egyszeru
(#) elektromos válasza TavIR-AVR hozzászólására (») Máj 30, 2010 /
 
Ez tényleg nem egyszerű, de régebben már találtam rá megoldást egy külföldi fórumon, de nem találom sajna.
(#) puli122 válasza TavIR-AVR hozzászólására (») Máj 30, 2010 /
 
Hello!
Nem jövök rá sehogy, hogy milyen formában értelmezi a bascom az AT parancsokat.
Így nem jó:
  1. Print At + Cpbs =< Sto>

Mi a hiba?
(#) TavIR-AVR válasza puli122 hozzászólására (») Máj 31, 2010 /
 
Print "At+Cpbs =< Sto>"

De mi az a sto?
Ha változó, akkor:

Print "At+Cpbs="; Sto
(#) puli122 válasza TavIR-AVR hozzászólására (») Jún 1, 2010 /
 
Áhá, akkor az idézőjelt hagytam le, azt hittem nem kell mint az LCD-nél ha változót akarok kiíratni. Igazából nem is tudom mit tesz ez a parancs, csak bemásoltam valahonnan, hogy lássam elfogadja-e a bascom.
(#) Szoki hozzászólása Jún 4, 2010 /
 
Kérdésem lenne Bascomban az energiatakarékos mód kezelésével kapcsolatban.
Az alany egy mega8. powerdown/powersave/idle módba sikerült betenni, de semmi semi hajlandó felébreszteni, pedig külső interruptnak elvileg fel kellene mindegyikből, int0-t int1-et is próbáltam, s 2 procival is.
Az ébresztés ennyi lenne csak, nem? :
  1. Config Int1 = Low Level
  2. On Int1 Ebred:
  3. Enable Interrupts
  4. Enable Int1
  5. do
  6. ...
  7. loop
  8. ebred:
  9. 'pl relékattogtatás
  10. return
  11. end

Az int1 (portd3) láb magasra van húzva 10k-val (többfélével is próbáltam), ha alacsonyra teszem, semmi.
Ha nincs elaltatva a proci, akkor a megszakítás működik:

Mi lehet a gond?
(#) puli122 válasza Szoki hozzászólására (») Jún 5, 2010 /
 
Pedig elvileg így működnie kéne.
Esetleg írd át hogy:
  1. Config Int1= Falling
de ez csak tipp, így is mennie kéne.
Külön a megszakításra reagál ?
Mintaprogram, ami működik:

  1. $regfile = "2313def.dat"
  2. $crystal = 4000000
  3.  
  4. Config Pind.6 = Output
  5. Config Int0 = Low Level
  6.  
  7. On Int0 Button:
  8. Enable Interrupts
  9. Enable Int0
  10.  
  11. Do
  12.   Set Portd.6
  13.   Wait 1
  14.   Reset Portd.6
  15.   Cls
  16.   Lcd "power-idle..."
  17.   Lowerline
  18.   Lcd "pushbtn to wake"
  19.   Powerdown
  20. Loop
  21.  
  22. Button:
  23.   Cls
  24.   Lcd "awake!"
  25.   Wait 1
  26. Return
  27.  
  28. End
(#) TavIR-AVR válasza puli122 hozzászólására (») Jún 5, 2010 /
 
Powerdownbol felebresztes:


Csal low level INT ebreszti -> adatlap....



idle-bol klti barmelyik int...
(#) balint1993 hozzászólása Jún 7, 2010 /
 
Sziasztok!
Tegnap írtam M8-ra egy programot. Annyi a feladata, hogy soros porton fogad 11 karaktert, és a beérkező adat alapján vezérel néhány motort és szervót. Például ha egy ilyen karakterláncot kap: "-100+100661", akkor az egyik motor sebessége -100, a másiké +100. Az egyik szervó állása 6, a másiké is, a harmadik motor pozitív irányba forog, mert 1 az értéke.

  1. $regfile "m8def.dat"
  2. $crystal = 8000000
  3. $baud = 9600
  4. '$sim
  5. Dim Szamlalo As Byte                                        'SW PWM
  6. Dim Motor1a As Byte                                         'SW PWM
  7. Dim Motor1b As Byte                                         'SW PWM
  8. Dim Motor2a As Byte                                         'SW PWM
  9. Dim Motor2b As Byte                                         'SW PWM
  10. Dim Emeloa As Byte                                          'SW PWM
  11. Dim Emelob As Byte                                          'SW PWM
  12. Dim Motorbal As Integer                                     'soros porton olvasando
  13. Dim Motorjobb As Integer                                    'soros porton olvasando
  14. Dim Servo1 As Byte                                          'soros porton olvasando
  15. Dim Servo2 As Byte                                          'soros porton olvasando
  16. Dim Emelo As Byte                                           'soros porton olvasando
  17. Dim Balenc As Integer
  18. Dim Jobbenc As Integer
  19. Dim Serialrec As String * 11
  20. Dim Serialrecmod As String * 4
  21.  
  22.  
  23. Config Portc.2 = Output                                     'motor meghajtok
  24. Config Portc.3 = Output                                     'motor meghajtok
  25. Config Portc.4 = Output                                     'motor meghajtok -bal
  26. Config Portc.5 = Output                                     'motor meghajtok -bal
  27. Config Portd.6 = Output                                     'motor meghajtok -jobb
  28. Config Portd.7 = Output                                     'motor meghajtok -jobb
  29.  
  30.  
  31. Config Timer2 = Timer , Prescale = 8
  32. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1024
  33. On Int0 Balenc
  34. On Int1 Jobbenc
  35. On Timer2 Pwmhajt
  36. Enable Timer2
  37. Start Timer2
  38. Enable Interrupts
  39. 'Enable Int0
  40. 'Enable Int1
  41.  
  42.  
  43.  
  44. Do
  45.  
  46. If Ischarwaiting() = 1 Then Input Serialrec
  47. Serialrecmod = Mid(serialrec , 1 , 4)
  48. Motorbal = Val(serialrecmod)
  49. Serialrecmod = Mid(serialrec , 5 , 4)
  50. Motorjobb = Val(serialrecmod)
  51. Serialrecmod = Mid(serialrec , 9 , 1)
  52. Servo1 = Val(serialrecmod)
  53. Serialrecmod = Mid(serialrec , 10 , 1)
  54. Servo2 = Val(serialrecmod)
  55. Serialrecmod = Mid(serialrec , 11 , 1)
  56. Emelo = Val(serialrecmod)
  57.  
  58. Print Serialrec
  59. Print Motorbal
  60. Print Motorjobb
  61. Print Servo1
  62. Print Servo2
  63. Print Emelo
  64. Pwm1a = Servo1
  65. Pwm1b = Servo2
  66.  
  67. Select Case Emelo
  68. Case 1 :
  69. Emeloa = 255
  70. Emelob = 0
  71. Case 2:
  72. Emeloa = 0
  73. Emelob = 255
  74. Case 0:
  75. Emeloa = 0
  76. Emelob = 0
  77. End Select
  78.  
  79. Select Case Motorbal
  80. Case 0:
  81. Motor1a = 0
  82. Motor1b = 0
  83. Case Is > 0:
  84. Motor1a = Motorbal
  85. Motor1b = 0
  86. Case Is < 0:
  87. Motor1a = 0
  88. Motor1b = Motorbal * -1
  89. End Select
  90.  
  91. Select Case Motorjobb
  92. Case 0:
  93. Motor2a = 0
  94. Motor2b = 0
  95. Case Is > 0:
  96. Motor2a = Motorjobb
  97. Motor2b = 0
  98. Case Is < 0:
  99. Motor2a = 0
  100. Motor2b = Motorjobb * -1
  101. End Select
  102.  
  103. Loop
  104.  
  105.  
  106.  
  107. Pwmhajt:
  108.  
  109.  Incr Szamlalo
  110.  'motor bal*******************
  111.   If Motor1a = 0 Then Reset Portc.5
  112.   If Motor1a > Szamlalo Then Set Portc.5 Else Reset Portc.5
  113.   If Motor1b = 0 Then Reset Portc.4
  114.   If Motor1b > Szamlalo Then Set Portc.4 Else Reset Portc.4
  115.  
  116.   'motor jobb*************************
  117.  If Motor2a = 0 Then Reset Portd.6
  118.  If Motor2a > Szamlalo Then Set Portd.6 Else Reset Portd.6
  119.  If Motor2b = 0 Then Reset Portd.7
  120.  If Motor2b > Szamlalo Then Set Portd.7 Else Reset Portd.7
  121.  'emelo************************
  122.   If Emeloa = 0 Then Reset Portc.2
  123.   If Emeloa > Szamlalo Then Set Portc.2 Else Reset Portc.2
  124.   If Emelob = 0 Then Reset Portc.3
  125.   If Emelob > Szamlalo Then Set Portc.3 Else Reset Portc.3
  126.  
  127.  Return
  128.  
  129. Balenc:
  130. If Motorbal > 0 Then
  131.  Incr Balenc
  132. Else
  133.  Decr Balenc
  134. End If
  135. Return
  136.  
  137. Jobbenc:
  138. If Motorjobb > 0 Then
  139.  Incr Jobbenc
  140. Else
  141.  Decr Jobbenc
  142. End If
  143. Return



A kódot szimulátorban teszteltem, annyi külömbséggel, hogy az " if ischarwaiting()=1 then input serialrec" sor helyett csak Input serialrec volt, mivel nem tudtam gyorsan beírni a szimulátorba a szöveget.

A porbléma az, hogy szimulátorban tökéletesen megy, viszont amikor rárakom az avr-re, és kiíratom vele a motorok értékeit, akkor mindig 0-t ír. Kiírattam már külön a string-ek értékét is, és az is hülyeséget ír. A legérdekesebb viszont az, hogy 11 karaktert kell fogadni, így 11 hosszúságú string-et hoztam létre. Amikor a soros porton kapott string-et visszaküldöm a gép felé, akkor már csak 10 karakterből áll. Szimulátorban ez is normálisan működött.

Esetleg valakinek valami ötlet?
(#) balint1993 válasza balint1993 hozzászólására (») Jún 7, 2010 /
 
Sok szenvedés után működni látszik a dolog. Nem tudom, hogy milyen karaktert küldhet először, de biztos, hogy a PC-n a Terminal Emulator-ban nem jelenik meg. Tolódott az egész dolog jobbra eggyel, ezért volt hibás a feldolgozás is.
(#) TavIR-AVR válasza balint1993 hozzászólására (») Jún 7, 2010 /
 
Bejövő adatokat buffereld a config serialin = buffered, 20 sorral.

Én raknék START és STOP karaktert, és így fűzném össze a feldolgozandó karakterláncot.

Start: #, adásvége: &
ami az adásvége és a start közt jön, az szemét..
A karakterlánc hossza ha nagyobb mint 10 karakter: szemét is jött. Eldobni.
(#) balint1993 válasza TavIR-AVR hozzászólására (») Jún 7, 2010 /
 
Puffereltem a soros portot, és egy & jelet raktam kezdő karakternek. Úgy néz ki, hogy most jó, viszont ha még belerakok egy soros porti küldést, akkor már igencsak szaggatva megy a motor, és a szervó is ugrál. Kezdem azt hinni, hogy ezekkel az avr-ekkel nem lehet egy ilyen dolgot megcsinálni...
  1. $regfile "m8def.dat"
  2. $crystal = 8000000
  3. $baud = 9600
  4. '$sim
  5. Dim Szamlalo As Byte                                        'SW PWM
  6. Dim Motor1a As Byte                                         'SW PWM
  7. Dim Motor1b As Byte                                         'SW PWM
  8. Dim Motor2a As Byte                                         'SW PWM
  9. Dim Motor2b As Byte                                         'SW PWM
  10. Dim Emeloa As Byte                                          'SW PWM
  11. Dim Emelob As Byte                                          'SW PWM
  12. Dim Motorbal As Integer                                     'soros porton olvasando
  13. Dim Motorjobb As Integer                                    'soros porton olvasando
  14. Dim Servo1 As Byte                                          'soros porton olvasando
  15. Dim Servo2 As Byte                                          'soros porton olvasando
  16. Dim Emelo As Byte                                           'soros porton olvasando
  17. Dim Balenc As Integer
  18. Dim Jobbenc As Integer
  19. Dim Serialrec As String * 15
  20. Dim Serialrecmod As String * 4
  21. Dim A As String * 1
  22.  
  23. Config Portc.2 = Output                                     'motor meghajtok
  24. Config Portc.3 = Output                                     'motor meghajtok
  25. Config Portc.4 = Output                                     'motor meghajtok -bal
  26. Config Portc.5 = Output                                     'motor meghajtok -bal
  27. Config Portd.6 = Output                                     'motor meghajtok -jobb
  28. Config Portd.7 = Output                                     'motor meghajtok -jobb
  29. Config Pind.2 = Input
  30. Config Pind.3 = Input
  31. Pind.2 = 1
  32. Pind.3 = 1
  33.  
  34. Config Serialin = Buffered , Size = 20
  35. Config Timer2 = Timer , Prescale = 8
  36. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1024
  37. Config Int0 = Falling
  38. Config Int1 = Falling
  39. On Int0 Balenc
  40. On Int1 Jobbenc
  41. On Timer2 Pwmhajt
  42. Enable Timer2
  43. Start Timer2
  44. Enable Interrupts
  45. Enable Int0
  46. Enable Int1
  47.  
  48.  
  49. Echo Off
  50. Do
  51.  
  52.  
  53. 'Print Balenc ; "         " ; Jobbenc
  54.  
  55.  
  56. If Ischarwaiting() = 1 Then
  57.  A = Inkey()
  58.  Waitms 1
  59.  If A = "#" Then
  60.   Input Serialrec
  61.  End If
  62. End If
  63. Serialrecmod = Mid(serialrec , 1 , 4)
  64. Motorbal = Val(serialrecmod)
  65. Serialrecmod = Mid(serialrec , 5 , 4)
  66. Motorjobb = Val(serialrecmod)
  67. Serialrecmod = Mid(serialrec , 9 , 1)
  68. Servo1 = Val(serialrecmod)
  69. Serialrecmod = Mid(serialrec , 10 , 1)
  70. Servo2 = Val(serialrecmod)
  71. Serialrecmod = Mid(serialrec , 11 , 1)
  72. Emelo = Val(serialrecmod)
  73.  
  74.  
  75.  
  76. 'Print Motorjobb
  77. 'Print Servo1
  78. 'Print Servo2
  79. 'Print Emelo
  80. Pwm1a = Servo1
  81. Pwm1b = Servo2
  82.  
  83. Select Case Emelo
  84.  Case 1 :
  85.  Emeloa = 255
  86.  Emelob = 0
  87.  Case 2:
  88.  Emeloa = 0
  89.  Emelob = 255
  90.  Case 0:
  91.  Emeloa = 0
  92.  Emelob = 0
  93. End Select
  94.  
  95. Select Case Motorbal
  96.  Case 0:
  97.  Motor1a = 0
  98.  Motor1b = 0
  99.  Case Is > 0:
  100.  Motor1a = Motorbal
  101.  Motor1b = 0
  102.  Case Is < 0:
  103.  Motor1a = 0
  104.  Motor1b = Motorbal * -1
  105. End Select
  106.  
  107. Select Case Motorjobb
  108.  Case 0:
  109.  Motor2a = 0
  110.  Motor2b = 0
  111.  Case Is > 0:
  112.  Motor2a = Motorjobb
  113.  Motor2b = 0
  114.  Case Is < 0:
  115.  Motor2a = 0
  116.  Motor2b = Motorjobb * -1
  117. End Select
  118.  
  119. Loop
  120.  
  121.  
  122.  
  123. Pwmhajt:
  124.  
  125.   Incr Szamlalo
  126.   'motor bal*******************
  127.  If Motor1a = 0 Then Reset Portc.5
  128.  If Motor1a > Szamlalo Then Set Portc.5 Else Reset Portc.5
  129.  If Motor1b = 0 Then Reset Portc.4
  130.  If Motor1b > Szamlalo Then Set Portc.4 Else Reset Portc.4
  131.  
  132.  'motor jobb*************************
  133.   If Motor2a = 0 Then Reset Portd.6
  134.   If Motor2a > Szamlalo Then Set Portd.6 Else Reset Portd.6
  135.   If Motor2b = 0 Then Reset Portd.7
  136.   If Motor2b > Szamlalo Then Set Portd.7 Else Reset Portd.7
  137.   'emelo************************
  138.  If Emeloa = 0 Then Reset Portc.2
  139.  If Emeloa > Szamlalo Then Set Portc.2 Else Reset Portc.2
  140.  If Emelob = 0 Then Reset Portc.3
  141.  If Emelob > Szamlalo Then Set Portc.3 Else Reset Portc.3
  142.  
  143. Return
  144.  
  145. Balenc:
  146. If Motorbal > 0 Then
  147. Incr Balenc
  148. Else
  149. Decr Balenc
  150. End If
  151. Return
  152.  
  153. Jobbenc:
  154. If Motorjobb > 0 Then
  155. Incr Jobbenc
  156. Else
  157. Decr Jobbenc
  158. End If
  159. Return
(#) atika911 hozzászólása Jún 11, 2010 /
 
Sziasztok!

A bascom-AVR getrc5 parancsát lehet valahogy interruptolni?
Mert most nekem egy do-loop cikulsban van és viszonylag sok időt áll és jó lenne úgy megoldani, hogy csak akkor kezdje el dekódolni a jelet, ha tényleg kap is.
Valahogy így(bocs, csak vázlat):

  1. on INT0 infra
  2.  
  3. do
  4. ...akármi
  5. loop
  6.  
  7. infra:
  8. getrc5...
  9. return
(#) mukievil hozzászólása Aug 17, 2010 /
 
Sziasztok!

Hogy tudom előcsalni bascomban egy attiny2313 4 pwm csatornáját ??? pwm1a az működik, a pwm1b arra hibár ir ki, hogy ilyen parancs nincs, és hol a többi két csatorna ?
(#) TavIR-AVR válasza mukievil hozzászólására (») Aug 17, 2010 /
 
Biztos T2313-t és nem 90S2303-t választottad ki?

PWM0, PWM1a, WM1b, PWM2.
(#) mukievil válasza TavIR-AVR hozzászólására (») Aug 18, 2010 /
 
Hát igy most aztmondanám, hogy nem, de megnézem Melobol hazaérek, első dolgom lesz

Köszi!
(#) mukievil válasza TavIR-AVR hozzászólására (») Aug 18, 2010 /
 
Hát ezt a szivatást !
Tényleg rossz chip volt beállítva !
Köszi a segitséget!
(#) kenikl hozzászólása Szept 6, 2010 /
 
Helló!

Nézegettem az előző servos pwm szabályozást de nem igazán tudom kihámozni azt ami nekem kellene.
Egy mintaprogramot tudna nekem valaki írni arra hogy egy sima servot egyik végállásból a másikba tekerjen?

Segítséget előre is köszönöm.

Kenikol
(#) TavIR-AVR válasza kenikl hozzászólására (») Szept 6, 2010 /
 
  1. $regfile = "2313def.dat"                                   ' specify the used micro
  2.  
  3. $crystal = 4000000                                         ' used crystal frequency
  4.  
  5. $baud = 19200                                               ' use baud rate
  6.  
  7. $hwstack = 32                                               ' default use 32 for the hardware stack
  8.  
  9. $swstack = 10                                               ' default use 10 for the SW stack
  10.  
  11. $framesize = 40                                             ' default use 40 for the frame space
  12.  
  13.  
  14.  
  15. 'Servo's need a pulse in order to operate
  16.  
  17. 'with the config statement CONFIG SERVOS we can specify how many servo's we
  18.  
  19. 'will use and which port pins are used
  20.  
  21. 'A maximum of 14 servos might be used
  22.  
  23. 'The SERVO statements use one byte for an interrupt counter and the TIMER0
  24.  
  25. 'This means that you can not use TIMER0 anymore
  26.  
  27. 'The reload value specifies the interval of the timer in uS
  28.  
  29. 'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
  30.  
  31.  
  32.  
  33. Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
  34.  
  35. 'as an option you can use TIMER1
  36.  
  37. 'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1
  38.  
  39.  
  40.  
  41. 'we use 2 servos with 10 uS resolution(steps)
  42.  
  43.  
  44.  
  45. 'we must configure the port pins used to act as output
  46.  
  47. Config Portb = Output
  48.  
  49.  
  50.  
  51. 'finally we must turn on the global interrupt
  52.  
  53. Enable Interrupts
  54.  
  55.  
  56.  
  57. 'the servo() array is created automatic. You can used it to set the
  58.  
  59. 'time the servo must be on
  60.  
  61. Servo(1) = 40                                               '10 times 10 = 100 uS on
  62.  
  63. 'Servo(2) = 20                                               '20 times 10 = 200 uS on
  64.  
  65.  
  66. Dim I As Byte
  67.  
  68. Do
  69.  
  70. For I = 30 To 170
  71.  
  72.   Servo(1) = I
  73.  
  74.   Waitms 100
  75.  
  76. Next
  77.  
  78.  
  79.  
  80. For I = 170 To 30 Step -1
  81.  
  82.   Servo(1) = I
  83.  
  84.   Waitms 100
  85.  
  86. Next
  87.  
  88. Loop
  89.  
  90. End



A szervo igy hivatalosan 50...150 kozti erteket vehet fel (0.5...1,5 msec - emlekeim szerint)
(#) kenikl válasza TavIR-AVR hozzászólására (») Szept 7, 2010 /
 
köszönöm a segítséget így már sokkal érthetőbb mit kell(ene) csinálnom!
(#) puli122 hozzászólása Szept 22, 2010 /
 
Sziasztok!

Az itt látható jelsorozatot kellene előállítanom.

Így próbálkozom:

  1. $regfile = "m8def.dat"
  2. $crystal = 8000000
  3.  
  4.  Config Portd.0 = Output
  5.  Config Portd.1 = Output
  6.  Config Portd.2 = Input
  7.  
  8. Config Int0 = Falling
  9. On Int0 Gomb
  10. Dim A As Bit
  11. Enable Interrupts
  12. Enable Int0
  13.  
  14.  Do
  15.       If A = 1 Then
  16.  
  17.       A = 0
  18.       Set Portd.1
  19.  
  20.  
  21.       Portd.0 = 1
  22.       Waitus 2000
  23.  
  24.       Portd.0 = 0
  25.       Waitus 27830
  26.  
  27.       Portd.0 = 1
  28.       Waitus 390
  29.  
  30.       Portd.0 = 0
  31.       Waitus 1580
  32.  
  33.       Portd.0 = 1
  34.       Waitus 410
  35.  
  36.       Portd.0 = 0
  37.       Waitus 3580
  38.  
  39.       Portd.0 = 1
  40.       Waitus 400
  41.       Portd.0 = 0
  42.  
  43.       Waitms 63
  44.  
  45.      Portd.0 = 1
  46.       Waitus 2000
  47.  
  48.       Portd.0 = 0
  49.       Waitus 27830
  50.  
  51.       Portd.0 = 1
  52.       Waitus 390
  53.  
  54.       Portd.0 = 0
  55.       Waitus 1580
  56.  
  57.       Portd.0 = 1
  58.       Waitus 410
  59.  
  60.       Portd.0 = 0
  61.       Waitus 3580
  62.  
  63.       Portd.0 = 1
  64.       Waitus 400
  65.       Portd.0 = 0
  66.  
  67.       Else
  68.  
  69.       Reset Portd.0
  70.       Reset Portd.1
  71.  
  72.       End If
  73.  
  74.       Loop
  75.  
  76.       Gomb:
  77.       A = 1
  78.       Waitms 75
  79.       Gifr = 64
  80.     Return


(Portd.1 csak próba nekem egy sima leddel, hogy lássam)

De valamiért nem működik, meg tudjátok mondani hogy mit szúrok el ?

Köszi előre is

Peti
(#) puli122 válasza puli122 hozzászólására (») Szept 22, 2010 /
 
Elnézést, a beégetéssel volt a gond, a program működik! Fönnhagyom példának.
(#) Kotesz hozzászólása Okt 20, 2010 /
 
Megépítettem egy hőmérőt ATMEGA8 és egy ds18b20 sensorral. egy digitális hőmérőhöz képest csal kb 4 C fokot.

Mit csinálok rosszul?

  1. '1Wire
  2. Config 1wire = Portc.5
  3. Config Portb.1 = Output
  4. Dim Bd(9) As Byte
  5. Dim I As Byte
  6. Dim Tmp As Byte
  7. Dim T As Integer , T1 As Integer
  8. Dim Ia As String * 4
  9. Locate 1 , 7
  10. Lcd "DS18B20"
  11. Locate 4 , 5
  12. Lcd "by KoteszLab"
  13. Wait 1
  14.  
  15. Do
  16.  
  17.  
  18.   Reset Portb.1
  19.   1wwrite &HCC
  20.   1wwrite &H44
  21.      Waitms 300
  22.   1wreset
  23.   1wwrite &HCC
  24.   1wwrite &HBE
  25.   Bd(1) = 1wread(9)
  26.   1wreset
  27.  
  28.   Tmp = Bd(1) And 1
  29.      If Tmp = 1 Then Decr Bd(1)
  30.   T = Makeint(bd(1) , Bd(2))
  31.   T = T * 50
  32.   T = T - 25
  33.   T1 = Bd(8) - Bd(7)
  34.   T1 = T1 * 100
  35.   T1 = T1 / Bd(8)
  36.   T = T + T1
  37.   T = T / 10
  38.   T = T + 4
  39.   If Err = 1 Then
  40.      Locate 2 , 1
  41.      Lcd "-- "
  42.   Else
  43.         Ia = Str(t)
  44.      Waitms 50
  45.      Cls
  46.      Locate 4 , 1
  47.      Lcd "Copyright Koteszlab"
  48.      Locate 1 , 5
  49.      Lcd "H" ; Chr(002) ; "m" ; Chr(003) ; "rs" ; Chr(003) ; "klet"
  50.      Locate 2 , 8
  51.      Lcd Left(ia , 2) ; "." ; Mid(ia , 3 , 1) ; "C" ; Chr(5)
  52.      Set Portb.1
  53.   End If
  54.   Waitms 250
  55. Loop
  56. End
(#) TavIR-AVR válasza Kotesz hozzászólására (») Okt 20, 2010 /
 
A 18B20-as hőmérőt a DS18S20-as módon akarod kiolvasni.
(#) Kotesz válasza TavIR-AVR hozzászólására (») Okt 21, 2010 /
 
Értem.
Miben különbözik a 18b20 lekérdezési methodikája?
Következő: »»   4 / 18
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem