Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Atmega8L,Bascom AVR - Błąd w czasie sprawdzania

tadeuszgr 22 Feb 2015 19:00 1635 22
IGE-XAO
  • #1
    tadeuszgr
    Level 18  
    Jestem początkujący.Proszę o pomoc Atmega8L,Bascom AVR - Błąd w czasie sprawdzania
  • IGE-XAO
  • #2
    mickpr
    Level 39  
    Jaki układ AVR wybrałeś? Mi wydaje się, że nie wybrałeś właściwego - tylko inny, który nie ma portu C.
  • IGE-XAO
  • #3
    tadeuszgr
    Level 18  
    Mogę wybrać tylko Atmega 8,innego nie ma na liście
  • #4
    mickpr
    Level 39  
    Pokaż zakładkę wyboru chip-a
    Z menu wybierz: Options->Compiler->Chip
  • Helpful post
    #6
    mickpr
    Level 39  
    ATTINY2313 nie ma portu "C".
    Wybierz m8def.dat (taki wybór odpowiada Atmega8), kliknij OK, skompiluj raz jeszcze.
  • #7
    piotrva
    VIP Meritorious for electroda.pl
    A ja polecam używanie dyrektywy $regfile = "" - wtedy typ procesora związany jest z programem, a nie z ustawieniami środowiska.
    Czyli dodaj w pierwszej linijce programu
    Code: basic4gl
    Log in, to see the code
  • #8
    tadeuszgr
    Level 18  
    Nie wpadłbym na to,jest gdzieś zestawienie tych symboli?Błąd zniknął ,myślę że pojadę dalej bo utknąłem na dwa dni.Serdeczne dzięki,nacisnę {pomógł}
  • #10
    tadeuszgr
    Level 18  
    Witam
    Radosnych świąt Wielkanocnych życzę.
    Nie mogę wykonać ćwiczenia nr 6 {Licznik binarny i dekadowy}z MOŁ.{luty 2003 EdW}dokładnie'C006b'.Nie mam płytki testowej,bazuję na elementach z demontażu.Podłączyłem wyświetlacz LTD 5816R{http://standby-shop.eu/photo/_pdf/LTD5816R.pdf?sess_id=89adb732f84c7f83b4b926fc512c1feb}katody pod kolejne piny portu B{portB.0 -segmentA itd. i na nim nie mam cyfr po ludzku tylko po chińsku.Zrobiłem drugi wariant połączeń,pod kolejne piny portu B podłączyłem odpowiednio diody LED i zauważyłem,że nie zapalają się kolejno od 1-8 tylko pierwsze 4 w jakiś cyklicznych kombinacjach.Proszę o pomoc łopatologicznie.Mój program to 'mol_listingi C006b rozszerzony o port C'
  • #11
    emarcus
    Level 38  
    tadeuszgr wrote:
    Witam

    Nie mogę wykonać ćwiczenia nr 6 {Licznik binarny i dekadowy}z MOŁ.{luty 2003 EdW}dokładnie'C006b'.
    Podłączyłem wyświetlacz LTD 5816R,..., - katody pod kolejne piny portu B{portB.0 -segmentA itd. i na nim nie mam cyfr po ludzku tylko po chińsku.....
    Zrobiłem drugi wariant połączeń,pod kolejne piny portu B podłączyłem odpowiednio diody LED i zauważyłem,że nie zapalają się kolejno od 1-8 tylko.....

    Nie robisz w zasadzie nic złego, ani też program nie funkcjonuje błędnie(!)\
    Twój wyświetlacz to LED ze wspólną Anodą, którą masz podłączoną na razie do VCC.
    Popatrz na port z podłączonymi segmentami i początkowa wartośc portu:
    (Portd = &B1110111)- już na początku powinien zapalic się segment: d ; - pozostałe segmenty są wygaszone!!!!!
    W tym konkretnym przypadku sterujesz bezpośrednio segmentami bez decodera(!).
    Zauważ że, obniżając sukcesywnie zawartośc portu o '1', będą to zmiany binarne, które dopiero po zdekodowaniu mogą wyświetlic wartości decimal na 7-segm. wyśw. - spodziewane (0-9). Ta wartośc binarna musiałaby byc zdekodowana na przykład (układ BCD -> 7-segm: CD4028, wymagane tylko 4 bity: D.0 - D.3); albo dodatkowa dekodująca subrutyna w programie; stosowana zazwyczaj w sterowaniu multiplexowym wielocyfrowych LED.
    Wtedy jednak zmienną do wyświetlenia nie jest aktualna zawartośc portu.
    Tu port z wyświetlaczem musiałby byc zmapowany w/g aktualnie podłączonych segmentów; (a) w tabeli i funkcji 'lookup' albo też (b) możesz użyc funkcji 'case'
    Mam nadzieję że cie nie 'zgubiłem' i coś z tego zrozumiesz.

    e marcus
  • #12
    tadeuszgr
    Level 18  
    Dziękuję za pomoc kiedy większość świętuje. Wiadomość od EMARCUS oraz analiza dalszych ćwiczeń rozjaśniła mi całkowicie 'zaćmienie',nawet trochę się wstydzę,że mogłem zadać tak banalne pytanie.
  • #13
    emarcus
    Level 38  
    tadeuszgr wrote:
    Dziękuję za pomoc


    You're Welcome!
    e marcus
  • #14
    tadeuszgr
    Level 18  
    Plik C0006d wyświetlacz nie świeci,na końcówkach portu B stany wysokie.Gdzie przyczyna?
  • #15
    emarcus
    Level 38  
    tadeuszgr wrote:
    Plik C0006d wyświetlacz nie świeci,na końcówkach portu B stany wysokie.Gdzie przyczyna?

    Nie wiem...., nie widac schematu....
    Prawdopodobnie nie wykonuje się instrukcja z etykiety 'Zwiększ:' ; albo nie wchodzisz w nią.
    Czy masz podłączony przycisk S1 pomiędzy PIND.0 i GND?

    e marcus
  • #17
    emarcus
    Level 38  
    tadeuszgr wrote:
    Trochę czasu minęło bo uczę się EAGLE.


    Brak reakcji wyświetlacza jest wynikiem braku napięcia na anodach wyświetlaczy 7 segm. Pomierz je..
    Popatrz jeszcze raz na swój diagram.
    Napięcie zasilania (+V) anod chcesz załączyc tranzystorem PNP podając stan niski (0) na Pin PD.3 sterujący bazę tranzystora T2. Taka kombinacja nie załączy tranzystora.....; -będzie tam w dalszym ciągu około 2.5 V.
    Atmega8L,Bascom AVR - Błąd w czasie sprawdzania

    Odnośnie układu:
    Masz tu dwie opcje: albo usunąc Rezystor R2 (nie jest w zasadzie konieczny), albo zmienic wartości rezystorów R1 i R2;' tak aby R2 był około 10x R1.

    e marcus
  • #19
    tadeuszgr
    Level 18  
    Problem nie tkwi w zasilaniu wyświetlacza -wzorowałem się na schemacie AVR2313 Demo Board z EdW 2002 grudzień a poza tym w poprzednim ćwiczeniu -C006c działał.Port PD3 nie miał stanu niskiego.Przeprogramowałem mP i jest zasilanie ale wyświetlacz dalej nie świeci.
    Myślę ,że problem tkwi gdzieś w programowaniu bo pojawia się komunikat:Diference it 00000 po poleceniu 'Program".
    Chciałem pokazać mój program zmodyfikowany na Atmega 8 ale nie potrafię zapisać pliku .bas do PDF.
    Przepraszam,jeśli nadużywam Państwa czas wolny.
  • #20
    User removed account
    User removed account  
  • #21
    mickpr
    Level 39  
    tadeuszgr wrote:
    Myślę ,że problem tkwi gdzieś w programowaniu bo pojawia się komunikat:Diference it 00000 po poleceniu 'Program".
    Czy raczej "Difference AT 00000" ?

    Dobrze myślisz. To nie jest ani wina w schemacie, ani wina w programie, tylko po prostu twoja Atmega się nie zaprogramowała.
    Występuje więc różnica (difference) między zawartością komórki Flash o adresie 0, a tym co wygenerował kompilator i co chciałeś w Atmegę "wgrać".
  • #22
    emarcus
    Level 38  
    mickpr wrote:
    emarcus wrote:
    Taka kombinacja nie załączy tranzystora.....; -będzie tam w dalszym ciągu około 2.5 V.
    Czy aby na pewno??? Różnica napięć na końcach rezystora R2 będzie WYSTARCZAJĄCA, aby tranzystor był WYSTEROWANY. Nie będzie tam 2,5V, tylko około 0,7V


    Czy aby na pewno???.....

    A czy ty przynajmniej widziałeś ten jego układ (?).... i nie dopatrzyłeś że baza Tranzystora T2 jest zasilana z symetrycznego dzielnika napęcia (R1 = R2)?

    e marcus
  • #23
    mickpr
    Level 39  
    emarcus wrote:
    Czy aby na pewno???.....

    A czy ty przynajmniej widziałeś ten jego układ (?).... i nie dopatrzyłeś że baza Tranzystora T2 jest zasilana z symetrycznego dzielnika napęcia (R1 = R2)?

    Zanim zaczniesz kogoś krytykować sprawdź, czy sam nie palnąłeś głupstwa.
    Pomijasz fakt podłączenia równolegle do R2 złącza B-E tranzystora przy obliczaniu tego dzielnika.
    Tranzystor można pomijać - w sytuacji, kiedy napięcie na złączu B-E (czyli też na R2) będzie mniejsze niż 0,7V (napięcie przewodzenia złącza B-E).
    Taka sytuacja będzie w momencie występowania stanu "H" na PD.3, a nie w tej sytuacji, o której piszemy (stan "L" na PD.3).

    Ponieważ złącze B-E podpięte jest do plusa, a nie do masy, więc na bazie (przy
    0V podanych na pin PD.3) będzie napięcie w przybliżeniu 5V - 0,7V = około 4,3V.

    Nigdy nie będzie tam 2,5V - chyba, że tranzystor będzie uszkodzony, lub odpięty.

    Zresztą... symulator kłamie? Chcesz dyskutować z rzeczywistością?
    Specjalnie dałem na symulacji podgląd napięć i prądów, żeby nie było niejasności.
    Jest też przełącznik, którym możesz sobie przełączyć (kliknąć nań) sygnał z PD.3 (podawany na bazę przez R1) z 0 na 5V i odwrotnie.
    Nawet nie spojrzałeś. A ty mi zarzucasz, że nie widziałem schematu!