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   8 / 18
(#) HiMen válasza TavIR-AVR hozzászólására (») Feb 20, 2013 /
 
Ne is minősíts! Amíg enni alig van pénzem két diplomával, addig feljogosítva érzem magam másolt programok használatára. Amint annyit keresek, mint nyugati kollégáim, máris vásárolok SW-t. Különben is éljen a GPL!

A régit pedig nem szoktam cserélni, csak ha muszáj. Ami jól bevált... De ha küldesz egy újabbat crakkelve, áttérnék...! ))

Azért köszönöm a segítséget, megpróbálom.
(#) TavIR-AVR válasza HiMen hozzászólására (») Feb 20, 2013 /
 
GPL -> Arduino? Wiring? C?
(#) HiMen hozzászólása Feb 23, 2013 /
 
Megépítettem ezt a programozót: http://electronics-diy.com/avr_programmer.php
Soros portos. A Bascomban mit kell beállítani hozzá? Mert nekem STK500 -ra állt automatikusan a Bascom, és azóta F4-re nem a letöltés indul el, hanem megjelenik egy sajátgép ablak. Most mit akar?
(#) TavIR-AVR válasza HiMen hozzászólására (») Feb 23, 2013 /
 
Soros nemszabványos programozót a Bascom nem támogat.
-> Bascom súgó. Ott vannak a támogatottak, rajzzal is.

Ezt max: external programmer és az AVRDUDE-t beizzítod hozzá...
(#) elektromos hozzászólása Márc 6, 2013 /
 
Sziasztok!
ATMEGA8 INT0 lábra tettem egy nyomógombot. Egy ledet szeretnék be, és ki kapcsolni, de sehogy sem működik. Lehet nem is olyan egyszerű? Tehát, benyomom a nyomógombot, akkor bekapcsol egy led. Ha nem kell, hogy világítson, megint ugyanazt a nyomógombot benyomom, és a led kikapcsol. Kérem, akinek van minta programja az segítsen.
A hozzászólás módosítva: Márc 6, 2013
(#) kistigris válasza elektromos hozzászólására (») Márc 8, 2013 /
 
Szia.Most megszakítás alapon akarod használni,vagy csak simán bekapcsolni meg kikapcsolni nyomogombra?
(#) elektromos válasza kistigris hozzászólására (») Márc 8, 2013 /
 
Szia!
Ha tudsz mind a két megoldásban segíteni, akkor jöhet mindkettő megoldás.
(#) kistigris válasza elektromos hozzászólására (») Márc 8, 2013 /
 
Ezt próbáld meg.nem tudom melyik kimeneten van a led azt majd beállítod.Meg a kvarcod is.Ha túl érzékeny a gomb a waitms tudsz korrigálni.Ez csak sima nyomógombos nem megszakításos.


  1. $regfile = "m8def.dat"                                      'Proci Tipusa
  2. $crystal = 8000000                                          'qvarc
  3. $swstack = 40
  4. $hwstack = 64
  5. $framesize = 80
  6.  
  7.  
  8. Config Portd.2 = Input
  9. Portd.2 = 1
  10. Gomb Alias Pind.2
  11.  
  12. Config Portc.2 = Output
  13. Portc.2 = 0
  14.  
  15.  
  16. Do
  17.  
  18. If Gomb = 0 Then
  19.   Waitms 50
  20.  
  21.  
  22.   If Portc.2 = 0 Then
  23.     Portc.2 = 1
  24.    Else
  25.    Portc.2 = 0
  26.  
  27.  End If
  28. End If
  29.  Waitms 500
  30. Loop
  31.  
  32. End
(#) elektromos válasza kistigris hozzászólására (») Márc 8, 2013 /
 
Köszönöm!
Működik!
(#) HiMen hozzászólása Márc 19, 2013 /
 
Sajnos még mindig nem fut az első programom sem.
Vettem egy szabványos stk500 programozót. Felinstalltam, látja virtuális com3 néven.
A Bascomot beállítottam stk500 -ra COM3 -ra. F7 fordít, F4 letölt de ehelyett megjelenik egy windows file ablak amin nézhetem a könyvtáramat, de semmi nem történik.
Mi a túró lehet? (bascom 1.11.9.0)
(#) TavIR-AVR válasza HiMen hozzászólására (») Ápr 1, 2013 /
 
Az AVR-Studiot tedd fel itt hivatkozz a stk500.exe-re.
AVR-Doper, USBASP-vel _nem_ működik! - Ezek nem stk500-ak...

B opcio:
Bascommal fordítasz, AVRStudioval feltöltesz.
A hozzászólás módosítva: Ápr 1, 2013
(#) pe.ti hozzászólása Ápr 19, 2013 /
 
Sziasztok! Hogy lehet elérni azt hogy 1db nyomógombbal több program között tudjak váltani?
(#) kissi válasza pe.ti hozzászólására (») Ápr 19, 2013 /
 
Szia!
A NY-al léptetsz egy változó és a változó értékétől függően ugrasz ide vagy oda !
(#) pe.ti válasza kissi hozzászólására (») Ápr 19, 2013 /
 
Le tudnád nekem írni egy példába?
(#) kissi válasza pe.ti hozzászólására (») Ápr 19, 2013 /
 
Nem, mert nem használom ezt a nyelvet!
(#) pe.ti hozzászólása Ápr 19, 2013 /
 
Értem Azért köszönöm!
(#) kissi válasza pe.ti hozzászólására (») Ápr 19, 2013 /
 
Az elv alapján meg kell tudnod oldani!
Valami ilyesminek kell lennie ( a szintaktikát ne nézd ! ):
A változó növelése a gomb megnyomása esetén ( if NY then valtozo=valtozo+1 ),
ha a változo elérte a maximumot, akkor pl. újra visszateszem az elejére, ha 1 gomb van az állításra ( if valtozo=max+1 then valtozo=minimum ),
Eztután ugrás a változó értékétől függően ( if valtozo=0 then goto menu_0
if valtozo=1 then goto menu_1
if valtozo=2 then goto menu_2, stb.
A NY lekezeléséhez ne felejts késleltetést írni !
(#) pe.ti válasza kissi hozzászólására (») Ápr 19, 2013 /
 
Így már jobban érthető Köszi!
(#) pe.ti válasza pe.ti hozzászólására (») Ápr 19, 2013 /
 
Megcsináltam elképzelésem szerint de nem lett jó
  1. On Int0 Gomb
  2. Enable Timer0
  3. Enable Interrupts
  4. Enable Int0
  5. Dim Gomb As Byte
  6. Gomb = 0
  7. If Pind.2 = 0 Then Gomb = Gomb + 1
  8. If Gomb = 2 + 1 Then Gomb = 0
  9. If Gomb = 0 Then Goto Prog0
  10. If Gomb = 1 Then Goto Prog1
  11. If Gomb = 2 Then Goto Prog2
  12. If Pind.2 = 0 Then Waitms 200

Mi a hiba?
(#) kistigris válasza pe.ti hozzászólására (») Ápr 20, 2013 /
 
Én ugy látom a gomb változó kicsit prelles.azaz hamar tulszalad.nem johelyen van a waitms.szerintem.
A gomb 2+1 then gomb=0 azt szerintem ugy kellene hogy gomb<=3 then gomb=0
De kipróbálhatod a CASE utasítást.szerintem az jobb
A hozzászólás módosítva: Ápr 20, 2013
(#) pe.ti válasza kistigris hozzászólására (») Ápr 20, 2013 /
 
Példát tudsz írni, mert már nem értem mi hogy van...
(#) TavIR-AVR válasza pe.ti hozzászólására (») Ápr 20, 2013 /
 
Ilyen nincs a Bascom-AVRben:

If Gomb = 2 + 1 Then Gomb = 0


Tipp-váz:
do
if pinc.2=0 then incr program
if program>3 then program = 1
if program = 1 then call egyesprogram()
if program = 2 then call kettesprogram()
if program = 3 then call harmasprogram()
waitms 100
bitwait pinc.2, set 'engedd el e gombot
loop


Indulásnak az INT és TIMEReket felejtsd el....
(#) pe.ti válasza TavIR-AVR hozzászólására (») Ápr 20, 2013 /
 
Full kezdô vagyok még, remélem ezzel sikerül megcsinálni illetve megtanulni Köszönöm!
(#) Srajmund hozzászólása Máj 12, 2013 /
 
Sziasztok!
Egy kis segítséget szeretnék kérni. Próbaképpen egy ATmega8-al egy ébresztőórát akartam a Bascom (2.0.7.3)-mal letesztelni.
Ennek a proginak kellene futnia....

  1. '***************************************************************************
  2. '** author:  Ronald Bruinsma
  3. '** date:    Juni - 2011
  4. '** title:   Alarm Clock
  5. '** version: 1.5
  6. '** descr:     Alarm clock with date, functions and parts used:
  7. '**            - adjust time and alarm time
  8. '**            - adjust date
  9. '**            - stop alarm
  10. '**            - timer for date and time uses a 32.768kHz Watch Timing Crystal
  11. '**            - Star Micronics TMB-05 Buzzer
  12. '**            - Runs on 5Volt
  13. '**            - ATMEGA8 28pin
  14. '**            - HD44780 1602 16x2 LCM Character LCD Display Module New
  15. '***************************************************************************
  16.  
  17. 'chip ATMEGA8 settings:
  18. $regfile = "m8def.dat"
  19. $crystal = 1000000
  20. $hwstack = 64
  21. $swstack = 32
  22. $framesize = 32
  23. '$sim                                                        'For testing purpose
  24.  
  25. 'Variabelen
  26. Dim Keytime As Word                                         'for counting if button portd.5 is pressed
  27. Dim Minute As Byte , Hour As Byte , Flag As Bit             ' vars for time
  28. Dim Day As Byte , Month As Byte , Year As Byte , Flag_date As Bit       ' vars for date
  29. Dim Start_counter_int As Integer                            'vars for start loop
  30. Dim Pulses As Word , Periods As Word                        ' vars for buzzer
  31. Pulses = 2 : Periods = 25000                                ' setting the buzzer sound
  32. Dim Alarm_hours As Byte , Alarm_minutes As Byte             ' alarm time
  33. Dim Alarm_h_set As String * 2 , Alarm_m_set As String * 2   ' alarm time converted to strings
  34. Dim Alarm_time As String * 8                                ' alarm time
  35. Alarm_hours = 00                                            ' default alarm time hours
  36. Alarm_minutes = 00                                          ' default alarm time minutes
  37. Dim _alarm_hours As Byte , _alarm_minutes As Byte           'vars for alarm setup sub
  38. Declare Sub Setup_time                                      ' subroutine for setting the time
  39. Declare Sub Setup_alarm_time                                ' subroutine for setting the alarm time
  40. Declare Sub Alarm                                           'subroutine for stopping the alarm buzzer
  41. Declare Sub Setup_date                                      ' subroutine for setting the date
  42.  
  43. 'Poort configuratie
  44. Ddrd = &B00000000                                           'setup portd as input for buttons
  45. Ddrc = &B00111111                                           'setup portC as output for LCD screen
  46. Portd.5 = 1                                                 'setup button for time, if button is pressed for more than 3 seconds than enter date setup
  47. Portd.6 = 1                                                 'setup button alarm time
  48. Portd.2 = 1                                                 'minutes button
  49. Portd.3 = 1                                                 'hour button
  50. Buzzer Alias Portd.1                                        'poort d 1 for buzzer
  51. Config Buzzer = Output
  52. Portd.7 = 1                                                 'stop buzzer button
  53.  
  54. '---------------------------
  55. ' Activating LCD screen
  56. '---------------------------
  57. Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
  58. Config Lcd = 16 * 2                                         'LCD screen fromat
  59. Config Lcdbus = 4                                           '4 bits instead of 8 bits
  60. Config Lcdmode = Port
  61. Initlcd
  62. Display On
  63. Waitms 400
  64. '---------------------------
  65. ' Activate internal clock
  66. '---------------------------
  67. Config Date = Mdy , Separator = /                           'ANSI format
  68. Config Clock = Soft                                         'clock type
  69.  
  70. Date$ = "14/06/11"                                          'start date
  71. Time$ = "00:00:00"                                          'start time
  72.  
  73. '---------------------------
  74. ' Main loop
  75. '---------------------------
  76. Cls
  77. Waitms 300
  78. Lcd "Starting up....."
  79. Start_counter_int = 1
  80. Do
  81.   Locate 2 , Start_counter_int
  82.   Lcd "."
  83.   Waitms 150
  84.   Incr Start_counter_int
  85. Loop Until Start_counter_int = 16                           '16 is maximum chars for LCD screen
  86.  
  87. Cls
  88. Waitms 250
  89.  
  90. Enable Interrupts                                           ' interrupts ON for clock
  91.  
  92. ' Time and Date Main loop±
  93. Do
  94.    If Pind.5 = 0 Then
  95.       Keytime = 0                                           'Reset the counter back to zero
  96.      Do
  97.         Incr Keytime
  98.         If Keytime > 65000 Then Keytime = 65000            'Button is pressed very long time
  99.          Waitms 1                                           'Some delay else the loop is to fast
  100.         Loop Until Pind.5 = 1                              'Do loop until the button is released
  101.          If Keytime > 20 And Keytime < 3000 Then Gosub Setup_time       'Button pressed for 3 or less seconds than setup time
  102.         If Keytime => 3000 And Keytime < 10000 Then Gosub Setup_date       'Button pressed between 3 and 10 secs than setup date
  103.    Elseif Pind.6 = 0 Then
  104.       Cursor On , Blink
  105.       Gosub Setup_alarm_time
  106.    End If
  107.    Locate 1 , 1
  108.    Lcd "Date: " ; Date$ ; "  "
  109.    Locate 2 , 1
  110.    If Time$ = Alarm_time Then                               ' alarm time = current time than goto buzzer
  111.      Gosub Alarm
  112.     Else
  113.      Lcd "Time: " ; Time$ ; "  "
  114.   End If
  115. Loop
  116. End
  117.  
  118. 'Subroutine to setup date:
  119. Sub Setup_date
  120. Disable Interrupts
  121.    Cls
  122.    Waitms 150
  123.    Locate 1 , 1
  124.    Lcd "Date setup:"
  125.    Bitwait Pind.5 , Set                                     'wait until pin D 5 setup button is released
  126.   Locate 2 , 1
  127.  
  128.   Month = _month
  129.   Day = _day
  130.   Year = _year
  131.  
  132.   If Month < 10 Then Lcd "0"
  133.      Lcd Month ; "/"
  134.   If Day < 10 Then Lcd "0"
  135.      Lcd Day ; "/"
  136.   If Year < 10 Then Lcd "0"
  137.      Lcd Year
  138.  
  139. ' main loop for setting up date:
  140.    Do
  141.       If Flag_date = 1 Then
  142.          Locate 2 , 1
  143.       If Day < 10 Then Lcd "0"
  144.          Lcd Day ; ":"
  145.       If Month < 10 Then Lcd "0"
  146.          Lcd Month ; ":"
  147.       If Year < 10 Then Lcd "0"
  148.          Lcd Year
  149.       Flag_date = 0
  150.    End If
  151.  
  152. ' Adjust days, pin D 2 button:
  153.   If Pind.2 = 0 Then
  154.      Waitms 150
  155.      Incr Day
  156.      Waitms 150
  157.      If Day = 31 Then Day = 0
  158.         Waitms 150                                         '  pauze
  159.       Flag_date = 1                                         'update lcd
  160.   End If
  161. ' Adjust months, pin D 3 button:
  162.    If Pind.3 = 0 Then
  163.      Waitms 150
  164.      Incr Month
  165.      Waitms 150
  166.      If Month = 12 Then Month = 0
  167.       Waitms 150                                            '  pauze
  168.      Flag_date = 1                                         'update lcd
  169.    End If
  170. ' Adjust years, pin D 7 button:
  171.   If Pind.7 = 0 Then
  172.     Waitms 150
  173.     Incr Year
  174.     Waitms 150
  175.     If Year = 100 Then Year = 0
  176.      Waitms 150                                            '  pauze
  177.       Flag_date = 1                                         'update lcd
  178.   End If
  179.  
  180.   Loop Until Pind.5 = 0                                    ' after pressing button pin D 5 again, leave this subroutine
  181.    _month = Month
  182.    _day = Day
  183.    _year = Year
  184.  
  185.     Cursor Off , Noblink , Cls
  186.     Bitwait Pind.5 , Set
  187.     Enable Interrupts                                       ' interrupts back ON for clock.
  188. End Sub
  189.  
  190. 'Subroutine for alarm:
  191. Sub Alarm
  192.       Bitwait Pind.7 , Set
  193.       Cls
  194.          Lcd "Wake up time!!"
  195.       Do
  196.          Sound Buzzer , Pulses , Periods
  197.          Waitms 125
  198.       Loop Until Pind.7 = 0
  199.       Bitwait Pind.7 , Set
  200. End Sub
  201.  
  202. 'Subroutine to setup time:
  203. Sub Setup_time:
  204. Disable Interrupts
  205.   Cls
  206.   Waitms 250
  207.   Locate 1 , 1
  208.   Lcd "Time setup:"
  209.   Bitwait Pind.5 , Set                                     '
  210.    Locate 2 , 1
  211.  
  212.    Hour = _hour
  213.    Minute = _min
  214.  
  215.    If Hour < 10 Then Lcd "0"
  216.       Lcd Hour ; ":"
  217.    If Minute < 10 Then Lcd "0"
  218.       Lcd Minute
  219.  
  220. ' Main loop setting up time::
  221.   Do
  222.      If Flag = 1 Then
  223.         Locate 2 , 1
  224.      If Hour < 10 Then Lcd "0"
  225.         Lcd Hour ; ":"
  226.      If Minute < 10 Then Lcd "0"
  227.         Lcd Minute
  228.      Flag = 0
  229.   End If
  230.  
  231. ' adjust minutes, pin D 2 button:
  232.    If Pind.2 = 0 Then
  233.       Waitms 150
  234.       Incr Minute
  235.       Waitms 150
  236.       If Minute = 60 Then Minute = 0
  237.          Waitms 150                                         '  pauze
  238.      Flag = 1                                              'update lcd
  239.    End If
  240. ' Adjust hours, pin D 3 button:
  241.   If Pind.3 = 0 Then
  242.     Waitms 150
  243.     Incr Hour
  244.     Waitms 150
  245.     If Hour = 24 Then Hour = 0
  246.      Waitms 150                                            '  pauze
  247.       Flag = 1                                              'update lcd
  248.   End If
  249.  
  250.  
  251.   Loop Until Pind.5 = 0
  252.   _min = Minute
  253.   _hour = Hour
  254.  
  255.   Cursor Off , Noblink , Cls
  256.   Bitwait Pind.5 , Set
  257.   Enable Interrupts
  258. End Sub
  259.  
  260. 'Subroutine for setting up alarm time:
  261. Sub Setup_alarm_time:
  262. Disable Interrupts
  263.    Cls
  264.    Waitms 250
  265.    Locate 1 , 1
  266.    Lcd "Alarm setup:"
  267.    Bitwait Pind.6 , Set                                     '
  268.   Locate 2 , 1
  269.  
  270.   If Alarm_hours < 10 Then Lcd "0"
  271.      Lcd Alarm_hours ; ":"
  272.   If Alarm_minutes < 10 Then Lcd "0"
  273.      Lcd Alarm_minutes
  274.  
  275. 'Main loop for setting up alarm time:
  276. Do
  277.       If Flag = 1 Then
  278.          Locate 2 , 1
  279.          If Alarm_hours < 10 Then Lcd "0"
  280.             Lcd Alarm_hours ; ":"
  281.          If Alarm_minutes < 10 Then Lcd "0"
  282.             Lcd Alarm_minutes
  283.       Flag = 0
  284.    End If
  285.  
  286. ' Adjust minutes, pin D 2 button:
  287.   If Pind.2 = 0 Then
  288.      Waitms 150
  289.      Incr Alarm_minutes
  290.      Waitms 150
  291.      If Alarm_minutes = 60 Then Alarm_minutes = 0
  292.         Waitms 150                                         '  pauze
  293.       Flag = 1                                              'update lcd
  294.   End If
  295. ' Adjust hours, pin D 3 button:
  296.    If Pind.3 = 0 Then
  297.      Waitms 150
  298.      Incr Alarm_hours
  299.      Waitms 150
  300.      If Alarm_hours = 24 Then Alarm_hours = 0
  301.       Waitms 150                                            '  pauze
  302.      Flag = 1                                              'update lcd
  303.    End If
  304. Loop Until Pind.6 = 0                                       ' pas als button op pin D 6 weer wordt ingedrukt uit deze loop gaan
  305.  
  306.    ' Convert alarm time to string and add extra zero
  307.     If Alarm_hours < 10 Then
  308.       Alarm_h_set = "0" + Str(alarm_hours)
  309.     End If
  310.     If Alarm_minutes < 10 Then
  311.       Alarm_m_set = "0" + Str(alarm_minutes)
  312.     End If
  313.     Alarm_time = Alarm_h_set + ":" + Alarm_m_set + ":00"    ' alarm time
  314.  
  315.    'Goto main routine
  316.     Cursor Off , Noblink , Cls
  317.     Bitwait Pind.6 , Set
  318.     Enable Interrupts
  319. End Sub


Megépítetten, letöltöttem, de a kijelzőnek csak az első sora látszódik, de ott sem karakterek, hanem a 16x2 (5x7) pont.....
Kérdés hogy csak a hex-et kell ugye beégetni a Bascom által generál file-ok közül??

USBASP-m van, compile (F7) után a hex-et próbáltam Extreme burnerrel is beégetni, de az is ugyanezt az eredményt adta.

Ahonnan az egész származik: Atmel ATMEGA8 with BASCOM alarm clock project
A hozzászólás módosítva: Máj 13, 2013
(#) TavIR-AVR válasza Srajmund hozzászólására (») Máj 13, 2013 /
 
- Initlcd sor lehet 2x kell.
- LCD nincs jól bekötve (zárlat, lábszakadás, stb)

Az inicializálás nem megy végbe.

Én úgy szoktam:
initlcd
cls
initlcd
cls
(#) possim hozzászólása Okt 27, 2013 /
 
Sziasztok!
Némi segítséget szeretnék kérni. Forrasztó állomást szeretnék építeni mega8-al, de elakadtam. PÁKA(PTC)+12.5mA generátor és ezen eső feszültség megy bele a megába(további feldolgozás->°C), de már maga a mérés is gondot okoz. Teljesen meghülyül az ADC össze-vissza ugrálnak az értékek még akkor is mikor egy sima konstans feszültséget néztem. Breadboardban van benne a cucc, először erre gyanakodtam,de nem összeforrasztgattam ezen részt, hogy ne legyen érintkezési hiba, de semmi sem változott. Próbáltam több mintát venni, azt kiátlagolni, csökkentettem a mintavételi frekit, felpufferoltam a tápot, AVCC-n LC alul-áteresztő szűrő van. És nincs több ötletem, hogy mi a fenéért van ez. Ha van valami ötletetek, kérlek benneteket világosítsatok fel, mert erősen kezdő vagyok még ebben a világban.
Köszönöm
(#) TavIR-AVR válasza possim hozzászólására (») Okt 27, 2013 /
 
Aref-GND közt 100nF.
Mérés: internal 2.56V-on.
Ugrálás: milyen szintű? Lehet hogy az 50 Hz jön át kapacitívan.

Programkód?
Config ADC=auto, ....
getadc() - jo ADC csatornát veszel? Vigyázz ADC4 és ADC5: I2C busz , így csak a 8. bitig megbítzható! A többi ADC 10 bites!
(#) possim hozzászólása Okt 27, 2013 /
 
Ennyi van meg, de addig nem akarom folytatni amíg erre az ADC problémára nem találok megoldást.

  1. $regfile "m8adef.dat"
  2. $crystal = 8000000
  3.  
  4. '*******************************************************************************
  5.  
  6. Config Adc = Single , Prescaler = 128 , Reference = Off     'ref4050 TI referencia 4096mV
  7.  
  8. '*******************************************************************************
  9.  
  10. Config Timer0 = Timer , Prescale = 256
  11. Enable Timer0
  12. On Timer0 Tisr0
  13. Start Timer0
  14.  
  15. '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
  16.  
  17. Config Timer1 = Timer , Prescale = 8
  18. Enable Ovf1
  19. On Ovf1 Tisr1
  20. Start Timer1
  21. Enable Interrupts
  22.  
  23. '*******************************************************************************
  24. Config Timer2 = Timer , Prescale = 1024
  25. Enable Timer2
  26.  
  27. '*******************************************************************************
  28. Config Portc.5 = Input                                      'ADC
  29.  
  30. Config Portd.3 = Input                                      'Temp -
  31. Le Alias Portd.3
  32.  
  33. Config Portd.4 = Input                                      'Temp +
  34. Fel Alias Portd.4
  35.  
  36. Config Portd.5 = Input                                      'MEM1
  37. Mem1 Alias Portd.5
  38.  
  39. Config Portd.6 = Input                                      'MEM2
  40. Mem2 Alias Portd.6
  41.  
  42. Config Portd.7 = Input                                      'MEM3
  43. Mem3 Alias Portd.7
  44.  
  45. Config Portb = Output                                       'Szegmensek
  46. Portb = 255
  47. Dataport Alias Portb
  48.  
  49. Config Portd.2 = Output                                     'helyiertek
  50. Szazas Alias Portd.2
  51.  
  52. Config Portd.1 = Output                                     'helyiertek
  53. Tizes Alias Portd.1
  54.  
  55. Config Portd.0 = Output                                     'helyiertek
  56. Egyes Alias Portd.0
  57.  
  58. '*******************************************************************************
  59.  
  60. Declare Sub Decszam(byval Szam As Long)
  61. Declare Sub Temp
  62. Declare Sub Adc1
  63.  
  64. '*******************************************************************************
  65.  
  66. Dim I As Long
  67. Dim J As Byte
  68. Dim K As Long
  69. Dim L As Byte
  70. L = 0
  71. Dim Szegmens(3) As Byte
  72. Dim Aktled As Byte
  73. Dim M1 As Eram Long
  74. Dim M2 As Eram Long
  75. Dim M3 As Eram Long
  76. Dim A1 As Long
  77. Dim A2 As Long
  78. Dim H As Bit
  79. Aktled = 1
  80. K = 200
  81. Decszam K
  82. A2 = 0
  83. '*******************************************************************************
  84.  
  85.   Do
  86.  
  87.      If Pind.3 = 0 Or Pind.4 = 0 Then
  88.      Temp
  89.      H = 1
  90.      End If
  91.  
  92.      Adc1
  93.  
  94.  
  95.  
  96.  
  97.  
  98.      If H = 1 Then
  99.         Decszam K
  100.      End If
  101.  
  102.      If H = 0 Then
  103.            Decszam A2
  104.            Waitms 100
  105.      End If
  106.  
  107.      If Pind.5 = 0 Then
  108.      Waitms 250
  109.      K = M1
  110.      End If
  111.  
  112.      If Pind.5 = 0 Then
  113.      Waitms 250
  114.      K = M2
  115.      End If
  116.  
  117.      If Pind.5 = 0 Then
  118.      Waitms 250
  119.      K = M3
  120.      End If
  121.  
  122.  
  123.  
  124.  
  125.  
  126.   Loop
  127.   End
  128.  
  129. '*******************************************************************************
  130.  
  131. Tisr0:
  132. Stop Timer0
  133. Timer0 = 0
  134. Dataport = Szegmens(3)
  135. Set Szazas
  136. Waitms 5
  137. Reset Szazas
  138. Dataport = Szegmens(2)
  139. Set Tizes
  140. Waitms 5
  141. Reset Tizes
  142. Dataport = Szegmens(1)
  143. Set Egyes
  144. Waitms 5
  145. Reset Egyes
  146. Start Timer0
  147. Return
  148.  
  149. '*******************************************************************************
  150.  
  151. Tisr1:
  152. Incr L
  153. If L = 50 Then
  154. L = 0
  155. H = 0
  156. End If
  157. Return
  158.  
  159. '*******************************************************************************
  160. Sub Adc1
  161.  
  162.       A2 = 0
  163.       A1 = Getadc(5)
  164.       A2 = A1 * 4
  165.  
  166.  
  167. End Sub Adc1
  168.  
  169. '*******************************************************************************
  170.  
  171. Sub Temp
  172. Stop Timer1
  173. Timer1 = 0
  174. If Pind.3 = 0 Then
  175.   Waitms 50
  176.   K = K - 10
  177.      If K < 200 Then
  178.      K = 200
  179.      End If
  180.   End If
  181.  
  182.   If Pind.4 = 0 Then
  183.   Waitms 50
  184.   K = K + 10
  185.      If K > 480 Then
  186.      K = 480
  187.      End If
  188.   End If
  189. Start Timer1
  190. End Sub Temp
  191.  
  192. '*******************************************************************************
  193.  
  194. Sub Decszam(byval Szam As Long)
  195. Local Sz As Long
  196. Sz = Szam Mod 10
  197. Szegmens(3) = Lookup(sz , Leddata)
  198. Szam = Szam / 10
  199. Sz = Szam Mod 10
  200. Szegmens(2) = Lookup(sz , Leddata)
  201. Szam = Szam / 10
  202. Sz = Szam Mod 10
  203. Szegmens(1) = Lookup(sz , Leddata)
  204. End Sub Decszam
  205.  
  206. '*******************************************************************************
  207.  
  208. Leddata:
  209. Data &B01000000                                             '0
  210. Data &B01111001                                             '1
  211. Data &B00100100                                             '2
  212. Data &B00110000                                             '3
  213. Data &B00011001                                             '4
  214. Data &B00010010                                             '5,S
  215. Data &B00000010                                             '6
  216. Data &B01111000                                             '7
  217. Data &B00000000                                             '8
  218. Data &B00010000                                             '9
  219. Data &B00000111                                             't
  220. Data &B00000110                                             'E
(#) TavIR-AVR válasza possim hozzászólására (») Okt 27, 2013 /
 
Szerintem elkolbászol a programban:
- frames? swstack/hwstack mérete?
- adc start hiányzik az elején (elvileg nem kell)
- csak az ADC-t mérd és soroson küldd vissza a PC fele (vagy tedd eepromba es olvasd ki)
- ADC átlagolásokkal nem javul?
- Minek lesz long az ADC ha beleférsz a word-be?
- az 5-os csatorna I2C busz! 8 bites a pontossága (alsó két bit kuka)!
(#) DjBuga hozzászólása Dec 13, 2013 /
 
Üdv mindenkinek!
Szeretnék kérni egy kis segítséget!
Ennek a programnak, elméletileg, RGB led-et kellene színátmenettel vezérelni.
Ezt a programot találtam a neten, én csak kiszegettem belölle azt, ami nekem nem kell.
Csak nagyon kezdő szinten próbálkozok az AVR programozással...

  1. $regfile = "m8515.dat"
  2. $crystal = 800000
  3. $hwstack = 24
  4. $swstack = 10
  5. $framesize = 16
  6.  
  7. Dim Trimmer As Word
  8. Dim D As Byte , Ba As Byte , Be As Integer , Bg As Byte , Dmax As Byte
  9. Dim Changetime As Word , Ontime As Word , Trimtime As Word
  10.  
  11. Config Porta.0 = Output
  12.  
  13. Config Porta.1 = Output
  14.  
  15. Config Porta.2 = Output
  16.  
  17. Led_piros Alias Porta.0
  18. Led_zold Alias Porta.1
  19. Led_kek Alias Porta.2
  20.  
  21. Gosub Zero
  22. Bg = 16
  23.  
  24. Do
  25.  
  26. Gosub Blure
  27.  
  28. Select Case Bg
  29.  
  30. Case 0:
  31.  
  32. Led_piros = 0
  33. Waitus Ba
  34. Led_piros = 1
  35.  
  36.  
  37. Case 1:
  38.  
  39. Led_zold = 0
  40. Waitus Ba
  41. Led_zold = 1
  42.  
  43.  
  44. Case 2:
  45.  
  46. Led_kek = 0
  47. Waitus Ba
  48. Led_kek = 1
  49.  
  50.  
  51. Case 3:
  52.  
  53. For D = 0 To Ba Step 8
  54. Gosub Led_pirosd20
  55. Gosub Led_zold20
  56.  
  57. Next
  58.  
  59. Case 4:
  60.  
  61. For D = 0 To Ba Step 8
  62. Gosub Led_zold20
  63. Gosub Led_kek20
  64.  
  65. Next
  66.  
  67. Case 5:
  68.  
  69. For D = 0 To Ba Step 8
  70. Gosub Led_kek20
  71. Gosub Led_piros20
  72.  
  73. Next
  74.  
  75. Case Else
  76.  
  77. For D = 0 To Ba Step 12
  78. Gosub Led_piros20
  79. Gosub Led_zold20
  80. Gosub Led_kek20
  81.  
  82. Next
  83.  
  84. End Select
  85.  
  86. Dmax = 255 = Ba
  87.  
  88. For D = 0 To Dmax Step 1
  89. Waitus 20
  90.  
  91.  
  92. Loop
  93.  
  94. End


A 69. sorban kapom a hibát, de nem értem, miért???

Köszönet a segítségért!
Következő: »»   8 / 18
Bejelentkezés

Belépés

Hirdetés
XDT.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