mavi napisał: Tak jak już wcześniej napisałem procesor atmega32 mam wmontowany w płytkę testową i wszelkie próbne programy producenta są z konfiguracją :
$crystal = 16000000
Ok. Ale to wcale nie oznacza, że twój uC pracuje z taką częstotliwością. W zasadzie to sam powinieneś wiedzieć, z jaką częstotliwością pracuje ustawiając to samodzielnie.
mavi napisał: Wracając do mojego problemu to muszą to być zakłócenia bo mimo komend dioda potrafi migać mimo, że nie naciskam przycisku. Co ciekawe zapala się wtedy gdy zbliżam ręke do płytki i nawet jej nie dotykam. Dioda gaśnie po kilku sekundach od chwili gdy rękę oddalam.... Już myślałem, że to wadliwy mikrostyk ale odłączając przewód od tego przycisku efekt jest identyczny.
Dopisałem komendy by w chwili gdy przyciskam przycisk prócz zapalającej się diody, na wyświeltaczu lcd zmianiał również tekst.
I efekt jest taki jak wcześniej, czyli zbliżam rękę zapala się dioda i zmienia się tekst na wyświetlaczu.
Jeśli pozostawie układ sam sobie z dala ode mnie to po dłuższym czasie dioda też sie sama zapala i gaśnie.
W tym przykładowym programiku powyżej korzystasz tylko z dwóch pinów uC a pozostałe pozostają na fabrycznych ustawieniach, czyli jako pływające wejścia a to powoduje że twój uC to taka antenka, która podatna jest na wszelkiego rodzaju zewnętrzne zakłócenia. Dlatego najlepiej jest na nieużywanych pinach skonfigurować jakieś konkretne kierunki działania (wejście lub wyjście) i ustalić na nich jakieś określone stany. Nie znam twojego układu, dlatego nic konkretnego ci nie doradzę. Poza tym, co się dziej z pinem reset w twoim układzie? Ja tego nie wiem, bo nie widzę schematu. Stabilne zasilanie układu również jest bardzo istotne.
mavi napisał: Dodam, że zgodnie z radą przypomniałem sobie o komendzie
set PORTB.0 i jest ona w moim programie.
Tu nie chodzi o instrukcje Set bo oznacza ona tyle, co wpisanie jedynki do odpowiedniego bitu odpowiedniego rejestru a można to zrobić na wiele innych sposobów choćby PORTB.0=1 a najlepiej wykorzystywać do tego operatory bitowe. Chodzi o to żebyś wiedział gdzie tą jedynkę masz wpisać żeby osiągnąć zamierzone działanie programu. A ty albo tego nie robiłeś wogóle albo ktoś inny próbował ją wpisać nie tam gdzie trzeba.
Popatrz wyżej takie coś jest bez sensu:
Zaloguj się, aby zobaczyć kod
dlatego że rejestr PINx w m32 jest tylko do odczytu i nie można wpisać do niego żadnej wartości.
A tak wogóle to przyjmij dobrą radę. Skoro dopiero zaczynasz z B_Basic to najlepiej o nim zapomnij i zacznij uczyć się C bez porównania większa kontrola nad wszystkim z poziomu składni samego języka. A optymalizacja to już zupełnie inna bajka.