Skocz do zawartości

Wyswietlacz z przerwaniem i DMA


danielll

Pomocna odpowiedź

Mam już napisaną działającą bibliotekę do wyswietlania przez SPI uzywając DMA i przerwań, jednak chce ją poprawić by była bardziej uniwersalna, między innymi możliwość wysyłania bez DMA.

W tym celu w przerwaniu dodałem prosty warunek. Spowodował on jednak ze wyswietlacz przestał działać mimo że sam kod się realizuje. Chodzi o ten zakomentowany warunek. Podejrzewam ze problemem jest wydłużenie czasu wyjścia z przerwania przy krotkiej transmisji 3 bajtów przez co wywołuje się nastepnę przerwanie zanim aktualne zostanie zakończone. Czy ktoś może mi podpowiedzieć sposób rozwiązania tego?

void SSD1306::SPI_Interrupt_DMA(){
    //if (dma_status == SET_ON){
        if (status==2);
        else if (status==0){
            lineCommands[0]=0xB0 + counter;
            lineCommands[1]=0x00;
            lineCommands[2]=0x10;
            status=1;
            WriteCommand();
        }
        else{
            status=0;
            counter+=1;
            if (counter==8)
                counter=0;
            WriteData();
        }
    //}
}

 

Edytowano przez Gieneq
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.