AVRWEB32 módosítás

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
strigo
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2006. február 17. péntek, 7:00

AVRWEB32 módosítás

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

Sziasztok!

Egy kicsit átalakítottam az AVRWEB32 panelt.
Az eredeti Mega32 helyett egy Mega644P 20 PU került
A portD4 (19) láb össze volt kötve az bemenetet leválasztó optokapuval.
Annyi átalakítást végeztem, hogy most portD2 [int0] 16 lábra átkötöttem, mert a bemenet polling nem volt megfelelő.
Arra gondoltam, miért ne működhetne megszakítással.
Sajnos nem működik.

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

$crystal = 14745600
$regfile = "M644Pdef.dat"
$baud = 9600

$hwstack = 64
$swstack = 64
$framesize = 64

Out1 Alias Portc.2
Out2 Alias Portc.3
Out3 Alias Portc.4
Config Out1 = Output
Config Out2 = Output
Config Out3 = Output
Out1 = 0
Out2 = 0
Out3 = 0

Dim Sz1 As Integer                                          '1-es bemenet szamlalo
Dim Ezvolt As Byte                                          'a D port megszakításkor
Dim Ezlet As Byte                                           'A D port átalakítás után

Dim Gomb As Byte                                            'aktuális gomb allapot
Dim Tmp_gomb As Byte                                        'elozo gomg alaapot
Dim Fut As Byte                                             '1-ha a számlálás folyamatban van
Dim Irni As Byte                                            '1-ha kijelzőt kell írni
Dim Fel As Byte
Dim Le As Byte
Dim Jobb As Byte
Dim Bal As Byte
Dim Ent As Byte

Dim Full As Integer
Dim Resz As Byte
Dim Go As Byte
Dim Szint As Integer


   Echo Off
'Csipogo
   Config Portc.7 = Output
   Portc.7 = 0
   Speaker Alias Portc.7
'LED
   Config Portd.3 = Output
   Portd.3 = 0
   Led Alias Portd.3


'I2C settings
   Config I2cdelay = 10                                     'slow mode:10
   Config Scl = Portc.0                                     'SCL
   Config Sda = Portc.1                                     'SDA

'I2C_LCD

   $lib "#lcd_i2c-bl_mcpduo.lib"                            'MCP23017(40)+MCP23008(4E)
   Const _i2c_lcd_address_w40 = &B01000000                  'MCP23017
   Const _i2c_lcd_address_w4e = &B01001110                  'MCP23008
   'Const _i2c_lcd_bl = 0
   Const _i2c_lcd_bl = 1                                    'Backlight yes/no
   Config Lcd = 20 * 4 , Chipset = Ks077

Config Pind.2 = Input
Config Int0 = Falling
Enable Int0
On Int0 Szamoljunk


   I2cinit
   I2cstart
   I2cstop
   Initlcd
   Waitms 500
   Initlcd

   Set Led
   Wait 1
   Reset Led

   Cls
   Locate 1 , 1
   Lcd "Hopper counter v 1.0"
   Locate 2 , 6
   Lcd "Keszítette"
   Locate 3 , 4
   Lcd "Gyugel Zsolt"
   Locate 4 , 7
   Lcd "2011.07."
   Gosub Csipog1
   Wait 1
   Cls

   Sz1 = 0


   Tmp_gomb = &B11111111

   Full = 500
   Resz = 20
   Go = 0
   Szint = Full
   Fut = 0
   Irni = 1

   Set Out1
   Set Out2
   Locate 1 , 1
   Lcd "Maximum:" ; Full
   Locate 1 , 14
   Lcd "resz:" ; Resz
   Locate 2 , 1
   Lcd "Szamlalas inditasa"


Do
      'I2C_lcd_gomb

      Const _i2c_lcd_address_w = &B01000000
      I2cstart
      I2cwbyte _i2c_lcd_address_w40
      I2cwbyte &H12
      I2cstop
      Waitms 25
      I2cstart
      Gomb = _i2c_lcd_address_w40 + 1
      I2cwbyte Gomb
      I2crbyte Gomb , Nack
      I2cstop
      If Tmp_gomb <> Gomb Then
         Tmp_gomb = Gomb
         If Gomb.7 = 1 Then
            Ent = 1
            Set Out3
            Fut = 1
            Irni = 1
         Else
            Ent = 0
         End If

      End If
   If Fut = 1 Then
      Locate 2 , 11
      Lcd "folyik..."
   Else
      Locate 2 , 11
      Lcd "inditasa"
      Locate 4 , 15
      Lcd " "
   End If

   If Irni = 1 Then
      Irni = 0
      Locate 3 , 8
      Lcd "Szint:" ; Szint

      Locate 4 , 8
      Lcd "Resz :"
      If Sz1 < 10 Then
         Locate 4 , 16
      Else
         Locate 4 , 15
      End If
      Lcd Sz1
   End If

Loop

'megszakítás rutin
Szamoljunk:
   If Fut = 1 Then
      'Incr Sz1
      'Decr Szint
      Szint = Szint - 1
      Sz1 = Sz1 + 1

      Irni = 1
      If Sz1 = 20 Then
         Reset Out3
         Fut = 0
      End If
   End If

Return



Csipog1:
   Sound Speaker , 100 , 1000                               'make some noice
   Sound Speaker , 100 , 1200                               'make some noice
Csipog2:
   Sound Speaker , 100 , 1000                               'make some noice
Return
Szóval lövésem sincs, hogy a programmal van a gond, vagy esetleg egy felhúzó ellenállásra lenne szükség?
Várom az ötleteket! :)
Üdv:
Zsolt
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

A felhúzó r 10Kohm nagyon kel!
az opto csak a GND-re kapcsolja a Bemenetet.

De legalább ennyi kiegészítés:

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

Config Pind.2 = Input
Set Pind.2                                                  'belsö felhuzó r bekapcs.
Config Int0 = Falling
Avatar
strigo
DrótVégénSzéndarab
Hozzászólások: 27
Csatlakozott: 2006. február 17. péntek, 7:00

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

Köszönöm a gyors választ!
A működést egy sor beszúrása oldotta meg:

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

Enable  Interrupts
Üdv:
Zsolt
Válasz küldése