Witam wszystkich!
Nurtuje mnie pewien problem z moją ATmegą. Mianowicie, wykonuje projekcik z ATmegą128 w roli głównej na płytce stykowej. Ze względu na dużą ilość Pinów, ATmega jest wlutowana w przejściówkę i poprzez goldpiny a następnie skrętkę podpięta do płytki stykowej, na której składam elektronikę. W związku z tym przewody od mikrokontrolera do płytki stykowej mają długość niecałe 40cm. Na płytce stykowej na której są wetknięte kable od pinów, znajdują się m.in. kondensatory 100nF (zasilanie AVR), szyna zasilająca przez stabilizator 5V.
Całość działa na 8MHz, bo taki jest praktyczny maks dla płytek stykowych i o dziwo (takiego pająka jakiego stworzyłem) cały układ i program testowany jak dotąd działa, z tym, że są pewne niepokojące mnie objawy takie jak:
1) wyobraźmy sobie tradycyjne przerwanie od INT2 (wyzwalane poziomem niskim) - jak na płytce wykonam zwarcie pinu z masą, aby wzbudzić przerwanie wówczas (średnio raz na 10 wykonanych takich powtórzeń) procesor się zawiesza, resetuje, albo wyrzuca krzaki na wyświetlacz LCD,
2) inną ciekawą dolegliwością jest to, że jak wcisnę dowolny przycisk na klawiaturze 4x4 który wykonuje jakąś pętlę (czyli np. po przytrzymaniu klawisza "1" ma mi wracać w to samo miejsce, czyli na wyświetlaczu tylko widzimy migotanie, przez odświeżanie wyświetlacza) to po stałej czasowej zawsze się resetuje (zawsze po ok 5s) - zaznaczam, że mam wyłączonego watchdoga i JTAGA.
3) ostatnią dziwną rzeczą jest to, że jak na klawiaturze 4x4 ( z czytywana przez skanowanie w pętli while() ) kilka razy wcisnę przycisk w dowolnej kolumnie inny niż bym chciał to mi wejdzie do podprogramu zdefiniowanego dla zupełnie innego przycisku ( zaznaczam, że tylko w obrębie tej samej kolumny, czyli np. w menu1 mam podprogramy dla przycisku 1 i 4 a będę wciskać wielokrotnie 7, to mi w końcu wskoczy w podprogram dla klawisza 1). Tu też nie wiem co jest powodem. Klawiaturę połączyłem tradycyjnie poprzez microswitche i jest podpięta do portu C.
Projektuje właśnie PCB i z wiedzy teoretycznej wnioskuje, że przy równo rozłożonej masie ( a nie jak na płytce stykowej, gdzie jest kilka szyn GND połączone drucikiem) oraz bliskości AVR z innymi elementami elektronicznymi (chodzi mi głównie o kondensatory, które powinny być bardzo blisko pinów zasilających) powinny moje dolegliwości zniknąć (głównie z myślą o problemie 1). Tylko czy oby na pewno??
Nurtuje mnie pewien problem z moją ATmegą. Mianowicie, wykonuje projekcik z ATmegą128 w roli głównej na płytce stykowej. Ze względu na dużą ilość Pinów, ATmega jest wlutowana w przejściówkę i poprzez goldpiny a następnie skrętkę podpięta do płytki stykowej, na której składam elektronikę. W związku z tym przewody od mikrokontrolera do płytki stykowej mają długość niecałe 40cm. Na płytce stykowej na której są wetknięte kable od pinów, znajdują się m.in. kondensatory 100nF (zasilanie AVR), szyna zasilająca przez stabilizator 5V.
Całość działa na 8MHz, bo taki jest praktyczny maks dla płytek stykowych i o dziwo (takiego pająka jakiego stworzyłem) cały układ i program testowany jak dotąd działa, z tym, że są pewne niepokojące mnie objawy takie jak:
1) wyobraźmy sobie tradycyjne przerwanie od INT2 (wyzwalane poziomem niskim) - jak na płytce wykonam zwarcie pinu z masą, aby wzbudzić przerwanie wówczas (średnio raz na 10 wykonanych takich powtórzeń) procesor się zawiesza, resetuje, albo wyrzuca krzaki na wyświetlacz LCD,
2) inną ciekawą dolegliwością jest to, że jak wcisnę dowolny przycisk na klawiaturze 4x4 który wykonuje jakąś pętlę (czyli np. po przytrzymaniu klawisza "1" ma mi wracać w to samo miejsce, czyli na wyświetlaczu tylko widzimy migotanie, przez odświeżanie wyświetlacza) to po stałej czasowej zawsze się resetuje (zawsze po ok 5s) - zaznaczam, że mam wyłączonego watchdoga i JTAGA.
3) ostatnią dziwną rzeczą jest to, że jak na klawiaturze 4x4 ( z czytywana przez skanowanie w pętli while() ) kilka razy wcisnę przycisk w dowolnej kolumnie inny niż bym chciał to mi wejdzie do podprogramu zdefiniowanego dla zupełnie innego przycisku ( zaznaczam, że tylko w obrębie tej samej kolumny, czyli np. w menu1 mam podprogramy dla przycisku 1 i 4 a będę wciskać wielokrotnie 7, to mi w końcu wskoczy w podprogram dla klawisza 1). Tu też nie wiem co jest powodem. Klawiaturę połączyłem tradycyjnie poprzez microswitche i jest podpięta do portu C.
Projektuje właśnie PCB i z wiedzy teoretycznej wnioskuje, że przy równo rozłożonej masie ( a nie jak na płytce stykowej, gdzie jest kilka szyn GND połączone drucikiem) oraz bliskości AVR z innymi elementami elektronicznymi (chodzi mi głównie o kondensatory, które powinny być bardzo blisko pinów zasilających) powinny moje dolegliwości zniknąć (głównie z myślą o problemie 1). Tylko czy oby na pewno??
