www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Povezovanje dveh mikrokontrolerjev

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jun 22, 2009 11:32 pm    Naslov sporočila:  Povezovanje dveh mikrokontrolerjev Odgovori s citatom

Pozdarvljeni,

Naredil sem Uart povezavo na računalnik in s terminalom lahko berem in pošiljam signale.
Naredil sem, da ob dolečenih številkah se zgodi določeno na mikrokontrolerju.
(z računalnika dela vse)

Potem sem pa naredil, da pošilja čip enake cifre, pa sem ugotovil, da poleg tiste cifre pošlje na koncu še 13 in 10 če gledamo desetiški sestav.
A = Inkey() 'cakam na ASCII vrednost na UARTu
If A > 0 Then 'ce smo nekaj dobili…
Print A
(program za test) pa če gledam dohodni podatki je recimo za mali "a" 97, ko pa printa je pa 97, 13, 10)

Če pošlem pa (A = 97) pošle pa pa po cifran, najprej 9 pol 7 pol pa še 13 in 10)

Zanima me, kako bo lahko naredil komunikacijo, na bolj preprost način.

Tole sem si zamislil bolj tako testni program, (še veliko za dodelat)
pa se ne obnese.
(1. čip)
'$sim
$regfile = "m8def.dat"
$crystal = 16000000
$baud = 9600

Config Portc = Input

Dim A As Word

Naprej Alias Pinc.0
Naprejlevo Alias Pinc.1
Naprejdesno Alias Pinc.2
Nazaj Alias Pinc.3
Nazajlevo Alias Pinc.4
Nazajdesno Alias Pinc.5


Do

If Naprej = 1 Then
A = 131
End If
If Naprejlevo = 1 Then
A = 132
End If
If Naprejdesno = 1 Then
A = 133
End If
If Nazaj = 1 Then
A = 134
End If
If Nazajlevo = 1 Then
A = 135
End If
If Nazajdesno = 1 Then
A = 136
End If
If Naprej = 1 Or Naprejlevo = 1 Or Naprejdesno = 1 Or Nazaj = 1 Or Nazajlevo = 1 Or Nazajdesno = 1 Then
nop
Else
A = 0
End If
Print A

Loop
--------------------------------
(2.čip)
'$sim
$regfile = "m8def.dat"
$crystal = 16000000
$baud = 9600

Config Portc = Output

Dim A As Byte
Naprej Alias Portc.0
Naprejlevo Alias Portc.1
Naprejdesno Alias Portc.2
Nazaj Alias Portc.3
Nazajlevo Alias Portc.4
Nazajdesno Alias Portc.5

Do
A = Inkey()
If A = 131 Then
Naprej = 1 'ce smo nekaj dobili…
Else
Naprej = 0
End If

A = Inkey()
If A = 132 Then
Naprejlevo = 1 'ce smo nekaj dobili…
Else
Naprejlevo = 0
End If

A = Inkey()
If A = 133 Then
Naprejdesno = 1 'ce smo nekaj dobili…
Else
Naprejdesno = 0
End If

A = Inkey()
If A = 134 Then
Nazaj = 1 'ce smo nekaj dobili…
Else
Nazaj = 0
End If

A = Inkey()
If A = 135 Then
Nazajlevo = 1 'ce smo nekaj dobili…
Else
Nazajlevo = 0
End If

A = Inkey()
If A = 136 Then
Nazajdesno = 1 'ce smo nekaj dobili…
Else
Nazajdesno = 0
End If
Loop

Hvala, LP

_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
strobos
Član
Član



Pridružen-a: Sre 24 Sep 2003 12:19
Prispevkov: 726
Aktiv.: 3.06
Kraj: Brežice

PrispevekObjavljeno: Tor Jun 23, 2009 2:06 am    Naslov sporočila:   Odgovori s citatom

Pozdrav,

tista dva znaka sta ukaza za novo vrstico (13, 10). Da jih kontroler ne bo pošiljal, moraš dodati še podpičje Print A;
V sprejemnem kontrolerju pa bo lepše, če boš uporabil case stavek

do
A = Inkey()
select case A
case 131:Naprej = 1
case 132:Naprejlevo = 1
...
...
end select
loop

Zelo priporočljivo bi bilo, če bi zamenjal kristala za npr. 11.0592 MHz ali katerega, ki je tudi narejen za uart komunikacijo in potem boš lahko prenašal podatke z višjo hitrostjo brez napak.
Namesto ukaza Print lahko uporabiš Printbin za oddajanje in Inputbin za sprejem.

Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Tor Jun 23, 2009 9:46 am    Naslov sporočila:   Odgovori s citatom

strobos je napisal/a:
...
Zelo priporočljivo bi bilo, če bi zamenjal kristala za npr. 11.0592 MHz ali katerega, ki je tudi narejen za uart komunikacijo in potem boš lahko prenašal podatke z višjo hitrostjo brez napak...


Če sta mikrokontrolerja enaka (ista družina), imata enak kristal in enako nastavljen baud-rate, potem bo komunikacija skoraj brez napak tudi pri višjih hitrostih (ne glede na kristal).

_________________
Lp,
Matevž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
dkone
Član
Član



Pridružen-a: Sre 07 Mar 2007 18:53
Prispevkov: 2116
Aktiv.: 9.51
Kraj: Krško

PrispevekObjavljeno: Tor Jun 23, 2009 2:28 pm    Naslov sporočila:   Odgovori s citatom

A je kdo probal med sabo povezati preko I2C? Bascom-AVR?
_________________
Denis
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Tor Jun 23, 2009 3:16 pm    Naslov sporočila:   Odgovori s citatom

heh, jaz ne, sej sem se šele zdej začel ukvarjat iz rs232 Razz
strobos, NeoTO hvala. Dela kakor sem si zamislil.

_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jun 25, 2009 10:18 pm    Naslov sporočila:   Odgovori s citatom

Zanima me še nekej. Brskam po helpu, pa bo precej hitreje, če tukaj vprašam.
Enkrat mi je profesor omenil nek ukaz, s katerim naredi, da mikrokontroler varčuje z energijo. (verjetno v primeru, da dalj časa ni sprememb za ukrepat)
Naj bi zdržal z 9V baterijo tudi do enega leta.
Hvala Lp

_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
strobos
Član
Član



Pridružen-a: Sre 24 Sep 2003 12:19
Prispevkov: 726
Aktiv.: 3.06
Kraj: Brežice

PrispevekObjavljeno: Čet Jun 25, 2009 10:31 pm    Naslov sporočila:   Odgovori s citatom

Ukazi so Power down, Power save, Idle in ša kakšen bi se našel. Moraš pa v helpu prebrat kaj posamezen ukaz naredi.
Če hočeš, da boš z 9V baterijo kontroler poganjal eno leto, bo moral večino časa spati Mr. Green .

Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Pet Jun 26, 2009 2:41 pm    Naslov sporočila:   Odgovori s citatom

Aha, si bom pogledal, hvala zaenkrat Smile
_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jul 27, 2009 10:42 pm    Naslov sporočila:   Odgovori s citatom

Pozdrav, po nekej časa
naredil sem zdej povezavo in deluje odlično.
Zamislil sem si, da bi dal vmes še pwm modulacijo in sicer dela, ADC je 10 biten, prav tako tudi pwm. Ko sem simuliral iz terminala, sem naredil, da vrednost pomnoži iz 8, tako da je največja vrednost 127. In zadeva je delovala kakor sem si jo zamislil. Ko sem naredil "oddajnik" je prišlo pa do nekakšnih težav. Vrednost ADC sem delil iz 8 in ko jo pošlem z ukazom printbin pošle 2 številki, če shranim kot byte pa samo 1.
1024 mislim da je 255 4 (verjetno 255× 4)
Zanima me, kako bi naredil da bi adc delil z 8, ali pa iz 4 in rezultat poslal po uartu, da bi bila samo 1 številka (vrednosti od 0 - 255)
Moj nov program:
oddajnik:
'$sim
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
Config Portd = Input
Config Portc.5 = Output

Config Adc = Single , Prescaler = Auto , Reference = Aref
Dim Adc0 As Word
Dim A As Byte
Dim B As Word
Dim J As Byte
Print "test"

Naprej Alias Pind.2
Nazaj Alias Pind.3
Levo Alias Pind.4
Desno Alias Pind.5

Do
Portc.5 = 0
Gosub Poizvedba_stanj
'pošlemSTART
Printbin 110
J = Adc0
'pošlem vrednost adc za pwm
Printbin J
'Treba poslat številka case
'NAPREJ
If A = 8 Then
Printbin 97
End If
'NAZAJ
If A = 4 Then
Printbin 100
End If
'NAPREJLEVO
If A = 10 Then
Printbin 98
End If
'NAPREJDESNO
If A = 9 Then
Printbin 99
End If
'NAZAJLEVO
If A = 6 Then
Printbin 101
End If
'NAZAJDESNO
If A = 5 Then
Printbin 102
End If
'STOJ!!!
If A = 16 Then
Printbin 103
End If



Portc.5 = 1
Waitms 10
'Waitms 1000
Loop

Poizvedba_stanj:
Adc0 = Getadc(0)
If Naprej = 0 And Nazaj = 0 And Levo = 0 And Desno = 0 Then
A = 16
End If
If Naprej = 0 And Nazaj = 0 And Levo = 0 And Desno = 1 Then
A = 1
End If
If Naprej = 0 And Nazaj = 0 And Levo = 1 And Desno = 0 Then
A = 2
End If
If Naprej = 0 And Nazaj = 0 And Levo = 1 And Desno = 1 Then
A = 3
End If
If Naprej = 0 And Nazaj = 1 And Levo = 0 And Desno = 0 Then
A = 4
End If
If Naprej = 0 And Nazaj = 1 And Levo = 0 And Desno = 1 Then
A = 5
End If
If Naprej = 0 And Nazaj = 1 And Levo = 1 And Desno = 0 Then
A = 6
End If
If Naprej = 0 And Nazaj = 1 And Levo = 1 And Desno = 1 Then
A = 7
End If
If Naprej = 1 And Nazaj = 0 And Levo = 0 And Desno = 0 Then
A = 8
End If
If Naprej = 1 And Nazaj = 0 And Levo = 0 And Desno = 1 Then
A = 9
End If
If Naprej = 1 And Nazaj = 0 And Levo = 1 And Desno = 0 Then
A = 10
End If
If Naprej = 1 And Nazaj = 0 And Levo = 1 And Desno = 1 Then
A = 11
End If
If Naprej = 1 And Nazaj = 1 And Levo = 0 And Desno = 0 Then
A = 12
End If
If Naprej = 1 And Nazaj = 1 And Levo = 0 And Desno = 1 Then
A = 13
End If
If Naprej = 1 And Nazaj = 1 And Levo = 1 And Desno = 0 Then
A = 14
End If
If Naprej = 1 And Nazaj = 1 And Levo = 1 And Desno = 1 Then
A = 15
End If
Return
-------
sprejemnik:
'$sim
$regfile = "attiny2313.dat"
$crystal = 8000000
$baud = 9600
Config Portb = Output
Enable Timer1
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Prescale = 64
Portb = 0


Dim A As Byte
Dim B As Word
Dim C As Word
Dim D As Word
Print "test"
Motorp Alias Portb.3
Motorm Alias Portb.4
Tuljavap Alias Portb.2
Tuljavam Alias Portb.1


Do
A = Inkey()
If A > 0 Then
Print A

'START programa
If A = 110 Then
Print "program štartan"
B = Waitkey()
'Print "je enako:" ; B
Print "vrednost PWM-ja" ; B
A = Waitkey()
Print "selekt case A = " ; A
If A > 99 Then
If A < 103 Then
B = 1024 - B
Print "B po deljenju umes u casah Very Happy " ; B
End If
End If
Select Case A
Case 97 : Gosub Naprej
Case 98 : Gosub Naprejl
Case 99 : Gosub Naprejd
Case 100 : Gosub Nazaj
Case 101 : Gosub Nazajl
Case 102 : Gosub Nazajd
Case 103 : Gosub Stoj
Case Else : Gosub Cistfalen
End Select

End If
End If

Loop




Naprej:
Pwm1a = B 'Motorp
Motorm = 0
Tuljavap = 0
Tuljavam = 0
Return
Naprejl:
Pwm1a = B 'Motorp = Pwm1a
Motorm = 0
Tuljavap = 0
Tuljavam = 1
Return
Naprejd:
Pwm1a = B 'Motorp = Pwm1a
Motorm = 0
Tuljavap = 1
Tuljavam = 0
Return
Nazaj:
Pwm1a = B
Motorm = 1
Tuljavap = 0
Tuljavam = 0
Return
Nazajl:
Pwm1a = B
Motorm = 1
Tuljavap = 0
Tuljavam = 1
Return
Nazajd:
Pwm1a = B
Motorm = 1
Tuljavap = 1
Tuljavam = 0
Return
Stoj:
Pwm1a = 0
Motorm = 0
Tuljavap = 0
Tuljavam = 0
Return

Cistfalen:
Print "Nima mujo sreče"
Return

----

Hvala, lep pozdrav

_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.67
Kraj: KOPER

PrispevekObjavljeno: Pet Jul 31, 2009 1:57 pm    Naslov sporočila:  pisanje in prilaganje kode Odgovori s citatom

Dostikrat so pripete kode nepregledne:

naprimer:

Koda:


If Naprej = 1 And Nazaj = 1 And Levo = 0 And Desno = 0 Then
A = 12
End If

'to zapišite tako da bo pregledno:

If Naprej = 1 And Nazaj = 1 And Levo = 0 And Desno = 0 Then
   A = 12
End If

' ali pa še bolje:

If Naprej = 1 And Nazaj = 1 And Levo = 0 And Desno = 0 Then A = 12

' ko pa imamo pogoj v pogoju pa napišite:

If Naprej = 1 And Nazaj = 1 And Levo = 0 And Desno = 0 Then
   A = 12
   If Naprej = 1 And Nazaj = 1 And Levo = 0 And Desno = 0 Then
      A = 12
     If Naprej = 1 And Nazaj = 1 And Levo = 0 And Desno = 0 Then
        A = 12
     End If
   End If
End If


tako napisani programi so bolj pregledni za tistega ki piše in tistega ki gleda program !

_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Sob Avg 01, 2009 11:28 am    Naslov sporočila:   Odgovori s citatom

Ja.. naj razložim kako sem si ga zamislil. Delno sem provizorično rešil problem, vendar ni to - to.
Pri oddajniku gre najprej na "poizvedba stanj" v tem podprogramu dobi informacije o stanjih.
Adc0 = Getadc(0) - kolikor naj bo pwm, vse ostalo dol je pa logična tabela, ki določi A za določeno kombinacijo.
printbin 110 sem naredil, da "se program štarta" pri sprejemniku gre naprej, ko dobi za inkey 110. Po te številki v vrstnem redu sledi vrednost pwm, nato pa selekt case. V mojem primeru imam tukaj težavo, ker ne znam narediti, da bi resolucijo ad in pwm skrčil na 8 bitov, tako do bi imel samo eno številko. če številko delim z 4 dobim od 0 do 255, vendar je še vedno ta številka word, če dam shraniti v drugo spremenljivko, ki je byte imam 2 številke. 1. je potem 0-32 druga je več čas 0, ker deli vsako posebaj.

Trenutno sem program še malo dodelal, ga bom zakomentiral in uredil, pa ga pošlem v priponki, da ne bom raztegnil teme.

Hvala

_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.67
Kraj: KOPER

PrispevekObjavljeno: Sob Avg 01, 2009 1:41 pm    Naslov sporočila:   Odgovori s citatom

Poskusi tako:

Koda:


Dim Adc0 As Word
Dim Adc0_byte(2)as Byte At Adc0 Overlay
dim i as byte

' pošlješ pa tako:

  For I = 0 To 1
     Printbin Adc0_byte(i)' poslal bo dva bajta z vsebino Adc0
  Next I


Pa na koncu pošiljanja pošlji še 13, 10 . nekateri terminali ne delajo brez tega!

_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.67
Kraj: KOPER

PrispevekObjavljeno: Sob Avg 01, 2009 3:00 pm    Naslov sporočila:   Odgovori s citatom

Ni mi dalo miru, pa sem malo popravil. Upam da ti bo to kaj koristilo.

Koda:


$regfile = "m8def.dat"
$crystal = 11059200
$hwstack = 52                           ' default use 32 for the hardware stack
$swstack = 30                           ' default use 10 for the SW stack
$framesize = 65
'$programmer = 7
$baud = 57600

Config Portb = Output

Enable Timer1
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Prescale = 64

Config Timer2 = Timer , Prescale = 64
On Ovf2 Tim2_isr
Enable Timer2

Portb = 0


Dim A As Byte
Dim B As Word
Dim C As Word
Dim D As Word
Dim Rs_rxbuffer(255) As Byte
Dim Idx_rx_in As Byte
Dim Idx_rx_in_m As Byte
Dim Rs_rx_flag As Bit
Dim Sek_f As Bit , S_sek As Byte , S_2ms As Word
Dim Pwm0 As Word
Dim Pwm0_byte(2)as Byte At Pwm0 Overlay


Print "test"
Motorp Alias Portb.3
Motorm Alias Portb.4
Tuljavap Alias Portb.2
Tuljavam Alias Portb.1


Do

 If Rs_rx_flag = 1 Then                 'KO JE SPREJETA SEKVENCA SE TU ZAČNE IZVAJANJE
    Reset Rs_rx_flag                    'PROGRAMA
    A = Rs_rxbuffer(idx_rx_in_m)
    If A = 110 Then
      Print "program štartan"
      Incr Idx_rx_in_m                  ' povečam index lokacije kjer so  vpisani sprejemni podatki
      Pwm0_byte(1) = Rs_rxbuffer(idx_rx_in_m)
      Incr Idx_rx_in_m                  ' povečam index lokacije kjer so  vpisani sprejemni podatki
      Pwm0_byte(2) = Rs_rxbuffer(idx_rx_in_m)
      Print "vrednost PWM-ja" ; Pwm0
      Incr Idx_rx_in_m
      A = Rs_rxbuffer(idx_rx_in_m)
      Print "selekt case A = " ; A
         ' ne vem točno kaj si hotel narediti v tem if stevku
       '  If A > 99 Then
       '     If A < 103 Then
       '        B = 1024 - B
       '        Print "B po deljenju umes u casah  "

       '     End If
       '  End If


         'predvidevam da hočeš poslati vrednost pwm
         Print Bin(pwm0_byte(1))
         Print Bin(pwm0_byte(2))


         Select Case A
            Case 97 : Gosub Naprej
            Case 98 : Gosub Naprejl
            Case 99 : Gosub Naprejd
            Case 100 : Gosub Nazaj
            Case 101 : Gosub Nazajl
            Case 102 : Gosub Nazajd
            Case 103 : Gosub Stoj
            Case Else : Gosub Cistfalen
         End Select

    End If
 '  End If


    Idx_rx_in_m = 0                     ' zbrisemo oba indeksa ce imamo kratek sprejemni buffer
    Idx_rx_in = 0                       '

 End If

'START programa

Loop




Naprej:
   Pwm1a = B 'Motorp
   Reset Motorm
   Reset Tuljavap
   Reset Tuljavam
Return
'********************************************
Naprejl:
   Pwm1a = B 'Motorp = Pwm1a
   Reset Motorm
   Reset Tuljavap
   Set Tuljavam
Return
'********************************************
Naprejd:
   Pwm1a = B                            'Motorp = Pwm1a
   Motorm = 0
   Tuljavap = 1
   Tuljavam = 0
Return
'********************************************
Nazaj:
   Pwm1a = B
   Motorm = 1
   Tuljavap = 0
   Tuljavam = 0
Return
'********************************************
Nazajl:
   Pwm1a = B
   Motorm = 1
   Tuljavap = 0
   Tuljavam = 1
Return
'********************************************
Nazajd:
   Pwm1a = B
   Motorm = 1
   Tuljavap = 1
   Tuljavam = 0
Return
'*******************************************
Stoj:
   Pwm1a = 0
   Motorm = 0
   Tuljavap = 0
   Tuljavam = 0
Return
'********************************************
Cistfalen:
   Print "Nima mujo sreče"              ' mujo mora jos malom studirat
Return

'********************************************
Rec_isr:
 '  Lcd "#"
  A = Inkey()
  If A > 0 Then
     Rs_rxbuffer(idx_rx_in) = A
   '  Lcd Chr(a)
     Incr Idx_rx_in
     If A = 10 Then Set Rs_rx_flag
  End If

 Return                                 'generates a RETI
'----------------------------------------------------------------------------
Tim2_isr:

       Incr S_2ms

       If S_2ms = 1000 Then
          S_2ms = 0
          Incr S_sek
       End If
      ' If Rele = 0 Then Set Rele Else Reset Rele
Return
'----------------------------------------------------------------------------

End

'----




_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Predkambrij
Član
Član



Pridružen-a: Ned 24 Maj 2009 14:17
Prispevkov: 129
Aktiv.: 0.66
Kraj: Ljubljana

PrispevekObjavljeno: Ned Avg 02, 2009 10:34 pm    Naslov sporočila:   Odgovori s citatom

a... hvala, bom rabil nekaj časa da preštudiram.
Moja začasna rešitev ja bila ta, da sem dejansko skalkuliral tiste dve številki. Dejansko imam zdaj 10 bitno resolucijo. Terminal mi deluje tudi če ne pošlem 13 in 10, ker lahko opazujem tudi dobljene številke v desetiškem sestavu. (znaki se nadaljujejo v isti vrstici)
Citiram:
Do
Starta: 'to je moja provizorična rešitev. Vsakič, ko je prišlo do napake v uart-u in je 2. številka iz adc večja od 3 (ker ne sme biti) se program zažene od začetka.
A = Waitkey() 'počaka na številko z UART-a
Print A 'izpis dobljene številke
'START programa
If A = 110 Then 'ko dobimo številko 110, se program zažene, sicer preskoči cel program in znova probava, če je pogoj izpolnjen.
Print "program štartan" 'ko dobimo številko 110 pošlem "program štartan", da lahko opazujem na terminalu, kje je program
C = Waitkey() : Print "Vrednost c: " ; C 'moja provizorična rešitev
D = Waitkey() : Print "Vrednost d: " ; D
If D > 3 Then : Jmp Starta : End If
B = D * 256
B = B + C
Print "vrednost PWM-ja: " ; B
A = Waitkey()
Print "selekt case A: " ; A


'********

'V tem delu sem obrnil vrednost 0 + B za naprej 1 - B za nazaj. Saj res!!! morebit mi pa ravno ta stavek nagaja. Ker pri vožnji naprej dela program brezhibno, v vzvratni vožnji pa velikokrat pride do napak in mi pomaga stavek, ki sem ga odebelil. Bom še malo razmislil, kako bi tole drugače naredil. (99-103 so case za nazaj.)

If A > 99 Then
If A < 103 Then
B = 1024 - B
Print "B po deljenju umes u casah Very Happy " ; B
End If
End If
'********
Naprej se nadaljuje enako.
Select Case A


Vprašal bi še, če je kakšna razlika med Npr.: A = 1 ali set A (set je bit) v velikosti prevedene kode?

Hvala za pomoč, rabil bom nekaj časa da jo preštudiram, vsekakor mi bo pa prav prišla (trenutno je še ne razumem preveč) - veliko mi bo pomagal tudi help
Lp

_________________
bivši englishman
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group