Začatečník

hubacekp
Příspěvky: 259
Registrován: 24 úno 2013, 13:40

Re: Začatečník

Příspěvek od hubacekp »

aby treba v nekterem preruseni neprobehla-neutekla na pozadi DOBA pres nami testovanou mez
Naprosto souhlas. Smysl to má v kódu/cyklu, který trvá <1ms.
Použití ve while((doba % 1000) !=0) si to dokážu představit, ale v if((doba % 1000) !=0) už ne :-)
pgerla
Příspěvky: 400
Registrován: 11 dub 2013, 00:17

Re: Začatečník

Příspěvek od pgerla »

proboha i Kubáč zakazoval používání IF( a != b ) při měření času a Vy to doporučujete začátečníkovi?

... C =A % B se dá použít jen tehdy, když promněnnou A nastavuji SÁM ve svém programu (přičítám,odčítám)

pokud mi A nastavuje externí čítač (hodiny) tak se píše podmínaka

IF ( a <= b ) ...
Pirx
Příspěvky: 181
Registrován: 24 úno 2013, 16:29
Kontaktovat uživatele:

Re: Začatečník

Příspěvek od Pirx »

Co je prosím špatně na kódu:

Kód: Vybrat vše

#define Period100ms 10
#define Period1sec 100

volatile unsigned long Counter;
volatile unsigned char Flag1sec;

void InterruptHandler10ms(void) {
 // ....
 
 Counter++;
 if (!(Counter % Period100ms)) {
  // Delej neco rychleho, (mnohem kratsiho nez 10 ms) kazdych 100ms
 }
 
 if (!(Counter % Period1sec)) {
  Flag1sec = 1; // Info pro hlavni smycku pro provedeni akce PRIBLIZNE kazdou sekundu
 }
 // ....
}
- Rutina InterruptHandler10ms je volaná přerušením každých 10 ms odvozeným od HW čítače použitého procesoru.
- Díky použití MODULO neřeším přetékání proměnné Counter
- Flag1sec se nahodí každou sekundu do jedničky.
- Flag1sec se shodí hlavni smyčkou v momentě, kdy si jej "všimne".
- Lze použít pro provedení periodických akcí, kde není kritická přesnost opakování

Kód: Vybrat vše

// Hlavni smycka
while (1) {
 // ....
 if (Flag1sec) {
  Flag1sec = 0; // Shodit pro dalsi pouziti
  // Delej neco priblizne kazdou sekundu, napr:
  if (EthernetCableConnected()) {
   ActivateEthernetComm();
  }
 } 
 // ....
}
Osobne tam zadny problem s pouzitim IF v kombinaci s MODULO nevidim.
A taky mi v te prerusovaci rutine nic neutece, pokud se nesekne cely system.
Soldering fumes make you stronger!
Pirx
Příspěvky: 181
Registrován: 24 úno 2013, 16:29
Kontaktovat uživatele:

Re: Začatečník

Příspěvek od Pirx »

Hrome, teď jsem si všimnul, že je to topic k Arduinu a že už jsme jej pěkně hackli :(
Ten kód je samozřejmě surové C, takže pardon.
Soldering fumes make you stronger!
pgerla
Příspěvky: 400
Registrován: 11 dub 2013, 00:17

Re: Začatečník

Příspěvek od pgerla »

Špatně není na Counter nic. Hodnotu si měníte sám ++ (co 10mS z HW přerušení). Co je špatně na C v sekci Arduino? Syntaxe je stejná, pochopí to snad i začátečník.
Pirx
Příspěvky: 181
Registrován: 24 úno 2013, 16:29
Kontaktovat uživatele:

Re: Začatečník

Příspěvek od Pirx »

Aha, tak už rozumím výrazu "hodnotu měním sám" - to potom dává smysl.
S tím kódem jsem měl jenom obavu, abych začátečníka - arduinistu zbytečně nemátl.
Soldering fumes make you stronger!
pgerla
Příspěvky: 400
Registrován: 11 dub 2013, 00:17

Re: Začatečník

Příspěvek od pgerla »

Pirxi, je na Vás nějaký kontakt? Chtěl bych se pobavit o ultrazvuku. Měření větší než malé vzdálenosti.
Pirx
Příspěvky: 181
Registrován: 24 úno 2013, 16:29
Kontaktovat uživatele:

Re: Začatečník

Příspěvek od Pirx »

pgerla píše:Pirxi, je na Vás nějaký kontakt? Chtěl bych se pobavit o ultrazvuku. Měření větší než malé vzdálenosti.
Jistěže, stejně jako na všechny ostatní členy:
- Přihlásit se
- Rychlé odkazy / Členové
- Vyhledat Pirx (hned na první straně)
- Zobrazit profil
- Zvolit "Poslat e-mail uživateli"
Určitě mi to dojde.

Mimochodem, měření větší vzdálenosti ultrazvukem ve vzduchu vidím velmi pesimisticky:
7.5 m - http://www.robotshop.com/en/maxbotix-xl ... inder.html
10.0 m - http://www.robotshop.com/en/xl-maxsonar ... sonar.html
atd, ale výrazně přes 10 m jsem při zběžném hledání nic nenašel.

Nicméně, mám hlavně obavy z velkého vyzařovacího úhlu a nehomogenity vzduchu, což může dát falešný odraz.
Plus samozřejmě brutální závislost výsledku na povětrnostních podmínkách (teplota, vlhkost, proudění vzduchu).

Něco málo souvisejících technologií:
https://en.wikipedia.org/wiki/Chirp
https://en.wikipedia.org/wiki/Pulse_compression
Soldering fumes make you stronger!
pgerla
Příspěvky: 400
Registrován: 11 dub 2013, 00:17

Re: Začatečník

Příspěvek od pgerla »

díky, zbytek na emailu. Nebudeme děsit začátečníka :)
Odpovědět