26.02.2016, 18:44
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
26.02.2016, 21:06
Nie wiem co za głupi ***** wymyśla takie łatanie dróg po zimie, ale ostatnio drogowcy chyba stosują nową metodę. Otóż łata nie jest wyrównana z nawierzchnią, tworzy lekki garb i jak po tym jedziesz, to *****, jakby pod kołami był bruk. Geniusze po prostu. Wycinają, łatają, a po tygodniu i tak się rozpadnie tworząc dziurę.
27.02.2016, 00:14
Robią tak, by znów mieć co łatać...
01.04.2016, 15:43
![[Obrazek: oXXZKR3.png]](https://i.imgur.com/oXXZKR3.png)
I 1669 kliknięć...
01.04.2016, 15:54
01.04.2016, 16:07
Reklamy mamy tylko w dwóch miejscach, w sumie 3 bannery, więcej nie dam, bo nie chcę zaśmiecać strony. Banery w postach są praktycznie tak samo skuteczne co w nagłówku, tyle, że w postach są dwa jednocześnie.
02.04.2016, 20:42
(01.04.2016, 15:43)Swordancer napisał(a): [ -> ]
I 1669 kliknięć...
No i ja się pytam gdzie mój długopis kuhfa?
12.04.2016, 23:12
Jak ktoś uczy się programowania mikrokontrolerów, napisałem kod pod MS430 do grania muzyczki na buzerze i go opisałem.
/*
Copyright Odjechani.com.pl © 2016
Glosnik podłączamy pod pin P2.3
Potrzebne nuty (w przybliżeniu):
Domyślne ustawienia MCLK, to 1,05Mhz więc,
525000/f = cykle (w przybliżeniu +- do 0.5 ze względu na zaokrąglenie)
Porzebne nuty:
G5 - 783.991Hz = 670
F5 - 698.456Hz = 752
D5# - 622.254Hz = 844
D5 - 587.330Hz = 894
C5 - 523,251Hz = 1003
B4 - 493.883Hz = 1063
G4# - 415.305Hz = 1264
G4 - 391.995Hz = 1339
F4 - 349.228Hz = 1503
D4# - 311.127Hz = 1687
D4 - 293.665Hz = 1787
C4 - 261.626Hz = 2007
G3 - 195.998Hz = 2679
C3 - 130.813Hz = 4013
*/
#include <msp430g2553.h>
#define LS BIT3; //deklaracja pinu dla zasilania głośnika
unsigned int length = 129; // długość utworu, należy zmienić na długość tablicy
//Daredevil's Main theme by John Paesano - krótki przykładowy fragment. Długość tablicy - 129 liczby
//ton dźwiękowy generowany na timerze 0 A0 (0 przerwa)
unsigned const tone[] = {1339,1687,1787,2007,1339,1687,1787,2007,1339,1687,1787,2007,1339,1687,1787,2007,1264,1687,1787,2007,1264,1687,1787,2007,1264,1687,
1787,2007,1264,1687,1787,2007,1264,1687,1787,2007,1264,1687,1787,2007,1264,1687,1787,2007,1264,1687,1787,2007,1339,1687,1787,2007,1339,1687,1787, 2007,1339,1687,1787,2007,1339,1687,1787,2007,1687,1787,2679,1787,1339,1503,1503,0,1503,4013,4013,1687,0,844,894,1339,844,670,752,752,0,752,1003,0,1003,1063,894,670,0,
670,844,894,1003,670,844,894,1003,670,844,894,1003,670,844,894,1003,670,844,894,1003,670,844,894,1003,670,844,894,1003,1687,0,1687,0,1687,0,1687,0};
//czas odgrywanego tonu na timerze 0 A1 (musi być większy od zera)
unsigned const time[] = {8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,
8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,8000,
8000,8000,8000,8000,8000,8000,8000,8000,10000,25000,62000,12000,12000,16000,62000,20000,10000,25000,62000,20000,62000,40000,25000,62000,12000,12000,
16000,62000,20000,10000,25000,65000,10000,25000,25000,25000,62000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,
5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,8500,5000,8500,30000,8500,5000,8500,62000};
unsigned int tone_change; //odliczanie do zmiany tonacji
unsigned int counter; //licznik wyboru tonacji w tablicy
//funkcja konfiguracji
void init(void) {
WDTCTL = WDTPW | WDTHOLD;
P2DIR |= LS; // P2.3 jako wyjście
P2OUT &= ~LS; //P2.3 stan niski
TA0CCTL0 = CCIE; //przerwanie TA0CCTL0
TA0CCTL1 = CCIE; //przerwanie TA0CCTL1
TA0CCR0 = tone[0]; //Timer0A0 ton pierwszy
TA0CCR1 = time[0]; //Timer1A0 dlugosc pierwszego tonu
TACTL = TASSEL_2 + MC_1 + TAIE + TACLR + ID_0; // SMCLK + UP MODE + Przerwania + Wyczyść timer + Nie dziel
_BIS_SR(GIE);
}
int main(void) {
init(); // inicjalizacja ustawień programu
while(1) {
}
}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void TIMER0_A0(void)
{
P2OUT ^= LS; //zmiana stanu P2.3 pod sygnał prostokątny dla odgrywanej tonacji
if(P2OUT & BIT3 && TA0CCR0 == 0) {
P2OUT &= ~BIT3;
}
}
#pragma vector = TIMER0_A1_VECTOR
__interrupt void TIMER0_A1(void)
{
if(tone_change == time[counter]) {
//liczniki pomocnicze
counter++;
tone_change = 0;
if(counter == length) {
counter = 0; //zerowanie licznika pomocniczego
}
//kolejny ton i jego czas
TA0CCR0 = tone[counter];
TA0CCR1 = time[counter];
}
tone_change++; //licznik pomocniczy
}
13.04.2016, 08:54
13.04.2016, 10:56
Nie i wydaje mi się, że ze względu na rozmiar pamięci w mikrokontrolerach raczej kompilatory pod w pełni profesjonalne programowanie w C++ nie pojawią się prędko, a przynajmniej ja nie słyszałem. Mowa oczywiście o profesionalnym programowaniu, nie o jakimś Arduino itd. Można pisać w assemblerze, ale nie polecam. Są też kompilatory pod inne języki np. BASCOM, jednak C powinien wystarczyć do wszystkiego i jest najpopularniejszy, prosty, szybki, można nim programować większość mikrokontrolerów, dużo kompilatorów. Znając C++ znasz C, nie da się inaczej, oczywiście jest znacznie ograniczony w stosunku do C++, ale łatwo można wyłapać, czego nie da się używać w C. Znajomość języka C nie musi być wielka, programowaniu mikrokontrolerów najbardziej liczy się znajomść ich budowy, funkcji, umiejętności czytania dokumentacji, znajomość podstaw elektroniki. To nie jest jednaj prosta dziedzina i nauka w przeciwieństwie do pisania zwykłych programów na komputerze, zazwyczaj wymaga wkładów finansowych.