OT odcitanie v C

Petr Labaj labaj na volny.cz
Čtvrtek Duben 24 14:06:28 CEST 2014


Pana veka velmi obdivuji za jeho schopnost a nastudovat a proniknout
do hloubi ruznych norem, datasheetu atd. V tom je uzasne dobry,
a zrejme ho to i bavi (jinak by se z toho musel zblaznit).

S pobavenim ctu jeho popisy ruznych moznych "podivnosti", ktere mohou
vzniknout za hranicnich podminek. Beru to tak, ze je to jeho sport (a opet
je v tom velmi dobry).

Ale absolutne nechapu jeho casto urputnu snahu se do techto hranicnich
podminek dostavat a pak resit ruzne situace, do kterych by se pri
"normalnim" zpusobu pouzivani nikdy nedostal.

Pripada mi to treba jako (z automobilove oblasti) kdyby zjistil, ze kdyz za
rychle jizdy vpred soucasne slapne na plyn a na brzdu, silou tam narve
zpatecku a soucasne pusti starter, tak se auto zachova nejak divne.

;-)

PL

************************************

From: "Jan Waclawek" <konfera na efton.sk>
To: "HW-news" <hw-list na list.hw.cz>
Sent: Thursday, April 24, 2014 10:14 AM
Subject: OT odcitanie v C


Aky je vysledok?

#include <stdint.h>

volatile uint32_t l;
volatile uint16_t h;
volatile uint8_t result;

int main(void) {

  l = 0x00000002;
  h = 0xFFFE;

  result = 0;

  if (l - h < 3) result |= 1;
  if ( ((uint16_t)l - h) < 3 ) result |= 2;
  if ( (uint16_t)(l - h) < 3 ) result |= 4;
  if ( (uint16_t)((uint16_t)l - h) < 3 ) result |= 8;

  if (l - h < 10) result |= 16;
  if ( ((uint16_t)l - h) < 10 ) result |= 32;
  if ( (uint16_t)(l - h) < 10 ) result |= 64;
  if ( (uint16_t)((uint16_t)l - h) < 10 ) result |= 128;


  while(1) {
  };
}


Aplikacia: mam 32-bitovy volne beziaci casovac (l), a potrebujem odmerat
nejaky kratky cas, menej ako 65535 tikov (do h si odlozim hodnotu na
zaciatku odmeriavania).

wek



Další informace o konferenci Hw-list