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

Fragment schematu z mikrokontrolerem Atmega 16

Stork 26 Mar 2008 20:33 3499 21
  • #1 26 Mar 2008 20:33
    Stork
    Poziom 17  

    Czy zamieszczony w załączniku fragment aplikacji jest poprawny?

    0 21
  • Arrow Multisolution Day
  • Pomocny post
    #2 26 Mar 2008 20:37
    Balu
    Poziom 38  

    Si, tylko pamiętaj żeby poukładać kondensatory jak najbliżej odpowiednich nóżek:)

    0
  • Arrow Multisolution Day
  • Pomocny post
    #3 26 Mar 2008 20:41
    mirekk36
    Poziom 42  

    to podłączenie bezpośrednie portu PA7 oraz PB4 z VCC bez żadnego rezystora wygląda co najmniej dziwnie. A niech przypadkiem piny te zostaną ustawione jako wejścia ze stanem logicznym ZERO - no i zwarciątko gotowe

    Dodano po 1 [minuty]:

    a i ja bym dał oczywiście jeszcze jakiś mały elektrolit typu 22uF pomiędzy nóżkami VCC i GND zaraz obok tego 100nF

    0
  • Pomocny post
    #4 26 Mar 2008 20:41
    Balu
    Poziom 38  

    Chyba jako wyjścia:) Ale fakt niezwróciłem uwagi na nie.. dziwnie... i w sumie... po co?:>

    0
  • Pomocny post
    #5 26 Mar 2008 20:48
    mirekk36
    Poziom 42  

    oczywiście, że jako wyjścia - literówka ;)

    0
  • #6 26 Mar 2008 21:12
    Stork
    Poziom 17  

    Konfiguracja wejść/wyjść portów PA i PB wygląda następująco:

    DDRA = &B01111000
    DDRB = &B11100011

    Czy w takiej konfiguracji w bieżącej aplikacji następuje zwarcie?

    0
  • Pomocny post
    #7 26 Mar 2008 21:20
    mirekk36
    Poziom 42  

    oczywiście, że w takiej konfiguracji nie występuje zwarcie - ale to nie oznacza, że tak się robi jak to pokazałeś na schemacie. Czemu ma służyć to podpięcie bezpośrednio do VCC bez rezystorów ???? Zwykle podłącza się przez rezystory do VCC piny portów wejściowych czy wyjściowych po to aby uzuskać zewnętrzny PullUp (podciąnięcie do VCC) .... a takie praktyki jak tu pokazałeś są złe

    pytałeś czy ten fragment jest poprawny - więc usłyszałeś z dwóch źródeł , że takie podłączenie pinów do VCC jest bez sensu i to wszystko. Oczywiście możesz zrobić co chcesz i budować tak układy ale kiedyś się sam na tym "przejedziesz" albo ktoś cię "przewiezie"

    tym bardziej , że jak już zrobisz

    DDRA = &B01111000

    to można zrobić

    SET PORTA.7 (zależy w jakim języku oczywiście) ale generalnie ustawić pin 7 portu wyjściowego w stan 1 co spowoduje ci programowe podciągnięcie do VCC i już może samo to wystarczy w całym twoim układzie, jeśli tak mocno nie chcesz czy nie możesz zastosować rezystora zewnętrznego

    0
  • #8 26 Mar 2008 21:49
    Stork
    Poziom 17  

    Program jest w BASCOM. Rozumiem że można wykonać to:

    1. Odłączając PA7 i PB4 od VCC i w programie dodać zapis SET PORTA.7

    2. Zastosować rezystory podciągające piny PA7 i PB4 do VCC.

    I w związku z tym jeszcze dwa pytania.

    W którym miejscu programu umieścić zapis SET PORTA.7? Pod deklaracją wyjść/wejść?

    Jakiej wartości powinny być rezystory podciągające?

    0
  • Pomocny post
    #9 26 Mar 2008 22:06
    Balu
    Poziom 38  

    A ja będę drążył, a po co Ci to jest potrzebne to VCC na tamtych nóżkach?:>
    2) tak ostawiając odpowiednio DDR i PORT bez zewnętrznych elementów.
    3) po konfiguracji portów
    4) wbudowane są około 20...50kOhm jak dobrze pamiętam, jak byś chciał bardzo zewnętrzne to 1...10k zależnie od zaśmiecenia otoczenia EM.

    0
  • #10 26 Mar 2008 22:41
    Stork
    Poziom 17  

    Odłączyłem VCC od PA7 i PB4, ale problem który mam z zaprogramowanym procesorem w gotowej już aplikacji występuje nadal. Mianowicie na ekranie wyświetlacza niezależnie czy procesor jest włożony w podstawkę czy układ włączony jest bez niego, pojawia się tylko pasek regulacji kontrastu, która działa, ale tylko w jednym wierszu LCD. Na pinie 29 oznaczonego na powyższym schemacie jako WYS, powinno pojawić się napięcie które, przez rezystor 27 Ohm podawane jest na podświetlenie LCD. Procesor jednak nie podaje napięcia. Zatem LCD milczy zarówno jeśli chodzi o wyświetlanie danych jak i podświetlenie. Dodam że program kompiluje się i wgrywa do procesora bezproblemowo, a jego symulacja w BASCOMIE przebiega pomyślnie. Domyślam się zatem że problem tkwić może w samym układzie połączeń na PCB. Jednak badania płytki przy pomocy omomierza dowodzą że są one zgodne ze schematem. Ewentualne uszkodzenie procesora też jest wykluczone ponieważ próbowałem uruchomić układ na innym egzemplarzu. Bez zmian. Jak można sprawdzić jeszcze dlaczego procesor "nie rusza"?

    0
  • Pomocny post
    #11 26 Mar 2008 22:54
    mirekk36
    Poziom 42  

    a jak kolega podpiął ten wyświetlacz dokładnie???, to już trzeba było zapodać też kawałek schematu z wyświetlaczem bo i tu mogą czaić się błędy.

    pierwszy, który przychodzi mi do głowy to to, że piszesz iż bezośrednio z pinu portu (twoje wyjście WYS) sterujesz jakimś bliżej nie określonym podświetleniem. Co to w ogóle jest za wyświetlacz, który jak mówisz ma jakiś pojawiający się pasek kontrastu??? - Natomiast jeśli to wyjście WYS ma zapewnić zasilanie diod LED w podświetleniu wyświetlacza to najczęściej będzie problem w takiej konfiguracji bo takie diody lubią "zjeść" dużo więcej prądu niż 20mA, które może im zaoferować jeden pin procka. Tak więc sterowanie podświetlaniem w takich przypadkach robi się co najmniej przez jakiś tranzystor.

    podejrzewam (ale mogę się mylić), że masz jakiś co najmniej dwuwierszowy zwykły LCD. I obojętnie, czy z podłączonym prockiem, czy bez to podczas gdy regulujesz potencjometrem kntrast to pojawia się poprostu tylko jeden wiersz a nie żaden pasek kontrastu. A to może oznaczać tylko, że wyświetlacz jest nie zainjalizowany i/albo na dodatek właśnie źle podłączony jeśli chodzi o pinologię.

    Drugim problemem może być to, że nie użyłeś albo błędnie użyłeś polecenia Config LCD w programie. Pokaż więc poza schematem podłączenia też fragment kodu - jak inicjalizujesz w programie wyświetlacz i wtedy zapewne dużo więcej się wyjaśni i uda się coś podpowiedzieć.

    0
  • #12 26 Mar 2008 23:02
    Balu
    Poziom 38  

    <wróży z kart i fusów> Podziwiam kolego mirekk36:D

    0
  • Pomocny post
    #13 26 Mar 2008 23:07
    mirekk36
    Poziom 42  

    no tak może się zagalopowałem bo zaraz się okaże, że to jakiś może wyświetlacz graficzny albo co innego no ale poczekamy zobaczymy co szanowny pan kolega autor opisze i czy poda w końcu garść informacji n/t swojego problemu czy tylko będzie po kawałku odkrywał karty abyśmy mogli mieć zgadywankę

    0
  • #14 26 Mar 2008 23:54
    Stork
    Poziom 17  

    Wyświetlacz to standardowy 2x20. Co do paska kontrastu miałem na myśli właśnie wiersz pojawiający podczas regulacji kontrastu potencjometrem. Zastanowiło mnie dlaczego zaczernia się tylko jeden z wierszy skoro LCD dysponuje dwoma. Dodaję schemat podłączenia LCD i fragment kodu konfiguracji portów do wyświetlacza. Połączenia LCD z procesorem sprawdzałem już na wszelkie sposoby, włącznie z podłączeniem, innego wyświetlacza (2x16), zachowując oczywiście odpowiednią logikę połączeń, sądząc że problem tkwi może właśnie w samym wyświetlaczu. Rezultat: Objaw identyczny.:|

    Konfiguracja LCD:

    Config Lcd = 20 * 2
    Config Lcdpin = Pin , Db7 = Portc.6 , Db6 = Portc.5 , Db5 = Portc.4 , Db4 = Portc.3 , E = Portc.2 , Rs = Portc.1
    Wys Alias Portc.7

    0
  • #15 27 Mar 2008 00:06
    Balu
    Poziom 38  

    Podłączenie wydaje się ok. Te rezystory 47 Ohm średnio potrzebne jak tylko piszesz do tego wyświetlacza.
    Jedna linia zapalona znaczy, że kontrast jest, tylko błędna inicjalizacja.
    Podświetlenie w ten sposób podświeltenia... IMO NIEDOPUSZCZALNE! Gdyby chociaż na odwrót, sterowanie masą... ale nie... Ehhh Zmień sterowanie podświetleniem na tranzsytor npn baza na (przez rezystor)uC, masa na emiter kolektor na nóżkę 15 LCD, nóżka 16 100Ohm rezystor do +5V.

    Dodano po 1 [minuty]:

    Wiem :)
    Fusebit JTAGEN:)

    Dodano po 2 [minuty]:

    Ale na nóżce WYS powinno być napięcie i tak, chyba, że aż tak siada przez to podświetlenie...

    0
  • #16 27 Mar 2008 00:27
    Stork
    Poziom 17  

    Nawet po odłączeniu LCD na pinie 29 nie ma napiecia...

    A co do Fusebit JTAGEN to prosiłbym nieco więcej danych, ponieważ w mikrokontrolerach jestem dopiero początkujący.

    0
  • #17 27 Mar 2008 00:33
    Balu
    Poziom 38  

    OK po kolei, pokaż kod (CAŁY)
    Masz w nim ddrc=0xff?
    Masz w nim gdzieś set pinc.7?
    Jak używasz bascoma a tak wnioskuję programowanie-> ręczne -> fusebity-> wyłącz JTAG (NIC INNNEGO NIE RUSZAJ!)- chcesz informacji co to zrobi -> Datasheet.

    0
  • Pomocny post
    #19 27 Mar 2008 01:18
    Balu
    Poziom 38  

    Nigdzie w kodzie nie ma instrukcji odpowiedzialnej za włączenie podświetlenia.

    0
  • #20 27 Mar 2008 07:24
    PiotrPitucha
    Poziom 33  

    Witam
    Reset do zasilania przez 10K podłączyłeś czy wisi w powietrzu ??
    Piotr

    0
  • Pomocny post
    #21 27 Mar 2008 09:05
    mirekk36
    Poziom 42  

    po kolei...

    po pierwsze jak już ktoś też wspominał wyrzuć te rezystory 47R na liniach D0-D4 oraz RS i EN

    po drugie odłącz to podświetlanie od tego pinu WYS (zrób przez tranzystor - też ktoś już podpowiedział tranzystor zwykły npn)

    po trzecie ja na twoim miejcu tak bym konfigurował porty:

    Code:
    Config PORTA = &B01111000


    zamiast

    Code:
    Ddra = &B01111000


    albo jeszcze przejrzyściej chociaż więcej kodu:

    Code:
    Config PINA.7 = Input
    
    Config PINA.6 = Output
    Config PINA.5 = Output
    Config PINA.4 = Output
    Config PINA.3 = Output
    Config PINA.2 = Input
    Config PINA.1 = Input
    Config PINA.0 = Input


    wtedy widzisz to jasno i przejrzyście - a naprawdę nie wiem i nie mogę sie doczytać co znaczy samo Ddra = coś tam

    kolejna rzecz, jak już ustawisz kierunki portów to nie ma sensu pisać :

    Code:
    Porta = &B00000000 


    chyba, że chcesz właśnie konkretne piny podciągnąć do VCC

    ale wtedy też można to zrobić tak jak już wspominałem:

    Code:
    Set PORTA.7
    
    itd


    ..... kolejna b.ważna rzecz, jaką dostrzegł rzeczywiście wcześniej jeden z kolegów to MUSISZ WYŁĄCZYĆ FuseBit JtagEn

    wejdź w Bascomie w zakładkę programowanie, odczytają ci się bieżące fusebity, i jeśli nie potrzebujesz sam zmieniać nic jeśli chodzi o częstotliwość taktowania procka to spokojnie wyłącz tylko ten JTAG bo on jeśli jest włączony to blokuje ci normalne działanie niektórych pinów (to normalne) a jak go wyłączysz to wszystko ładnie ruszy

    tylko tak się zastanawiam, czy przestawiłeś sobie ATmega16 na taktowanie 8MHz skoro na początku programu masz to tak zadeklarowane ???

    0
  • #22 27 Mar 2008 18:25
    Stork
    Poziom 17  

    Wyłączyłem JTAGA i wszystko działa ok! :) Podświetlenie przerobie tak jak sugerujecie! Wielkie Merci!

    0