ATmega16 problem :(

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
misha89
Użytkownik
Posty: 150
Rejestracja: 06 lip 2006, 17:15
Lokalizacja: Ryki
Kontakt:

ATmega16 problem :(

Post autor: misha89 » 28 gru 2006, 22:04

Witam
Mam problem z ktorym nie moge sobie dac rady. Zrobilem uklad jak na zdjeciu (czarny kolor), zaprogramowalem zalaczonym programem. Jest to bardzo prosty system zbudowany by sprawdzic dzialanie samodzielnie zrobionej plytki z atmega16. Problem polega na tym ze uklad po wlaczenu robi co chce, praktycznie wogole nie reaguje na przycisk. Jednak wszystko zaczyna dzialac prawidlowo gdy podlacze woltomierz (kolor czerwony). Zapewne to wszystko powoduja zaklucenia ale jak to mozliwe ze dzieki woltomierzowi sie ich pozbywam? Prosze pomozcie bo ja sie zalamuje :(

Program:

Kod: Zaznacz cały

Config Porta = &B00111111
Porta = &B1111111

$crystal = 8000000

Dim A As Byte

A=0
Cls
Lcd "test"
Wait 1
Cls

Do

If Pina.7 = 0 Then                                         
   Waitms 20                                             
   If Pina.7 = 0 Then                                     
       Incr A
       Cls
       Lcd A                                             

   End If                                           
End If
Loop
End
Załączniki
zalacznik.GIF
(4.56 KiB) Pobrany 1761 razy

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 28 gru 2006, 22:11

Przyjrzyj się drugiej linijce - zapisujesz tylko 7 jedynek, a tej ósmej, najwazniejszej nie. W wyniku tego PA7 nie ma podciagania. Po podłaczeniu woltomierza PA7 jest podciagnięte przez jego rezystancję wewnętrzną.

ZbeeGin

Post autor: ZbeeGin » 28 gru 2006, 22:13

misha1024 pisze:Config Porta = &B00111111
Porta = &B1111111
Czyż nie powinno być:

Config Porta = &B00111111
Porta = &B11111111

Nie masz włączonego układu pull-up. Nie dziw się zatem, że voltomierz dostarcza napięcia +5V pomniejszonego o spadek na rezystancji dzielnika, wymuszając tym samym stan wysoki na końcówce portu - tak jak robi to układ pull-up.

[ Dodano: 2006-12-28, 22:14 ]
Radzio - wygrałeś o "włos". :mrgreen:

Awatar użytkownika
misha89
Użytkownik
Posty: 150
Rejestracja: 06 lip 2006, 17:15
Lokalizacja: Ryki
Kontakt:

Post autor: misha89 » 28 gru 2006, 23:35

Nie zauwazylem tego. Jutro to sprawdze. Dziekuje bardzo Wam obu :)

Awatar użytkownika
Aro
Użytkownik
Posty: 677
Rejestracja: 30 paź 2006, 18:49
Lokalizacja: Świerczyniec | Wrocław
Kontakt:

Post autor: Aro » 29 gru 2006, 9:58

Z mojego doświadczenia wiem że pull-up nie jest najlepszym rozwiązaniem dla więcej niż jednego przycisku. Po prostu przy naciśnięciu jednego przycisku cały port schodzi w stan niski. Dla kilku przycisków lepiej jest podciągnąc każdy do VCC przez rezystor.

Awatar użytkownika
misha89
Użytkownik
Posty: 150
Rejestracja: 06 lip 2006, 17:15
Lokalizacja: Ryki
Kontakt:

Post autor: misha89 » 29 gru 2006, 14:07

Aro jaka wartosc powinien miec ten rezystor?

ZbeeGin

Post autor: ZbeeGin » 29 gru 2006, 18:59

Wartość bezpieczna to około 1k-2.2k. Jednak jak dodasz zapomnianą jedynkę w instrukcji PORT = to włączysz wewnętrzne podciąganie (odpowiednio spolaryzowany tranzystor MOSFET) które powinno wystarczyć.

ODPOWIEDZ