XYC-WB-D Microwave Radar Sensor – analiza widma częstotliwości, pomiar emisji.

Płytka kupiona tutaj: http://www.ebay.com/itm/141964183194

Sprzęt: Rohde&Schwarz FSEA 30 (nieskalibrowany niestety)

IMG_20160812_134005_HDR IMG_20160812_134008_HDR IMG_20160812_134016_HDR IMG_20160812_134020_HDR IMG_20160812_134045_HDR IMG_20160812_134051_HDR IMG_20160812_134430_HDR

Kontynuuj czytanie » || Napisal dnia: 13.08.16. || Brak komentarza || Kategorie: Bez kategorii

RS232, UART – Timing. Jak na oscyloskopie określić baudrate.

Załóżmy, że na oscyloskopie zobaczyliśmy coś takiego jak powyżej. Jest to 1 paczka danych z UART badanego urządzenia.
uart_timing

Bit STOP ma wartość 1 i jest niewidoczny, jeżeli odbieramy tylko jeden bajt na raz, ponieważ „zlewa się” ze stanem wysokim linii, który występuje w stanie spoczynku.

Dla transmisji 8N1 (8 bitów danych, bez bitu parzystości, 1 bit stopu), zależności czasowe wyglądają tak:

Baudrate – Długość ramki z rysunku – Długość jednego bitu:

  • 1200 – 7,480ms – 831,11μs
  • 2400 – 3,740ms – 415,56μs
  • 4800 – 1,870ms – 207,78μs
  • 9600 – 936,0μs – 104.167μs

(Wyniki uzyskane eksperymentalnie) Jak widać, jeżeli czas trwania jednego bitu jest okresem, to Baudrate jest częstotliwością. Np. 1/9600 [Baud] = 104,16(6)μs

Ponieważ na jedną ramkę przypada 10 bitów razem z bitem STOP, to przy Baudrate=9600 można przesłać 960B/s użytecznych danych.

 

Kontynuuj czytanie » || Napisal dnia: 20.07.16. || Brak komentarza || Kategorie: Bez kategorii

AVR C – przekazywanie portu do funkcji

void pulseLed(volatile uint8_t *port, uint8_t pin_bm)
{
	*(port-1) |= pin_bm; //*(port-1) = *(ddr); set pin as output
	*port |= pin_bm;
	_delay_ms(100);
	*port &= ~pin_bm;
}

void main(void)
{
	pulseLed(&PORTC, _BV(2) );
}

Źródło: http://www.atmel.com/webdoc/AVRLibcReferenceManual/FAQ_1faq_port_pass.html

Kontynuuj czytanie » || Napisal dnia: 18.07.16. || Brak komentarza || Kategorie: Bez kategorii

Definicja i inicjalizacja struktury w C

Definicja typu:

typedef struct
{
	volatile uint8_t *port;
	uint8_t pin_bm;
	volatile uint16_t pulse_high;
	volatile uint16_t pulse_low;
} aparat;

Użycie:

aparat canon = {&PORTC, _BV(PC3),100,200};

Lub w postaci tablicy:

aparat aparaty[4] = {
		{&PORTC, _BV(PC3),10,100},
		{&PORTC, _BV(PC2),20,100},
		{&PORTC, _BV(PC1),30,100},
		{&PORTC, _BV(PC0),40,100}
	};

Źródło: http://stackoverflow.com/questions/2641473/initialize-static-array-of-structs-in-c

Kontynuuj czytanie » || Napisal dnia: 18.07.16. || Brak komentarza || Kategorie: Bez kategorii

Optiboot bootloader i Atmega88 – wgranie, używanie, kompilacja.

TL;DR dla Atmega88(PA), F_CPU=16MHz upload baudrate: 115200:
1. Wgraj hex’a programatorem z Fusebitami: LOW = 0xFF; HIGH= 0xDF; EXT= 0xFC; optiboot_atmega88
2. Odpal upload.bat z paczki, wgrywając wcześniej do niej swój program jako firmware.hex, oraz ustawiając w pliku upload.bat odpowiedni port szeregowy optiboot_upload

Kompilacja Optiboot z konsoli w folderze z Arduino:

C:\Program Files (x86)\Arduino\Arduino ERW 1.0.5\hardware\arduino\bootloaders\optiboot
omake AVR_FREQ=16000000UL LED_START_FLASHES=0 atmega88
Kontynuuj czytanie » || Napisal dnia: 19.06.16. || Brak komentarza || Kategorie: Bez kategorii

Moja konfiguracja edytora VIM

.vimrc

set number
syntax on
set mouse=r
set invpaste
set background=dark
set autoindent
map <F5> :!php -q%<CR>
Kontynuuj czytanie » || Napisal dnia: 02.06.16. || Brak komentarza || Kategorie: Bez kategorii

Kostka Rubika – kilka sekwencji

Notacja:
M – ruch środkową ścianką pomiędzy prawą i lewą tak jak ruch L
E – ruch środkową ścianką pomiędzy górną i dolną tak jak ruch D
S – ruch środkową ścianką pomiędzy przednią i tylną tak jak ruch F
X – obrót całą kostką w taki sam sposób jak ruch R
Y – obrót całą kostką w taki sam sposób jak ruch U
Z – obrót całą kostką w taki sam sposób jak ruch F

Superkostka 3x3x3 orientacja środków:

  • Środek u x 2: R’ L’ U’ R L U2 R’ L’ U’ R L U2:
    3x3x3_supercube_u2x
  •  Środek u’ i b’: (L’ R U L R’ U’) X 5
  • Środek u i b: (L’ R U’ L R’ U) X 5

Emokwiatek; 4 krzyże + biedronka:
3x3x3_emoflower

Szybkie scramble: L R U D L R 2U 2D

Wąż: U R B’ R’ D U’ B D’ F B’ L D L’ F’:
3x3x3_snake

 

Kostka 5x5x5:

(Rr)’ F’ (Ll)’ (Rr) U (Rr) (U)’ (Ll) (Rr)’:
5x5x5_1

(Rr) U (Rr)’ U (Rr) U2 (Rr)’:
5x5x5_2

(Dd) R U R’ F R’ F’ R (Dd)’:
5x5x5_3

(Dd)’ L’ U’ L F’ L F L’ (Dd):
5x5x5_4

 

Grafiki wykonałem w programie sketchup z użyciem pliku: https://3dwarehouse.sketchup.com/model.html?id=b1d74f23627344317f01c23a4d8b8e38

 

Kontynuuj czytanie » || Napisal dnia: 31.03.16. || Brak komentarza || Kategorie: Bez kategorii

Największa dotychczas poznana liczba pierwsza

W styczniu 2016 projekt GIMPS ( Great Internet Mersenne Prime Search) ogłosił odnalezienie rekordowej liczby pierwszej. Jak i poprzednie rekordy, ta także jest liczbą Mersena. W tej postaci prezentuje się tak:

274,207,281 − 1

Jeżeli chcemy poznać jak wygląda ona naprawdę w notacji dziesiętnej, należy ją obliczyć. Można to wykonać na przykład skryptem w języku Python:

file_ = open('biggest_prime.txt','w')
file_.write(str(pow(2,74207281)-1))
file_.close()

Użyłem języka Python, ponieważ ma on wbudowaną obsługę tzw. dużych liczb. Skrypt na moim komputerze wykonywał się kilka godzin, a więc nie jest to jakiś niesamowicie długi czas.

Wygenerowany plik tekstowy zawierający podaną liczbę umieszczam tutaj do pobrania:

biggest_prime (22 338 618B)

Kontynuuj czytanie » || Napisal dnia: 25.01.16. || Brak komentarza || Kategorie: Bez kategorii

74HC595 w Eagle – opisy pinów „po ludzku”

Przedstawiam grafikę z etykietami pinów takimi, do jakich się przyzwyczaiłem z protokołu SPI:
74hc595

Opis tekstem:

  • 9 QH* – MISO
  • 10 SCL – /RESET (aktywowany stanem niskim; jeżeli nie używasz, podepnij do VCC)
  • 11 SCK – CLK
  • 12 RCK – LATCH /CS (zbocze na tym pinie powoduje przepisanie stanu rejestru na wyjścia)
  • 13 G – /OE (ustaw stan niski, jeżeli chcesz żeby wyjścia działały; można podpiąć na stałe do GND)
  • 14 SER – MOSI

 

Kontynuuj czytanie » || Napisal dnia: 15.10.15. || Brak komentarza || Kategorie: Bez kategorii

Kilka wskazówek przy tworzeniu stron WWW

1. Dodaj znacznik

<meta name="viewport" content="width=device-width, initial-scale=1" />

aby przeglądarka wiedziała, jak wyświetlić stronę w urządzeniach mobilnych.
2. Dodaj sekcje w arkuszu stylów CSS, aby usprawnić wyświetlanie na mniejszych ekranach:

@media screen and (max-width: 800px) {
    #conrtainer 
            width: 100%;
        
}

3. Dodaj powiązanie ze stroną Google plus

<link href="https://plus.google.com/113761537454505774372" rel="publisher" />

4. Jeżeli aktualizujesz pliki css lub js, zaktualizuj linki do nich, aby przeglądarka pobrała je ponownie:

<script src="js/scripts.js?v=2" type="text/javascript"></script>

5. Użyj przekierowania adresu z „bez www” na „z www.” w swoim pliku .htaccess:

RewriteCond %{HTTP_HOST} !^www.twoja-strona.pl
RewriteRule ^(.*)$ http://www.twoja-strona.pl/$1 [R=301,L]

6. Jeżeli używasz mod_rewrite i jednocześnie weryfikacji w Google Webmasters za pomocą pliku .html, dodaj do .htaccess:

RewriteCond %{REQUEST_URI} !google
RewriteRule ^([a-z0-9\-]+)\.html$ index.php?s=$1 [L]

7. Nie zapomnij o znacznikach meta keywords, description itd.
8. Sprawdź pod tym adresem, czy Twoja strona jest wykrywana przez Google jako mobilna, jeżeli nie, to popraw ją (Pkt 1,2).
9. Dodaj ikonkę (favicon) do swojej strony:

<link rel="shortcut icon" href="favicon.ico" />

10. Sprawdź stronę walidatorem, aby mieć pewność że kod jest poprawny.
11. Stwórz plik robots.txt, który nie będzie blokował Google dostępu do plików CSS oraz JS. Pamiętaj przy tym, aby niechcący nie ujawnić wrażliwych danych np. takim wpisem:

User-agent: googlebot
Disallow: haselka.txt

12. Aby uniknąć listowania zawartości folderów przez Apache, czyli np. takiego widoku:
indexof
Wstawiaj do każdego folderu pusty plik o nazwie index.html
13. Stwórz mapę witryny w pliku sitemap.xml

Kontynuuj czytanie » || Napisal dnia: 30.09.15. || Brak komentarza || Kategorie: Bez kategorii