Wpis z mikrobloga

@Fox_Murder: Jak to ogarnąć, jak jest zbudowana ramka i jak najprościej zrobić apkę (np C#), która by obraz wyświetlała. Nota jest straszna i dla mnie nie do ogarnięcia. Nie mam oscyloskopu. Nie robię tego na arduino.
@motorade: no fifo dla kamery jest raczej niezbędne, ale tylko jeśli chcemy mieć film, obrazy chyb dałoby sie czytać bez.
Co masz na myśli apkę? Chcesz to na Pi, do innego mikrokontrolera czy jak?
Bo generalnie się to wydaje proste. Za każdą zmianą z low na high HREF musimy odczytać 8 bitów danych szeregowo czy tam serial 640x, i takie kółko 480x. Jeśli każdy pixel to 8bit. I tu mamy ramkę.
@Fox_Murder: Właśnie robię to na mikrokontrolerze, tyle że na ARMie M0+. Apka możliwie najprostsza, połącz się z mikrokontrolerem i po UART odbieraj dane i je wyświetlaj.
Czyli jak HREF jest wysoki to muszę (dla ramki 640x480) odczytać 640 razy te 480 zmian 8 bitów D0:D7?
@motorade: raczej bym radził to odczytać 307200 bajty, po czym odczytać odczyt obrazu wiedząc z pamięci żeby wrzucając na lcd że na linię ma być 640 bajtów, po czym linia niżej następne 640 bajtów, itd aż licznik pokaże 480.
Coś ci teraz pokazuje? Ważna rzecz to ta że lcd są na 12-24 bity na piksel, więc możesz mieć dobre wszystko i nadal widzieć śnieg bo liczba bitów kamery to 8 a
@motorade: nie znam c, sam algorytm się liczy. Ja bym spróbował tak,
If początek ramki = 1 then
Oczekuj na Przerwanie od Hsync(czyli chyba Href)
Przerwanie od Href:
Zapisz bajt
return
Jakoś trzeba zidentyfikować kiedy następuje początek ramki, potem można tylko oczekiwać na to by przy przerwaniu od każdego bajta go odczytać i zapisać do pliku.
@motorade: ta pętla przyprawi cię o buldupy. Musi być dostatecznie szybkie by zapisać bajt zanim zostanie wywołane następne przerwanie dla piksela.
Kiedyś robiłem to samo ale w drugą stronę, wysyłałem 4 bitowe ramki na lcd monochromat, poległem, bo ciągle uparcie mi wyświetlał w każdej linii tylko pierwszą linię. To był błąd tych zapętleń, czegoś nie wiem. Bascom też się przyczynił ale nie za bardzo bo ogólnie to działało ale nie wiem
@motorade: ale może być za wolny do detonowania tylu przerwań. przy 30 Fps to 9,2 miliona bajtów/s, ramka 30 fps czyli na fotkę masz 0,15s, w takim czasie musi zapisać o ile nie majaczę te ramkę czyli ok 307kb, czyli 307k przerwań... Karta może nawet być za wolna na taki zapis. I nawet najszybszy arm ci wtedy nie pomoże jeśli karta za wolna i brak ramu na pełną ramkę.
Jak zobaczysz