Sprawdzanie, co blokuje przycisk „Uśpij”:
powercfg -a
Co wybudziło komputer ze stanu uśpienia:
powercfg –lastwake
Jaki sprzęt może wybudzić komputer:
powercfg -devicequery wake_armed
strona prywatna
Płytka kupiona tutaj: http://www.ebay.com/itm/141964183194
Sprzęt: Rohde&Schwarz FSEA 30 (nieskalibrowany niestety)
Załóżmy, że na oscyloskopie zobaczyliśmy coś takiego jak powyżej. Jest to 1 paczka danych z UART badanego urządzenia.

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:
(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.
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
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
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
.vimrc
set number syntax on set mouse=r set invpaste set background=dark set autoindent map <F5> :!php -q%<CR>
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:

Emokwiatek; 4 krzyże + biedronka:

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’:

Odwrócony róg: F L F U’ R U 2F 2L U’ L’ B D’ B’ 2L U
Kostka 5x5x5:
(Rr)’ F’ (Ll)’ (Rr) U (Rr) (U)’ (Ll) (Rr)’:

Błąd parzystości
Rr2 B2 U2 Ll U2 Rr’ U2 Rr U2 F2 Rr F2 Ll’ B2 Rr2
Grafiki wykonałem w programie sketchup z użyciem pliku: https://3dwarehouse.sketchup.com/model.html?id=b1d74f23627344317f01c23a4d8b8e38
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)
Przedstawiam grafikę z etykietami pinów takimi, do jakich się przyzwyczaiłem z protokołu SPI:

Opis tekstem: