Windows – problemy z usypianiem i wybudzaniem

Sprawdzanie, co blokuje przycisk „Uśpij”:

powercfg -a

powercfg-a

Co wybudziło komputer ze stanu uśpienia:

powercfg –lastwake

Jaki sprzęt może wybudzić komputer:

powercfg -devicequery wake_armed
Kontynuuj czytanie » || Napisal dnia: 18.12.16. || Brak komentarza || Kategorie: Bez kategorii

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