Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega 8 - Częste zawieszanie się sterownika

endurasek 26 Sie 2013 21:49 8778 50
  • #31
    atom1477
    Poziom 43  
    Przewód masy też zbiera zakłócenia.
  • #32
    JanuszM
    Poziom 17  
    Wyłącz przerwanie (to od ślimaka) na czas diagnozowania i testowania.

    Wyłącz wszystkie inne przerwania.

    Zostaw kod odpowiedzialny za obsługę wyświetlacza, resztę zakomentuj, skompiluj i wgraj taki okrojony program do testowania.
  • #33
    BlueDraco
    Specjalista - Mikrokontrolery
    Wygląda na to, że oprócz ewidentnych błędów w założeniach (I2C na 10 m) masz jeszcze sporo błędów w oprogramowaniu, które próbujesz maskować dorzucając kondensatory (częściowo skutecznie) i bramki (całkiem bez sensu). Zacznij sprawdzać stan wejść w przerwaniu timera, przejrzyj obsługę I2C - jest wysoce prawdopodobne, że to w niej właśnie, wskutek błędnej reakcji na zdarzenia wynikające z zakłóceń, zawisa Ci oprogramowanie. Ja do obsługi zdalnego wyświetlacza użyłbym małego mikrokontrolera przy wyświetlaczu i połączenia przez UART. Wyjdzie taniej niż I2C i o jeden przewód do zakłócania mniej, a obsługa programowa znacznie łatwiejsza.
  • #34
    endurasek
    Poziom 14  
    Do czego to doszło ;p
    Może od nowa, wersja z i2c chce dopiero teraz wprowadzić jak na razie jest po Bożemu znaczy sie wyswietlacz ze sterownikiem znajduje się na 2pietru kamienicy
    układ wykonawczy i wyłącznik (countera) znajduje się w piwnicy.

    Z i2c to dopiero mam zamiar zrobić bo zależy mi na dwóch wyswietlaczach jednym w piwnicy drugim na 2pietrze.

    Robiłem już próby ze sterownikiem troche innym i innym programem gdzie układ był zasilany z akumulatorka a sam układ znajdował się w pobliżu świetlówki i działo się to samo.

    Co do programu to załączam go poniżej do sprawdzenia.

    [code]
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
  • #35
    atom1477
    Poziom 43  
    Ale tu nie ma co sprawdzać.
    Tak się nie robi kodów.
    Że się pisze 1000 linijek a potem daje na forum do sprawdzenia osobom które nawet nie mają na czym go sprawdzić. I muszą się wszystkiego domyślać.
    Jak już był pisane wyżej: wywal wszystko poza wyświetlaniem. Zrób np. wyświetlanie zmiennej zwiększanej co sekundę o 1.
    I wtedy zobacz co się będzie działo.
    Dopiero to pozwoli sprawdzić czy się wiesza przez zakłócenia czy przez soft.
  • #37
    JanuszM
    Poziom 17  
    Proponuję też przejść na "naturalny" język C.
    Koledzy z największą wiedzą, autorzy książek i najszerzej udzielający się na forum operują na co dzień właśnie w tym języku.

    Nie myśl w stylu "Bascom to pewien etap, później przejdę" - w tym czasie nabierzesz złych nawyków.

    W Bascomie nikt tu nic prawie nie rozumie, jakbyś po chińsku pisał...
  • #38
    endurasek
    Poziom 14  
    A wiec wgrałem do procka minimalny program który odlicza i dalej to samo:

    Płytka jaką wykorzystałem; można znaleźć na Nestor electronic ale dodałem kondensatory przy procku i zasilaniu

    Program do procka to:

    $regfile = "m8def.dat"
    $crystal = 8000000

    Config Lcdpin = Pin , Db4 = Pordc.3 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 20 * 4
    Cursor Off

    Dim A As Integer
    A = 0

    Cls

    Do

    Locate 1 , 1
    Lcd A

    Wait 1
    A = A + 1

    Loop

    Układ oczywiście zasilałem z akumulatora ale mimo to się resetował co któryś raz i zaczynał odliczanie od nowa.

    po niżej fotka z pseudo oscyloskopu w czasie gdy załączam świetlówkę we warsztacie.
  • #39
    JanuszM
    Poziom 17  
    Zasilanie na poziomie 1,2v ?

    Dobrze widzę na zrzutach z oscyloskopu?
  • #42
    dondu
    Moderator Mikrokontrolery Projektowanie
    endurasek napisał:
    ... a sam sterownik daje przy świetlówce

    Pokaż jeszcze zdjęcia, tylko dobrej jakości.
  • #44
    dondu
    Moderator Mikrokontrolery Projektowanie
    Nie sprecyzowałem dokładnie (choć zacytowałem właściwy fragment), ale dobrze, że zamieściłeś filmik, bo chodziło mi o usytuowanie względem świetlówki. Być może problem leży w samym wyświetlaczu. Dodaj na jego pinach zasilania kondensatory 10uF i 100nF.

    Obawiam się jednak, że to może nie pomóc. Jeżeli nie pomoże, to przewody sygnałowe z płytki mikrokontrolera do LCD każdy osobną skrętką można spróbować zastąpić i przetestować. Ba, nawet może zasilania i LED także.
  • #46
    dondu
    Moderator Mikrokontrolery Projektowanie
    Na schemacie nie masz kondensatora 100nF na zasilaniu LCD. Wprawdzie powinien on mieć kondensatory na swoim PCB, ale z tego co pamiętam Janbernat pokazywał kiedyś LCD, który fabrycznie nie miał przylutowanych kondensatorów, a miał podobne problemy.

    Rozumiem, że z dala od świetlówki takich problemów nie masz?
  • #47
    endurasek
    Poziom 14  
    Prawda kondensator jest na podświetlaniu a nie na zasilaniu ale dorzucę i tam.
    Z dala od świetlówki takich problemów nie mam przynajmniej z tym sterownikiem bo cały czas pracuje inny za ścianą gdzie jest ta świetlówka a dokładniej układ wykonawczy + zasilanie do sterownika który znajduje się na IIp i w tym czasie jak robiłem próby moj sterownik sie nie zawiesił ( a czy zresetował to nie wiem ).
    Ale ta świetlówka jest jak by moim wyznacznikiem zakłóceń na które mój sterownik musi się uodpornić w końcu. Nawet przewody zasilania na feryt nawijałem i też nic. Jak na razie się pogarsza bo stary sterownik się resetował i czasami gubił parametry z pamięci. A ten wisi......

    Dodano po 24 [minuty]:

    Atmega 8 - Częste zawieszanie się sterownika
  • #49
    atom1477
    Poziom 43  
    Na moje oko to wina wyświetlacza. On nie ma żadnych kondensatorów na płytce (no chyba że po drugiej stronie płytki, ale wątpię).