Skocz do zawartości

[Kurs] BASCOM - lekcja3 - zaczynamy programować


Ikar

Pomocna odpowiedź

bartek1333 ogromnie dziękuję. Chciałem żeby działało inaczej niż Ty to napisałeś, ale rozumiem już 'obsługę' tych switchy. I sam poprawiłem, 2 switche, 2 diody - 1 switch wciśnięty jedna dioda świeci, drugi switch wciśnięty druga dioda świeci. (po puszczeniu danego switcha dana dioda gaśnie)

                        $regfile = "attiny2313.dat"                                 'typ proca
$crystal = 1000000                                          'taktowanie


Config Portb = Output                                       'port b  jako wyjścia
      Portb = &B11111111                                   'wszędzie stan spoczynkowy-1
Config Portd = Input                                        'pprt d jako wejścia
      Portd = &B1111111                                    'wszędzie stan spoczynkowy-1



      Do                                                   'petla neiskonczona

If Pind.1 = 0 Then                                         'jesli switch 1 wciśnięty to
Portb.3 = 0                                                 'dioda czerwona świeci
End If

If Pind.1 = 1 Then                                          'Jeśli Switch 1 Niewciśniety to
Portb.3 = 1                                                 'dioda czerwona nieświeci
End If

If Pind.2 = 0 Then                                          'jeśli switch 2 wciśnięty to
Portb.2 = 0                                                 'dioda żółta świeci
End If


If Pind.2 = 1 Then                                          'jesli switch 2 nie wciśnięty to
Portb.2 = 1                                                 'dioda żółta nie świeci
End If

      Loop                                                 'koniec petli

End

Sabre Do helpa nie zajrzałem, faktycznie, możliwe, ze tam byłoby to dobrze opisane 😳. Jak dla mnie to najprościej nauczyć się czegoś na przykładzie. W kursie przykład jest błędny dlatego nie zrozumiałem tego. bartek1333 podał mi przykład programu w którym układ chociaż reaguje na switcha, ale nie działa tak jak chciałem. I wydedukowałem z tego jak powinno się podłączać i zapisywać w programie switcha.

Sabre w tej chwili kod z Twojego postu wydaje mi się już oczywisty. 🙂

Bardzo Wam dziękuję za pomoc.

Link do komentarza
Share on other sites

Jak dla mnie to najprościej nauczyć się czegoś na przykładzie.

Łatwo jest się nauczyć na przykładzie o ile jest on poprawny, a to co ty rodzisz to takie próby na chybił trafił, może się uda a może nie, ale spróbuję. No i tworzy się kilkanaście postów na temat, który mogłeś spokojnie znaleźć w helpie, albo na poprzednich stronach tego tematu.

Link do komentarza
Share on other sites

Linux jak dla mnie ten program jest nie potrzebny pod samego switcha jak podłaczysz diode to jak wcisniesz swieci puścisz nie swieci. Nie zebym sie czepiał:PP ale lepsze by było zmieniać np stan wyjscia nacisniesz zmieni stan z 0 na 1 po ponownym znów zmieni z 1 na 0:) wiecej nauczy

Link do komentarza
Share on other sites

Zbudowałem wszystko identycznie jak na tym kursie tylko dałem ATmegę8 zamiast Attiny2313.

Wszytko wygląda tak:

Program napisany jest tak jak w 3 lekcji, że przycisk 1 ma zapalać zieloną diodę, a 2 ma ją gasić. Ale nie wiem czemu dioda świeci się cały czas i prawie nie reaguje na przyciski.

Wszystkiego rodzaju migacze działają poprawnie ale z przyciskami jest problem.

Co jest nie tak???

Oczywiście zmieniłem na swój procek $regfile = "m8def.dat".

POMOCY

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dzięki, że chcesz mi pomóc. Niewielu takich. 😋

Zamieszczam dodatkowe informacje 😃

Zdjęcia płytki od strony lutów:

Schemat całej płytki:

Kod programu:

$regfile = "m8def.dat"                      'typ procka 
$crystal = 1000000                          'taktowanie

config portb=input                          'port b  jako wejścia 
      portb=&B00000000                     'wszędzie stan spoczynkowy-0 
config portd=output                         'port d jako wyjścia 
      portd=&B0000000                      'wszędzie stan spoczynkowy-0 


do                                         'pętla nieskończona 

  if pinb.0=1 then                         'jeżeli przycisk 1 wciśnięty 
  toggle portd.0                           'zmień stan wyprowadzenia 
  endif                                    'koniec bloku warunkowego 

loop                                       'koniec pętli 
end

To już chyba wszytko. Jeśli wiesz co jest nie tak to proszę pomóż :]

Link do komentarza
Share on other sites

barteq, ten program na dłuższa metę Ci nie będzie działać. Włącz rezystory podciągające na pinach od przycisków, to po pierwsze. Po drugie, zauważ, tak długo jak trzymasz wciśnięty przycisk, tak długo będą się w kółko zmieniały stany na Portd.0. Ja bym użył debounce albo ifa, w taki sposób:

If Pinb.0 = 1 Then
Waitms 25
If Pinb.0 = 1 Then
Toggle Portd.0
Do
Loop until pinb.0 = 0
End if
End if

Lecz pomimo wszystkiego co tu napisałem, układ powinien dawać oznaki jakiejś pracy, choćby losowe. Jeżeli nic się nie dzieje, to poszukaj błędu po stronie montażu.

[ Dodano: 12-08-2011, 22:09 ]

Jak coś pokopałem to pisać, bo już zmęczony trochę jestem 😉

  • Lubię! 1
Link do komentarza
Share on other sites

Witam, sory za odkop ale przeczytałem każdą stronę i nie znam dalej odpowiedzi.

Mam pytanie czy jak wgram program jeden a za jakiś czas chcę wgrac drugi to ten stary jakoś trzeba usunąć czy po prostu podłączyć skompilować i wgrać nowy?

Link do komentarza
Share on other sites

Nie trzeba nic usuwać. Zdaje się, że przed zapisem nowego programu Bascom czyści pamięć lub nadpisuje stary program nowymi danymi. W każdym razie nie trzeba nic kasować - wgrywasz po prostu nowy program.

Link do komentarza
Share on other sites

Nie trzeba nic usuwać. Zdaje się, że przed zapisem nowego programu Bascom czyści pamięć lub nadpisuje stary program nowymi danymi. W każdym razie nie trzeba nic kasować - wgrywasz po prostu nowy program.

Zawsze trzeba kasować, choć zapewne jest to automatycznie wykonywane przez BASCOM, jako pierwszy krok programowania.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.