strikexp pisze:Jakoś nie uważam żeby ATmega328 było dobrym pomysłem do odtwarzania muzyki
Można zrobić to nawet na 8-nóżkowym attiny, który czyta dane z karty uSD i cały układ można zmieścić na płytce wielkości właśnie takiego gniazda. I to tylko z drobną pomocą assemblera. A taki potężny komputer jak atmega328 nie ma z tym już żadnego problemu, nawet przy 44kHz i próbkach 16 bitowych.
Nie wiem, czemu się tych przerwań tak boisz, ale jak chcesz mikrokontrolery programować, to będziesz musiał się do nich przekonać. Jeśli nie mylę terminów (a wolno mi, bo się nigdzie za programistę nie podaję

) to teraz robisz polling portów, żeby odczytywać stany na enkoderze i przez to wykorzystujesz do tego 100% zajętości mikrokontrolera. Jakbyś chciał rozszerzyć jakkolwiek działanie - np dodać przycisk zerujący, to byś musiał prawdopodobnie zmienić podejście.
Przy czym ja wcale nie mówię, że ten program jest zły (nie testowałem), tylko zwracam uwagę na kilka faktów, które rzuciły mi się w oczy.
Mógłbyś mi wskazać jeszcze linijki kodu, w których przerwanie mogłoby "zaburzyć kopiowanie typu long"? Bo nie do końca rozumiem, czego się obawiasz.