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 

Svašta! Debounce ustavi program...?!?!?! [Bascom]

 
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
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5529
Aktiv.: 24.06
Kraj: Domzale

PrispevekObjavljeno: Sre Nov 14, 2007 3:59 pm    Naslov sporočila:  Svašta! Debounce ustavi program...?!?!?! [Bascom] Odgovori s citatom

LP!

Napisan imam en precej kompleksen program (GSM modem, vhodi z debounce, komunikacija s PCjem, ...), ki pa mi občasno zamrzuje. Sedaj sem se vrgel v odpravo napak in ugotovil sledeče:

Po šestih pritiskih na katerokoli od tipk (isti register, lahko različne tipke, lahko tudi ista) se delovanje programa upočasni (v glavni zanki sem naredil en watchdog, ki ob vsakem prehodu glavne zanke spremenljivko poveča za 1; od začetka gre zelo hitro, po šestih pritiskih pa se upočasni in po osmih (še dveh) se procesor resetira). Po še dveh pritiskih (na tipko) procesor zamrzne (za par sekund), nato pa se resetira.

Kaj bi to bilo??? Isto se zgodi, če namesto debounce ukaza uporabim if strukturo.
Sem naprogramiral že kar nekaj zadev, ampak tole mi je pa dalo vode pit...

Lp, Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.70
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Sre Nov 14, 2007 4:11 pm    Naslov sporočila:   Odgovori s citatom

Stack overflow?

Jur
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5529
Aktiv.: 24.06
Kraj: Domzale

PrispevekObjavljeno: Sre Nov 14, 2007 4:14 pm    Naslov sporočila:   Odgovori s citatom

Kje naj bi to videl?
Sem sumil na nekaj podobnega, ampak kaj zdaj?
Našel sem ukaz stcheck in se bom malo poigral z njim. Zna biti res to - soft stack...
Se da kako enostavno sprostiti resource, potem ko je podprogram zaključen?

LP, grega

p.s. Fju... To bo to... Sem umaknil nekaj SUB procedur in sedaj zadeva deluje dalj časa... 14 pritiskov... Wink Gremo dalje...


Nazadnje urejal/a mucek Sre Nov 14, 2007 4:29 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.70
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Sre Nov 14, 2007 4:25 pm    Naslov sporočila:   Odgovori s citatom

mucek je napisal/a:
...Se da kako enostavno sprostiti resource, potem ko je podprogram zaključen? LP, grega

RETURN ukaz na koncu sprosti resource (predvsem tiste od stacka), ko je podprogram zaključen.
Pogosta napaka je, da iz procedure skočiš ven z goto ali kako drugače, namesto z RETURNom.

Jur
____________
goto stack
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Sre Nov 14, 2007 5:49 pm    Naslov sporočila:   Odgovori s citatom

Bascom zna generirati .ASM?
Sicer še nisem poizkušal, ampak ali se da v AVR Studio uvoziti HEX?
Tam imaš še kar uporaben simulator.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3360
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Sre Nov 14, 2007 7:01 pm    Naslov sporočila:  Vprašanje Odgovori s citatom

Vprašanje, s katerim želim pomagati sebi, tebi ne morem, ker veš več kot jaz.

Kot vidim, Mucek, komuniciraš a dve strani hkrati, GSM in PC.
Zanima me, ali uporabljaš mikro z dvema hardwarskima uartoma, ali si pomagaš s software uartom, ker imam podoben problem jaz sam, in se že kar dolgo mučim, kako bi software uart prapravil do tega, da bi delal podobno kot hwuart.

Če imaš izkušnje s swuartom, na kaj je potrebno paziti, ker meni ne gre in ne gre!

Pozdrav
vs
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5529
Aktiv.: 24.06
Kraj: Domzale

PrispevekObjavljeno: Sre Nov 14, 2007 10:13 pm    Naslov sporočila:   Odgovori s citatom

LP!

Vilko - uporabljam uC z dvema HW UARToma, tako da ti žal ne bom mogel pomagati... Enkrat sem se na M8515 tudi sam ubadal s tem, da sem rabil imeti priklopljeni tri stvari hkrati (comp, doppler radar in še veliki display) in sem zadevo rešil po kmečko - radar je le oddajal (je šel na RX), display le sprejemal (je šel na TX), ko pa sem želel narediti povezavo na računalnik (za nastavljanje parametrov, pobiranje statistik, ...) sem pa RX in TX preko releja preklopil na drug priključek (seveda po ukazu iz samega programa). Seveda takrat naprava ni delovala (merila). Kot se spomnim, je uporaba SW UARTa opisana v knjigi od Bascoma (sem imel hrvaško verzijo - ne vem, kam mi je izginila), vendar si verjetno to že našel...

Jur - RETURN na koncu podprogramov sem vedno (!) uporabljal, pa ni pomagalo nič! Oziroma čudo od čuda - ko sem return ukaze spremenil v GOTO je bilo precej bolje! Mad
Jutri se vržem v zadevo še enkrat in pridem stvari do dna. S precej GOTO ukazi zadeva zdaj sicer dela ok (no, bomo videli jutri, sem pustil laufat čez noč...), a je program precej bolj nepregleden kot je bil prej.

LP, Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Čet Nov 15, 2007 12:35 am    Naslov sporočila:   Odgovori s citatom

Vilko - vcasih si se ukvarjal z x51 arhitekturo (8051 in sorodstvo). Med njimi je *mnogo* predstavnikov z dvema HW UARToma ... druga stvar pa je, ali Bascom to zna podpreti. Morda je cas za zamenjavo orodja ?
_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5529
Aktiv.: 24.06
Kraj: Domzale

PrispevekObjavljeno: Čet Nov 15, 2007 9:15 am    Naslov sporočila:   Odgovori s citatom

Sokrat, Bascom mi prav lepo krmili tudi 4 HW UARTe na M2560... Wink

Primer sample kode...

Koda:
'-----------------------------------------------------------------------------------------
'name                     :
'copyright                : (c) 1995-2007, MCS Electronics
'purpose                  : test for M2560 support
'micro                    : Mega2560
'suited for demo          : yes
'commercial addon needed  : no
'-----------------------------------------------------------------------------------------

$regfile = "m2560def.dat"                                   ' specify the used micro
$crystal = 8000000                                          ' used crystal frequency
$hwstack = 40                                               ' default use 32 for the hardware stack
$swstack = 40                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space


'$timeout = 1000000

'The M128 has an extended UART.
'when CO'NFIG COMx is not used, the default N,8,1 will be used
Config Com1 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com3 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com4 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Enable Interrupts
Config Serialin = Buffered , Size = 20
Config Serialin1 = Buffered , Size = 20 , Bytematch = 65
Config Serialin2 = Buffered , Size = 20 , Bytematch = 66
Config Serialin3 = Buffered , Size = 20 , Bytematch = All


'Open all UARTS
Open "COM2:" For Binary As #2
Open "COM3:" For Binary As #3
Open "COM4:" For Binary As #4


Print "Hello"                                               'first uart
Dim B1 As Byte , B2 As Byte , B3 As Byte , B4 As Byte
Dim Tel As Word , Nm As String * 16

Config Adc = Single , Prescaler = Auto
Tel = Getadc(0)
Tel = Getadc(8)
Tel = 0
'unremark to test second UART
'Input #2 , "Name ?" , Nm
'Print #2 , "Hello " ; Nm


Do
  Incr Tel
  Print Tel ; " test serial port 1"
  Print #2 , Tel ; " test serial port 2"
  Print #3 , Tel ; " test serial port 3"
  Print #4 , Tel ; " test serial port 4"

  B1 = Inkey()                                              'first uart
  B2 = Inkey(#2)
  B3 = Inkey(#3)
  B4 = Inkey(#4)

  If B1 <> 0 Then
     Print B1 ; " from port 1"
  End If
  If B2 <> 0 Then
     Print #2 , B2 ; " from port 2"
  End If
  If B3 <> 0 Then
     Print #3 , B3 ; " from port 3"
  End If
  If B4 <> 0 Then
     Print #4 , B4 ; " from port 4"
  End If

  Waitms 500
Loop



'Label called when UART2 received an A
Serial1charmatch:
  Print #2 , "we got an A"
Return


'Label called when UART2 received a B
Serial2charmatch:
  Print #3 , "we got a B"
Return


'Label called when UART3 receives a char
Serial3bytereceived:
  Print #4 , "we got a char"
Return


End

Close #2
Close #3
Close #4

$eeprom
Data 1 , 2


LP, Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Čet Nov 15, 2007 10:36 am    Naslov sporočila:   Odgovori s citatom

Mogoče pa je res čas, da greš na jezik C... Rolling Eyes
_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.70
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Čet Nov 15, 2007 2:20 pm    Naslov sporočila:   Odgovori s citatom

mucek je napisal/a:
Jur - RETURN na koncu podprogramov sem vedno (!) uporabljal, pa ni pomagalo nič! Oziroma čudo od čuda - ko sem return ukaze spremenil v GOTO je bilo precej bolje! Mad LP, Grega


Ja, GOTO namesto RETURNa deluje v primeru, če narediš goto na začetek programa, kjer se vse na novo inicializira. Takrat včasih vse deluje, tudi če je stack povožen. Definitivno pa je taka uporaba programiranja slaba. Če ti je z zamenjavo returna v goto program delovalol bolje, to še posebej kaže, da si imel druge logične napake v programu.

V proceduri ni nujno, da je dovolj RETURN samo na koncu. Odvisno od flowa mora biti return še kje vmes, na primer:

Koda:

start:
...some code here
...

//procedura x
...some code here
if pogoj =true then RETURN
...some code here
RETURN


Če pri namesto prvega returna uporabiš goto izven procedure, imaš garantiran problem, čeprav morda ne bo viden:

Koda:

start:
...some code here
...

//procedura x
...some code here
if pogoj =true then GOTO start
...some code here
RETURN


Jur
Nazaj na vrh
Skrit 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: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group