Kérdések, vélemények a 2010-es pályaművekről.

A kész vagy készülő munkákról itt lehet többet olvasni, illetve itt zajlanak a hírdetmények is.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Kérdések, vélemények a 2010-es pályaművekről.

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

Heló Gerry!
Mivel érdekelt a választott téma és meg is szólítottál a megjegyzésben!
Kicsit bele kotyognák a programodba utólag, ha nem haragszol meg érte?
Mert rettenetesen bántó a sok felesleges GOTO benne!

Ha itt Bit változókat használnál:

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

Dim Ir1 As Bit , Ir2 As Bit , …
Akkor itt egyszerűbben kezelhetnéd:

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

Do
Getrc5(address , Command)
   If Address = 5 Then
       Command = Command And &B01111111
       Select Case Command
         Case 1 : Toggle Ir1          'Toggles(inverts) the state of an output pin or bit
         Case 2 : Toggle Ir2
         Case 3 : Toggle Ir3
         Case 4 : Toggle Ir4
         Case 5 : Toggle Ir5
         Case 6 : Toggle Ir6
         Case 7 : Toggle Ir7
         Case 8 : Toggle Ir8
         Case 9 : Toggle Ir9
      End Select
      Goto Mainprog                 'Ha feldolgozta vagy eltérő értéket kap
   End If                                'Visszaugrás a főprogramba
Loop
És ezek elhagyhatók lennének:

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

Nulla1:                                                     
Ir1 = Ir1 + 1
If Ir1 > 1 Then Ir1 = 0
Goto Mainprog
Nulla2:
.....

Gondold át menyivel 1*űbb szebb lenne így a programod!
Különben a HW része nagyon jó a projektnek gratulálok!

(Ha az egész progi megírását nem is vállaltam, ennyit szívesen segítek bármikor!)
8)
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2010. december 14. kedd, 9:23-kor.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Szegő János 8 csatornás logikai analizátor.
Megszakításokban nem figyeled a tömbindexek túllépését!
Ami adatmemória felülírást okozhat!

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

' Megszakítás szubrutin
'-------------------------------------------------------------------------------
Tmr0_interrupt:
   Timer0 = Tmr0_start                                      ' kezdeti érték beállítása
   Toggle Sampling_led                                      ' státusz LED villogtatása
   Sampling_data(address) = Sampling_port                   ' vett minta eltárolása az SRAM-ba
   Address = Address + 1                                    ' memória cím megnövelése

Return
'-------------------------------------------------------------------------------
Tmr1_interrupt:
   Timer1 = Tmr1_start                                      ' kezdeti érték beállítása
   Toggle Sampling_led                                      ' státusz LED villogtatása
   Sampling_data(address) = Sampling_port                   ' vett minta eltárolása az SRAM-ba
   Address = Address + 1                                    ' memória cím megnövelése
Return
Vajon mi van mikor Addres több lesz, mint 1024?
:roll:

És „Address = 0” kezdőérték adás is hibás!
Dim Sampling_data(1024) As Byte ' 1024 elemű tömböt definiál, index 1-1024

(Elnézést nem kötözködni akarok csak érdekesnek találtam a témát!)

A Rádiós projected viszont Klassz!!! :D
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2010. december 13. hétfő, 21:04-kor.
Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00

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

Valóban nem a megszakító rutin végzi az ellenőrzést, hanem a Measure rutin, ami a címhatárnál leállítja a további megszakítást.
Ha már megszólíttattam, el kell mondani, hogy az analizátor felbontása most a kisérleti példány 5 mikroszekundumával szemben már csak 0,5us (assembly nyelvű rutin beépítésével) , és nincs is megszakítás, azt majd a külső triggerelésre tartogatom.
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

Re: Kérdések, vélemények a 2010-es pályaművekről.

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

kapu48 írta:Heló Gerry!
Mivel érdekelt a választott téma és meg is szólítottál a megjegyzésben!
Kicsit bele kotyognák a programodba utólag, ha nem haragszol meg érte?
Mert rettenetesen bántó a sok felesleges GOTO benne!

Ha itt Bit változókat használnál:

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

Dim Ir1 As Bit , Ir2 As Bit , …
Akkor itt egyszerűbben kezelhetnéd:

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

Do
Getrc5(address , Command)
   Command = Command And &B01111111
   If Address = 5 Then
      Select Case Command
         Case 1 : Toggle Ir1          'Toggles(inverts) the state of an output pin or bit
         Case 2 : Toggle Ir2
         Case 3 : Toggle Ir3
         Case 4 : Toggle Ir4
         Case 5 : Toggle Ir5
         Case 6 : Toggle Ir6
         Case 7 : Toggle Ir7
         Case 8 : Toggle Ir8
         Case 9 : Toggle Ir9
      End Select
      Goto Mainprog                 'Ha feldolgozta vagy eltérő értéket kap
   End If                                'Visszaugrás a főprogramba
Loop
És ezek elhagyhatók lennének:

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

Nulla1:                                                     
Ir1 = Ir1 + 1
If Ir1 > 1 Then Ir1 = 0
Goto Mainprog
Nulla2:
.....

Gondold át menyivel 1*űbb szebb lenne így a programod!
Különben a HW része nagyon jó a projektnek gratulálok!

(Ha az egész progi megírását nem is vállaltam, ennyit szívesen segítek bármikor!)
8)
Kedves Kapu48!

Az én programozási tudásom ennyit tett lehetővé!
A Select Case elágazással csak nemrég kezdtem el foglalkozni, belátom egyszerűbb ,mint a goto utasítás. A további fejlesztéseknél igyekszem egyszerűsíteni a programot. Köszönöm építő jellegű hozzászólásod.
Köszönöm!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Hali Szegoj!
Ha már a gyorsítást te megoldottad!
Én a grafikus kijelzésen gondolkoztam.
Jobban mutatna, ha számok helyett görbék ábrázolnák az értékeket.
A Bascom Dosos termináljában még megmaradt néhány grafikus jel.
Ezek közül használhatók:
Chr: 32, 191, 192, 196, 217, 218
1 Bit folyam kirajzoláshoz 2 sort kel kiírni.
Sajnos a Szóköz karakter (Chr(32)) szélessége nem egyezik a többiével!
Ezért a függőleges vonalak kicsit elcsúsznak. Erre kellene még valami megoldás.
Az alábbi próbálkozás 2 Bit-et szimulálna:
1: H, L, L, H
2: L, L, H, H, L

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

$regfile = "m128def.dat"
'$crystal = 16000000
'$regfile = "m644def.dat"
'$crystal = 14740000
$crystal = 11059200

$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40


Dim I As Byte


Print "START"
Print "Bits"

Print 1 ; " " ; Chr(196) ; Chr(191) ; Chr(32) ; Chr(32) ; Chr(32) ; Chr(32) ; Chr(218) ; Chr(196) ; Chr(196)
Print "   " ; Chr(32) ; Chr(32) ; Chr(192) ; Chr(196) ; Chr(196) ; Chr(217) ; Chr(32) ; Chr(32) ; Chr(32)
Print
Print 2 ; " " ; Chr(32) ; Chr(32) ; Chr(32) ; Chr(32) ; Chr(32) ; Chr(218) ; Chr(196) ; Chr(196) ; Chr(191) ; Chr(32)
Print "   " ; Chr(196) ; Chr(196) ; Chr(217) ; Chr(32) ; Chr(32) ; Chr(32) ; Chr(32) ; Chr(32) ; Chr(192) ; Chr(196)

'( Karakter sor Print
For I = 0 To 255

Print I ; " " ; Chr(i)

Next i
')

End      
Terminálban lefuttatva megnézhető a kép!
Szerintem érdemes lenne megírni hozzá a rajzoló rutint!? :idea:
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2010. december 14. kedd, 12:50-kor.
Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00

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

Köszi, Kapu48!

Nagyon klassz, amit írtál. :lol: Ki is fogom próbálni. :lol:

Most éppen grafikus LCD kijelzővel próbálkozom. de a tovább fejlesztésnek másik útja a Terminálos megjelenítés lehet, (eredetileg ezt csak teszt célra gondoltam használni, a kísérletezés idejére).
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 Grafikus LCD is jó megoldás lenne!
Ott megszerkeszthetőek a karakterek és (1 sor / 1 Pin (bit)) elég lenne.
Csak a 8 sorhoz egymás alá jó nagy LCD kellene!
+ a 8sor 1*re SCROL-ozást is meg kell oldani.
:lol:
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Itt az előző ötlet 80%-os kidolgozása!
Mára eddig jutottam!
Véleményt kérek jó lenne? Vagy felejtős?

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

'AnalizatorG2.bas
'8 csatornás logikai görbe rajzolása.
'Rajzolás Bascom Terminálra. FONT: Courier 9 Félkövér (Ez fontos! Mással összetörnek az oszlopok!)
'Nem találtam egyforma széles karakter készletet! Ezért az oszlopok még néhol nem pontosak!
'Még benne vannak az oszloprendezéshez teszt, változok!
'    Szerző: Kapu48

$regfile = "m128def.dat"
'$crystal = 16000000
'$regfile = "m644def.dat"
'$crystal = 14740000
$crystal = 11059200

$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40


' PORTA - LSA mintavételi port   (GPIO-A)
' Port konfiguráció
'-------------------------------------------------------------------------------
'MAX enyi bits fér 1 sorba!
Const Adatbytes = 52            'Mivel még hozzá adódnak véletlen számú szóközök.

' Szubrutin deklarációk
'-------------------------------------------------------------------------------
Declare Sub Hhg                  'Folyamatos H szint
Declare Sub Llg                    'Folyamatos L szint
Declare Sub Hlg                    'H > L átmenet
Declare Sub Lhg                   'L > H átmenet

Sampling_port Alias Pina

Dim Sampling_data(adatbytes) As Byte           ' tömböt definiál
Dim Address As Word           ' mért adatok címregisztere

Dim S0b As Byte , S1b As Byte , S2b As Byte   'String hossz számolás teszt célból
Dim S0t As Byte , S0tt As Byte    'Szóköz korrekcióhoz
Dim S0 As String * 255         'A Ki rajzolandó Stringek
Dim S1 As String * 255
Dim S2 As String * 255
Dim Is1w As Word , Is1wn As Word , Is2b As Byte    'Indexeléshez
Dim Rep As Byte              'Ismétlődés számolása
'
'Random értékek. Mivel még nincs HW a méréshez!
Dim ___rseed As Word : ___rseed = 234         'RND - Véletlen
'Teszthez RND adat feltöltés
For Is1w = 1 To Adatbytes
    Sampling_data(is1w) = Rnd(256)     'Véletlen 0 - 255
Next Is1w

Print "START!"

'0 - 7 Bites = 8 sor
For Is2b = 0 To 7

   Rep = 1
   If Sampling_data(1).is2b = 0 Then     'Ha az első Bit L
      S0 = "L "
      S1 = "  "
      S2 = Chr(196)
      S0b = 2 : S1b = 2 : S2b = 1
    Else                                           'Ha H
      S0 = "H "
      S1 = Chr(196)
      S2 = "  "
      S0b = 2 : S1b = 1 : S2b = 2
   End If
   S0t = 0
   S0tt = 0
   For Is1w = 2 To Adatbytes
      S0t = S0t + 1
      S0tt = S0tt + 1
      If S0tt = 12 Then         'S0 String korrekció
         S0t = 0
         S0tt = 4
        Else
          If S0t = 4 Then
            S0t = 0
            S0 = S0 + " "
            S0b = S0b + 1
          End If
      End If
      Is1wn = Is1w - 1
      If Sampling_data(is1wn).is2b = Sampling_data(is1w).is2b Then       'Ha folyamatos a vonal
         Rep = Rep + 1       'Ismétlés számolása Szóköz korrekcióhoz
         If Sampling_data(is1w).is2b = 0 Then  'Ha L > L  szint

            Gosub Llg
         Else                      'Ha H > H szint

            Gosub Hhg
         End If
       Else                        'Ha átmenet van
         Rep = 0                'Ismétlés számolása  = 0
         If Sampling_data(is1w).is2b = 0 Then    'Ha H > L szint átmenet

            Gosub Hlg
         Else                       'Ha L > H szint átmenet

            Gosub Lhg
         End If
       End If
   Next Is1w
   'Kész 1 sor
   Print "Bit: " ; Is2b
   Print S0 ; S0b        'Teszt célból még ki írjuk a string hosszát
   Print S1 ; S1b
   Print S2 ; S2b
Next Is2b
'




End               'end program

' Grafikus Szubrutinok
'-------------------------------------------------------------------------------
Sub Hhg                   'Folyamatos H szint
   S0b = S0b + 1 : S1b = S1b + 1 : S2b = S2b + 2
   S0 = S0 + "H"
   S1 = S1 + Chr(196)
   S2 = S2 + "  "
   If Rep = 3 Then        'Szóköz korrekció
      S2 = S2 + " "
      S2b = S2b + 1
   End If
   If Rep = 5 Then        'Szóköz korrekció
      S2 = S2 + " "
      S2b = S2b + 1
   End If
End Sub

Sub Llg                       'Folyamatos L szint
   S0b = S0b + 1 : S1b = S1b + 2 : S2b = S2b + 1
   S0 = S0 + "L"
   S1 = S1 + "  "
   If Rep = 3 Then         'Szóköz korrekció
      S1 = S1 + " "
      S1b = S1b + 1
   End If
   If Rep = 5 Then        'Szóköz korrekció
      S1 = S1 + " "
      S1b = S1b + 1
   End If
   S2 = S2 + Chr(196)
End Sub

Sub Hlg                      'H > L átmenet
   S0b = S0b + 1 : S1b = S1b + 1 : S2b = S2b + 1
  S0 = S0 + "L"
  S1 = S1 + Chr(191)                                        '
  S2 = S2 + Chr(192)                                        '
End Sub

Sub Lhg                      'L > H átmenet
   S0b = S0b + 1 : S1b = S1b + 1 : S2b = S2b + 1
  S0 = S0 + "H"
  S1 = S1 + Chr(218)                                        '
  S2 = S2 + Chr(217)                                        '
End Sub
:?
Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00

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

Kapu48!

Nagyon klassz dolgot írtál. :lol:
Sajnos nem volt időm kipróbálni. :oops:
Remélem a hétvégén komolyan tudok a Terminállal foglalkozni. Minden esetre nagyon köszönöm, hogy ilyen lelkes vagy.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Az előző próbálkozással nem sikerült összehozni a sorokat szépen egymás alá! :oops: Itt a javítás!

Szegoj „8 csatornás logikai analizátor.”
2010-es pályaművéhez grafikus kijelző kiegészítés.

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

'AnalizatorG5.bas

'8 csatornás logikai görbe rajzolása. Választható kijelzéssi módokban.
'Rajzolás Bascom Terminálra. FONT: Courier 9 Félkövér (Ez fontos! Mással összetörnek az oszlopok!)
'Nem találtam egyforma széles karakter készletet! Ezért az oszlopok néhol nem pontosak!
'
'    Szerző: Kapu48

$regfile = "m128def.dat"
'$crystal = 16000000
'$regfile = "m644def.dat"
'$crystal = 14740000
$crystal = 11059200

$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40



'-------------------------------------------------------------------------------
'MAX enyi bits fér 1 sorba. Grafikus kijelzésnél!
Const Graphbytes = 28                                       'Mivel még hozzá adódnak véletlen számú szóközök.
'MAX enyi bits fér 1 sorba. Numerikus kijelzésnél!
Const Numbytes = 37
'Beolvasott adatok hossza.
Const Adatbytes = 1036
'1036/28   'Grafikus oldalak száma
Const Kepek = Adatbytes / Graphbytes                        ' (adatbytes / Graphbytes)
'1036/36
Const Numer = Adatbytes / Numbytes                          'Numerikus Oldalak száma
'Karakterek Pixel szélessége
Const Nump = 10                                             '0-1 Pixel szélessége
Const Alp = 10                                              ' "_" Pixel szélessége
Const Ip = 4                                                ' "I" Pixel szélessége
Const Spcp = 4                                              ' " " Pixel szélessége
Const Spcp2 = Spcp * 2                                      ' "  " Pixel szélessége
Const Spcp3 = Spcp * 3                                      ' "   " Pixel szélessége


' Szubrutin deklarációk
'-------------------------------------------------------------------------------
Declare Sub Hhg                                             'Folyamatos H szint
Declare Sub Llg                                             'Folyamatos L szint
Declare Sub Hlg                                             'H > L átmenet
Declare Sub Lhg                                             'L > H átmenet
Declare Sub Pixelek
'Mérő bemenet
' PORTA - LSA mintavételi port   (GPIO-A)
Sampling_port Alias Pina                                    ' Port konfiguráció (Alapból bemenet!)

Dim Sampling_data(adatbytes) As Byte                        ' 1036 elemű tömböt definiál, index 1-1036
Dim Address As Word                                         ' mért adatok címregisztere

Dim S0pixw As Word , S1pixw As Word , S2pixw As Word        'String Pixel hossz számolás
Dim Pixkb As Byte                                           'Stringek közti Pixel különbség

Dim S0 As String * 200                                      'A Ki rajzolandó Stringek
Dim S1 As String * 200
Dim S2 As String * 200
Dim Var As String * 1 , Kar As String * 1 , Bitn As String * 1       'InKey változók
Dim Termk As Word , Termk2 As Word , Termv As Word , Oldal As Byte       'Ki rajzolás kezdete - Vége
Dim Is1w As Word , Is1wn As Word , Is2b As Byte , Is3b As Byte       'Indexeléshez
Dim Repll As Byte , Rephh As Byte , Replh As Byte , Rephl As Byte       'Ismétlődés számolása

'Random értékek. Mivel még nincs HW a méréshez!
Dim ___rseed As Word                                        'RND - Véletlen
 ___rseed = Rnd(1024)
'Teszthez RND adat feltöltés
For Is1w = 1 To Adatbytes
    Sampling_data(is1w) = Rnd(256)                          'Véletlen 0 - 255
Next Is1w

Print "START!"

Do
'Kijelzési módok választás (beállítása)
   Print "   Kel | grafika ( I ) ? " ;                      'Grafikus vagy Numerikus kijelzés
   Var = Waitkey()
   Print
   If Var = "i" Or Var = "I" Then
      Print "   Kel Karakter sor ( I ) ? " ;                'Grafikus + Numerikus kijelzés
      Kar = Waitkey()
      Print
      Print "   Kel Bit szam ( I ) ? " ;                    'Lesz Bit szám kijelzés is.
      Bitn = Waitkey()
      Print

      Termk = 1
      Termv = Graphbytes
      Oldal = 1
'1 Terminál oldalelőkészítése
      For Is3b = 1 To Kepek
         Print
         Print Oldal ; ". Oldal.         Kezdet: " ; Termk ; "      Vege: " ; Termv
'0 - 7 Bits = 8 sor
         For Is2b = 0 To 7
            Repll = 0                                       'Ismétlődések = 0
            Rephh = 0
            Replh = 0
            Rephl = 0
           'Az 1-es Byte(x Bit)
            If Sampling_data(termk).is2b = 0 Then           'Ha az első Byte(x Bit) = L
               S0 = "0"
               S1 = "  "
               S2 = "_"
               S0pixw = Nump                                'Pixel szélesség számolás
               S1pixw = Spcp2
               S2pixw = Alp
               Replh = 1
               Repll = 1
             Else                                           'Ha az első Byte(x Bit) = H
               S0 = "1"
               S1 = "_"
               S2 = "  "
               S0pixw = Nump                                'Pixel szélesség számolás
               S1pixw = Alp
               S2pixw = Spcp2
               Rephh = 1
               Rephl = 1
            End If
            Termk2 = Termk + 1
'1 Byte előkészítése.
            For Is1w = Termk2 To Termv                      'Következő Bytes
               Is1wn = Is1w - 1
               If Sampling_data(is1wn).is2b = Sampling_data(is1w).is2b Then       'Ha folyamatos a vonal
                  If Sampling_data(is1w).is2b = 0 Then      'Ha L > L  szint
                     Repll = Repll + 1
                     Gosub Llg
                  Else                                      'Ha H > H szint
                     Rephh = Rephh + 1
                     Gosub Hhg
                  End If
                Else                                        'Ha átmenet van
                  If Sampling_data(is1w).is2b = 0 Then      'Ha H > L szint átmenet
                     Rephl = Rephl + 1
                     Repll = 1
                     Rephh = 0
                     Gosub Hlg
                  Else                                      'Ha L > H szint átmenet
                     Replh = Replh + 1
                     Rephh = 1
                     Repll = 0
                     Gosub Lhg
                  End If
                End If
            Next Is1w
   'Kész 1 sor
            If Bitn = "i" Or Bitn = "I" Then Print "Bit: " ; Is2b

            Print S1
            Print S2
            If Kar = "i" Or Kar = "I" Then Print S0
         Next Is2b
'Kész 1 oldal
         Print "Vege = (V), Uj Meres = (M), Tovabb ? " ;
         Var = Waitkey()
         Print
         If Var = "m" Or Var = "M" Then Exit For
         If Var = "v" Or Var = "V" Then Exit For

         Termk = Termk + Graphbytes
         Termv = Termv + Graphbytes
         Oldal = Oldal + 1
      Next Is3b
'Kész a mérés kijelzése.
   Else
'Numerikus kijelzés előkészítése.
      Termk = 1
      Termv = Numbytes
      Oldal = 1
     'Oldalak
      For Is3b = 1 To Numer
         Print
         Print Oldal ; ". Oldal.       Sor kezdet: " ; Termk ; ". -   Sor vege: " ; Termv
'0 - 7 Bits = 8 sor
         For Is2b = 0 To 7
            S0 = ""
            S1 = ""
            S2 = ""
'1 Byte előkészítése.
            For Is1w = Termk To Termv                       'Következő Bytes
               If Sampling_data(is1w).is2b = 0 Then
               'Ha L  szint
                     S0 = S0 + "0|"
               Else
               'Ha H szint
                     S0 = S0 + "1|"
               End If
            Next Is1w
'Kész 1 sor

               Print "Bit" ; Is2b ; ": " ;
               Print S0
         Next Is2b
'Kész 1 oldal
         Print "Vege = (V), Uj Meres = (M), Tovabb ? " ;
         Var = Waitkey()                                   'Bármi más karakterre következő oldal.
         Print
         If Var = "m" Or Var = "M" Then Exit For            '"M"-re Új mérés.
         If Var = "v" Or Var = "V" Then Exit For            '"V"-re kilép
        'Következő oldal előkésszítése
         Termk = Termk + Numbytes
         Termv = Termv + Numbytes
         Oldal = Oldal + 1
      Next Is3b
'Kész a mérés kijelzése.
   End If
' "V" -re kilép
Loop Until Var = "v" Or Var = "V"

Print
Print "    *** END PROGRAM! *** "

End                                                         'end program

' String fűző Szubrutinok
'-------------------------------------------------------------------------------
'(  Karakterek:
Alp  = 10   "_" Pixel szélessége
Nump = 10   "0","1" Pixel szélessége
Ip   =  4   "I","." Pixel szélessége
Spcp =  4   " " Pixel szélessége
')
'Folyamatos H szint
Sub Hhg
  'Pixel szélesség számolás
   If Rephh > 5 Then
     S2 = S2 + " "
     S2pixw = S2pixw + Spcp
     Rephh = 0
     Repll = 0
     Rephl = 0
     Replh = 0
   End If
   S0 = S0 + " 1"
   S1 = S1 + "._"
   S2 = S2 + "   "
   S0pixw = S0pixw + Spcp
   S0pixw = S0pixw + Nump
   S1pixw = S1pixw + Ip
   S1pixw = S1pixw + Alp
   S2pixw = S2pixw + Spcp3
   Gosub Pixelek
End Sub

'Folyamatos L szint
Sub Llg
   'Pixel szélesség számolás
   If Repll > 5 Then
     S1 = S1 + " "
     S1pixw = S1pixw + Spcp
     Repll = 0
     Rephh = 0
     Rephl = 0
     Replh = 0
   End If
   S0 = S0 + " 0"
   S1 = S1 + "   "
   S2 = S2 + "._"
   S0pixw = S0pixw + Spcp
   S0pixw = S0pixw + Nump
   S1pixw = S1pixw + Spcp3
   S2pixw = S2pixw + Ip
   S2pixw = S2pixw + Alp
   Gosub Pixelek
End Sub

'H > L átmenet
Sub Hlg
   'Pixel szélesség számolás
   If Rephl > 5 Then
     S1 = S1 + " "
     S2 = S2 + " "
     S1pixw = S1pixw + Spcp
     S2pixw = S2pixw + Spcp
     Rephh = 0
     Repll = 0
     Rephl = 0
     Replh = 0
   End If
   S0 = S0 + " 0"
   S1 = S1 + "   "                                          '
   S2 = S2 + "I_"                                           '
   S0pixw = S0pixw + Spcp
   S0pixw = S0pixw + Nump
   S1pixw = S1pixw + Spcp3
   S2pixw = S2pixw + Ip
   S2pixw = S2pixw + Alp
   Gosub Pixelek
End Sub

'L > H átmenet
Sub Lhg
   'Pixel szélesség számolás
   If Replh > 5 Then
     S1 = S1 + " "
     S2 = S2 + " "
     S1pixw = S1pixw + Spcp
     S2pixw = S2pixw + Spcp
     Rephh = 0
     Repll = 0
     Replh = 0
     Rephl = 0
   End If
   S0 = S0 + " 1"
   S1 = S1 + " _"                                           '
   S2 = S2 + "I  "                                          '
   S0pixw = S0pixw + Spcp
   S0pixw = S0pixw + Nump
   S1pixw = S1pixw + Spcp
   S1pixw = S1pixw + Alp
   S2pixw = S2pixw + Ip
   S2pixw = S2pixw + Spcp2
   Gosub Pixelek
End Sub

'S0 > (S1 vagy S2)? Sor hossz kiigazítás
Sub Pixelek
   If S0pixw > S1pixw Then                                  'Kel S1 korrekció ?
      Pixkb = S0pixw - S1pixw
      If Pixkb > 12 Then
         S1 = S1 + " "
         S1pixw = S1pixw + Spcp
      End If
   End If
   If S0pixw > S2pixw Then                                  'Kel S2 korrekció ?
      Pixkb = S0pixw - S2pixw
      If Pixkb > 12 Then
         S2 = S2 + " "
         S2pixw = S2pixw + Spcp
      End If
   End If
End Sub
Már régóta szerettem volna 1 ilyet építeni!
Elárulnád hol vetted hozzá a mérő csipeszeket?
:lol:
Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00

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

Kapu48!

Köszönöm a programod. :lol:

Jómagam kicsit most "visszaléptem", grafikus kijelző helyett karakteres LCD-vel próbálkozom.
A jelenlegi kétsorossal még elég szegényes a kijelzés, a következő lépés 4 soros lesz.

A terv
Kép

Jelenlegi állapot
Kép
Kép

(Bocs a gyenge képminőségért)
A kijelzett adatok minden irányban léptethetők, soronként illetve karakterenként.

Csipeszeket a HESTRORE-nál lehet venni, 41 illetve 65mm-est.
A hozzászólást 1 alkalommal szerkesztették, utoljára szegoj 2010. december 20. hétfő, 13:15-kor.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Jól néz ki az LCD-n!
És megoldható 1 jel bemenet kirajzolása 1 sorban.
Nem kel kínlódni a keskenyebb szóköz karakterek illesztése miatt sem!
És hordozható marad a masina!

De nekem kellene 1*re a 8 jel kijelzés! Viszont a nagyméretű LCD drága.
És nem fontos a hordozhatóság. De kellene a bemeneteken optokapus leválasztás!
Szóval eltérő igényekhez is igazítható lesz a project.

Írtad, hogy megoldottad a gyorsabb beolvasást!
Majd elkérném, ha lehet!
Ne keljen időt eltöltenem vele!

Köszönöm a bemutatót!
:D
Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00

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

A fél mikroszekundumos rutin, bemutatóba:

http://dl.dropbox.com/u/998596/1.HTML
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Kösz! Ötletadónak jó!
Ez 16MHz-re van belőve?
Mondjuk az én tesztpanelom most csak 3.3V-os a rajtalevő SDRAM miatt.
És ezért csak $crystal = 11059200 tud menni! De ha megépítem az 5V és 16MHz-lesz.
A magasabb mérési sebesség miatt!
:)

Közben kitaláltam, hogy kellene a „Measure” ménűbe + 1 külső trigger jel is választhatóan!
Az már a 9. bemenet lenne! (Megszakításban)
:wink:
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2010. december 20. hétfő, 16:41-kor.
Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00

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

Igen, nálam 16MHz-en megy a mikrovezérlő (Mega32).
Az állapottárolás (ugrással - ciklusszervezés) együtt 6 gépi ciklus, kb. 380us, ennél gyorsabbra már nem lehet csinálni.
Innen a 0,5us-es méréshatár.

Szinkron mérési üzemmódnál a triggereléshez most az 1. csatorna jelét használom, jel célra így 7 bemenet marad. Az él is választható fel-, vagy lefutó.
Válasz küldése