logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Gotowy projekt wideo ze strony - nie działa poprawnie

hrync123 18 Lut 2017 01:00 1215 14
REKLAMA
  • #1 16287169
    hrync123
    Poziom 10  
    Posty: 64
    Pomógł: 2
    Ocena: 2
    Witam,
    jakiś czas próbuję zrobić projekt z tej strony:
    http://blog.vinu.co.in/2012/04/drawing-geometric-figures-on-pal-tv.html

    ale nie działa on poprawnie.
    Korzystam z ATmega32-16PU, schemat mam połączony jak na obrazku ze strony.
    Do kompilacji kodu używam Atmel Studio 7.0, do wgrania USBASP.
    Po wgraniu tego kodu na ekranie pojawia się obraz, ale.. w kształcie przemieszczających się pojedynczych kropek lub linii.
    Wygląda to mniej więcej tak:
    Gotowy projekt wideo ze strony - nie działa poprawnie

    Podejrzewam, że problem tkwi w synchronizacji (chyba gdzieś w kodzie), ale nie mogę dojść gdzie.

    Czy jest ktoś w stanie pomóc mi rozgryźć ten problem?
    Z góry dziękuję
  • REKLAMA
  • #2 16287187
    Konto nie istnieje
    Konto nie istnieje  
  • #3 16287189
    hrync123
    Poziom 10  
    Posty: 64
    Pomógł: 2
    Ocena: 2
    16 MHz, przestawiłem w kodzie zamiat 1645.. to 1600..
  • REKLAMA
  • #5 16287198
    hrync123
    Poziom 10  
    Posty: 64
    Pomógł: 2
    Ocena: 2
    Ustawiłem. Gdybym zostawił za wewnętrznym 1 MHz wątpię, żeby mi cokolwiek pokazało.
    Dodam jeszcze, że projekt z tej strony działał jak należy. Dlatego właśnie obstawiam, że problem jest w kodzie.
  • REKLAMA
  • #6 16287490
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    Albo w kwarcu - doczytaj dlaczego ktoś użył takiego a nie innego.
  • #7 16287926
    hrync123
    Poziom 10  
    Posty: 64
    Pomógł: 2
    Ocena: 2
    Napisał w opisie, że użył takiego, bo nie ma 16 MHz pod ręką, a przestawiając F_CPU powinno zadziałać na każdym kwarcu jaki tu ustawię. W innym projekcie, który już wymieniłem, działa bez zarzutu.
  • #8 16287964
    Konto nie istnieje
    Konto nie istnieje  
  • #9 16288699
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    @hrync123 Problem najwyraźniej jest w braku synchronizacji poziomej. Część monitorów jest niezwykle wrażliwa na odpowiednie timingi, więc spróbuj poprawić generowanie H-Sync. Sprawdź też połączenia rezystorów i ich wartości. Niemniej cały ten kod jest raczej kiepski - przede wszystkim brak jest likwidacji jitteru wejścia w przerwanie w efekcie kolejne linie będą ci pływać o 62 ns, wygląda to jak nieprzyjemne drżenie obrazu. Poza tym cały kod praktycznie w 100% obciąża MCU. Są w necie inne projekty wyświetlana obrazu na TV, IMHO lepsze. Jeśli masz możliwość użycia innego AVR, to możesz z mojej stopki ściągnąć darmowe przykłady realizacji wyświetlania obrazu w PAL lub VGA przy pomocy XMEGA. Różnica taka, że masz 320 na 200 punktów (lub nawet więcej jeśli trzeba), w przy zaledwie kilkunastoprocentowym obciążeniu MCU.
  • #10 16289435
    hrync123
    Poziom 10  
    Posty: 64
    Pomógł: 2
    Ocena: 2
    A specjalnie do tego projektu kupiłem mega32, bo 16 ma za mało pamięci i nawet wywalając całą resztę, zostawiając tylko timer, main-a i dwie funkcje, nie dał się dziad wgrać. Jak już kupiłem 32 to się okazało, że nie działa. Przed zakupem kolejnego AVR może zapytam, czy macie jakieś propozycje kodu, który faktycznie działa do tego, co już posiadam? (mega16/mega32) bo na 8 to chyba jeszcze gorzej to wygląda..
    Swojego czasu myślałem nad wygenerowaniem VGA, żeby zrobić konwersję do kompozytowego, ale wciąż potraktuję to jako ostateczność, jeśli nie uda nam się wycisnąć nic z tego co mam.
  • REKLAMA
  • #11 16289441
    Konto nie istnieje
    Konto nie istnieje  
  • #12 16289814
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    hrync123 napisał:
    A specjalnie do tego projektu kupiłem mega32, bo 16 ma za mało pamięci i nawet wywalając całą resztę, zostawiając tylko timer, main-a i dwie funkcje, nie dał się dziad wgrać. Jak już kupiłem 32 to się okazało, że nie działa. Przed zakupem kolejnego AVR może zapytam, czy macie jakieś propozycje kodu, który faktycznie działa do tego, co już posiadam? (mega16/mega32) bo na 8 to chyba jeszcze gorzej to wygląda..
    Swojego czasu myślałem nad wygenerowaniem VGA, żeby zrobić konwersję do kompozytowego, ale wciąż potraktuję to jako ostateczność, jeśli nie uda nam się wycisnąć nic z tego co mam.


    Generowanie obrazu można odpalić i na m8, jeśli coś nie działa to znaczy, że nieprawidłowo napisany jest program. Gotowych kodów w necie masz sporo i raczej większosć z nich działa jak należy. Zacznij od poprawek dotyczących generowania impulsów synchronizacji. Niemniej rodzina ATMega nie za bardzo się nadaje do generowania obrazu, bo programowo trzeba wrzucać dane do SPI, w efekcie procesor w trakcie rysowania linii jest w 100% zajęty i zostają tylko krótkie chwile gdy mamy H- lub V-Sync. W twoim kodzie nawet w czesie H-Sync MCU jest zajęty, więc poza pokazaniem, że się da, ten kod do niczego się nie nadaje. Proponowałem ci XMEGA, bo można w niej wykorzystać DMA do ładowania danych, dzięki czemu MCU może normalnie wykonywać program. Dodatkowo elastyczne timery umożliwiają w pełni sprzętowe generowanie impulsów synchronizacji. Na ATMega też da się to znacznie ulepszyć, tylko bardziej to przypomina hacking.
  • #13 16289916
    Konto nie istnieje
    Konto nie istnieje  
  • #14 16289930
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    Piotrus_999 napisał:
    tmf napisał:
    Proponowałem ci XMEGA
    Nie zauważyłeś, że Kolega nie ma podstaw, więc o jakiej xmedze i dma mowa


    A jakie podstawy potrzebuje, jeśli ma gotowca?
  • #15 16289962
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

✨ Użytkownik ma problem z projektem wideo opartym na ATmega32-16PU, który nie działa poprawnie, wyświetlając jedynie przemieszczające się kropki i linie. Podejrzewa, że problem leży w synchronizacji, a nie w sprzęcie, ponieważ projekt z tej samej strony działał wcześniej. Użytkownicy sugerują sprawdzenie ustawień kwarcu, synchronizacji poziomej oraz poprawności kodu. Wskazują na możliwość użycia innych modeli AVR, takich jak XMEGA, które lepiej radzą sobie z generowaniem obrazu dzięki DMA i elastycznym timerom. Wskazano również na problemy z obciążeniem MCU w obecnym kodzie, co może prowadzić do błędów w wyświetlaniu.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA