Aktywne Wpisy
RicoElectrico +129
#niebieskiepaski #medycyna #rak
No dobra, wczoraj przyjęli mnie na oddział i dziś mi to lewe jajko wycinają. Jestem 4. w kolejce. Trochę się cykam ( ͡° ʖ̯ ͡°)
Ciekawe kiedy mnie wypiszą, jest szansa na wtorek.
Wczoraj to była masakra, kazali przyjść na 8:00, ale prawie przez godzinę nic się nie działo. Potem jak już byliśmy na oddziale, to pielęgniarka wszystko wypisywała na papierze dla każdego pacjenta...
Jakbym
No dobra, wczoraj przyjęli mnie na oddział i dziś mi to lewe jajko wycinają. Jestem 4. w kolejce. Trochę się cykam ( ͡° ʖ̯ ͡°)
Ciekawe kiedy mnie wypiszą, jest szansa na wtorek.
Wczoraj to była masakra, kazali przyjść na 8:00, ale prawie przez godzinę nic się nie działo. Potem jak już byliśmy na oddziale, to pielęgniarka wszystko wypisywała na papierze dla każdego pacjenta...
Jakbym
back_to_my_place +212
Wam też się nagle wyświetliły stare powiadomienia? #wykop
Głośnik jest sterowany przez PWM, na wyjście uC podaje wynik z algorytmu, konkretnie z tego. Cały kod programu tutaj. Przy tym taktowaniu częstotliwość próbkowania powinna wynieść
8000000/256 = 31250 Hz
. Czyli teoretycznie przy włączeniu układu do zasilania odgrywana melodia powinna być kilkukrotnie szybsza niż na wideo z youtube. A jest całkiem na odwrót - jest około dwukrotnie wolniejsza. Dlaczego tak jest, co przeoczyłem?#avr #elektronika
@a231: właśnie zastanawiałem się, jaki wpływ ma ta pozornie krótka linijka na sam procesor, bo dodanie jej spowodowało przyrost binarki o kilkaset (!) bajtów. Próbowałem przenosić kod z ISR do maina, ale nic to nie zmieniało. Nie mam za bardzo pomysłu jak sprawdzić, czy proc "wyrabia".
@Feargan: uruchom program w symulatorze i sprawdź czy przerwanie ma szansę się wykonać w 256 cykli (symulator powinien pokazywać cykle zegarowe). Możesz też na początku przerwania ustawić jakiś pin i na końcu go zgasić i sprawdzić wypełnienie takiego przebiegu na oscyloskopie.
@Analityk: To nie arduino
t
nauint32_t
uszczupla kod assemblera o jakieś 80 linijek, teraz dźwięk odtwarza się (chyba) tak jak powinien ( ͡° ͜ʖ ͡°) ale baboldzięki za naprowadzenie ( ͡° ͜ʖ ͡°)
@Analityk: ocr0a jest 8 bitowy, ale kluczową kwestią są tu obliczenia wykonywane na większym zakresie
Komentarz usunięty przez autora
Komentarz usunięty przez autora
@Feargan: ultradźwięki modulowane częstotliwościami akustycznymi ( ͡~ ͜ʖ ͡°)
a skoro w tym setupie słyszysz dźwięk to znaczy, że masz ustawiony fusebot dzielący główny zegar przez osiem. wtedy słyszałbyś dźwięk rzędu pojedynczych kiloherców ale #!$%@? bo nie pokazałeś całego kodu.
t
jest zawsze równe0
?t
musi być 32-bitowe, inaczej program odtwarzałby jedynie super krótki fragment melodyjki. Po drugie, podczas przypisywania wartościt
doOCR0A
następuje niejawna konwersja nauint8_t
, która w zasadzie polega na przypisaniu do tego rejestru wartości równejt&0xff
lubt%256
.@Feargan: Na podstawie linii kodu numer 27 z listingu, który zamieściłeś:
@Feargan: Do rejestrów powinieneś wpisywać takie wartości, jakie powinny się tam znaleźć. Niejawna konwersja w tym momencie to domaganie się nieokreślonych zachowań.
To powiedz mi jaka wartość znajdzie się w OCRA w tym przypadku:
OCR1A
static storage duration - przecież wyraźnie widać, że
t
jeststatic
, czyli przy pierwszym przerwaniu tworzona jest jedyna instancja tej zmiennej i istnieje do końca działania programu. Inicjalizacja wartości też występuje tylko raz.Zgodnie ze standardem C takie