Od kilku dni zabawiam się kamerką OV7670, próbuję pobrać z niej obraz w formacie RGB565 i o mało ambitnej rozdzielczości QCIF(bo taki zmieści się w całości w RAM). Program, który napisałem ma za zadanie w przerwaniu pobrać obraz do pamięci, zatrzymać przerwanie i zapisać zawartość do pliku bmp. Oto mój kod :
Jest to druga wersja programu, gdzie procesor ma sprawdzać sygnały synchronizacji. Poprzednio (odkomentowane części), próbowałem na "pałę" odliczyć 144*176 pikseli.
Kamerę inicjuję tak :
Po uruchomieniu, na terminal dostaję
Z moich obserwacji wynika, że procesor nie nadąża z przerwaniami od sygnału PCLK, pomimo pomniejszenia go do ok. 894kHz. Chyba, że popełniłem jakiś rażący błąd w kodzie, którego nie widzę.
Pomimo wszystko, myśląc przyszłościowo, do mikrokontrolera należało by podłączyć zewnętrzną pamięć RAM, by uzyskać obraz sensowniejszej rozdzielczości. LPC1765 nie ma wyprowadzonej szyny adresowej. Myślę, że wykorzystanie do tego I/O to nie trafiony pomysł. Zastanawiam się na zmianą kalibru, i wymianie procesora na STM32F407, który ma wbudowany układ peryferyjny DCI. W dobrej cenie jest płytka STM32F4 discovery. Czy koledzy mogli by mi doradzić coś w tej sprawie, czy warto zainteresować się tym układem? Jestem raczej amatorem (i jako amator mogę nie podołać), ale chciałbym się dowiedzieć jak fachowo realizuje się takie rzeczy.
Kod: C / C++
Jest to druga wersja programu, gdzie procesor ma sprawdzać sygnały synchronizacji. Poprzednio (odkomentowane części), próbowałem na "pałę" odliczyć 144*176 pikseli.
Kamerę inicjuję tak :
Kod: C / C++
Po uruchomieniu, na terminal dostaję
Cytat:i program się nie kończy. W pierwszej wersji program kończył sie, ale wynikowy plik "camera2.bmp" zawierał garść losowych zielonych kropek na czarnym tle.Otw. pliku 0
Init OV7670 1
System Clock 120
Z moich obserwacji wynika, że procesor nie nadąża z przerwaniami od sygnału PCLK, pomimo pomniejszenia go do ok. 894kHz. Chyba, że popełniłem jakiś rażący błąd w kodzie, którego nie widzę.
Pomimo wszystko, myśląc przyszłościowo, do mikrokontrolera należało by podłączyć zewnętrzną pamięć RAM, by uzyskać obraz sensowniejszej rozdzielczości. LPC1765 nie ma wyprowadzonej szyny adresowej. Myślę, że wykorzystanie do tego I/O to nie trafiony pomysł. Zastanawiam się na zmianą kalibru, i wymianie procesora na STM32F407, który ma wbudowany układ peryferyjny DCI. W dobrej cenie jest płytka STM32F4 discovery. Czy koledzy mogli by mi doradzić coś w tej sprawie, czy warto zainteresować się tym układem? Jestem raczej amatorem (i jako amator mogę nie podołać), ale chciałbym się dowiedzieć jak fachowo realizuje się takie rzeczy.