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

[Attiny2313]+[rs232]+[bascom terminal]

udam_u 25 Maj 2008 12:43 4291 16
  • #1 25 Maj 2008 12:43
    udam_u
    Poziom 10  

    Witam!
    Mam plytke ZL11AVR z mikrokontrolerem Attiny2313. Podpiąłem płytkę pod rs232 i uruchomiłem program:

    Code:
    'C025a   Łącze RS-232   Napisy z peceta
    
    Dim B As Byte
    Cls                                                         'czyść ekran LCD
    Lcd "Napisy z peceta"                                       'Napis w górnej linijce LCD
    Lowerline                                                   ' przenieś kursor na LCD do dolnej linii

    Do                                                          '  pętla
       B = Inkey()                                              '  sprawdza, czy został odebrany znak (bajt)
       If B > 0 Then                                            '  jeśli jakiś znak odebrany
          Print Chr(b);                                         'odsyła odebraną literę na ekran komputera
          Lcd Chr(b)                                            'wyświetla też tę literę (znak) na LCD
       End If
    Loop Until B = 27                                           'pętla czynna do naciśnięcia klawisza ESC
    Cls
    Lcd "Koniec zabawy!"                                        'napis końcowy
    End   



    Jak naciskam przyciski na klawiaturze przy aktywnym oknie terminala, to wyswietlaja mi sie na LCD ale na terminalu nie sa wyswietlane ani dane, ktore wprowadzam z klawiatury ani te, ktore powinny na niego wrocic poprzez PrintChr(). Czy to normalne..? W książce Mikrokontrolery dla poczatkujacych znaki wyswietlaly sie normalnie na terminalu. Bede wdzieczny za pomoc.
    Pozdrawiam!!!

    0 16
  • #2 25 Maj 2008 12:51
    dawid512
    Poziom 32  

    Cytat:
    Eceta "" 'Napis w górnej linijce LCLowerline ' przenieś kursor na LCD do dolnej lini
    tego zapisu nie rozumiem. Kod na tym forum zamieszcza sie w znacznikach "code". Nie zapomniałeś przypadkiem umieścic jeszce informacji o kwarcu oraz predkosci transmisji w programie? Na podstawie tych informacji ustawisz terminal.

    0
  • #3 25 Maj 2008 13:05
    udam_u
    Poziom 10  

    Kwarc jest ustawiony na 4MHz i szybkość transmisji 2400bodow. Wydaje mi sie, ze transmisja jest ok - skoro znaki wprowadzane z klawiatury komputera pojawiaja sie na LCD. Problem tkwi w tym, że wydaje mi sie, iż w terminalu powinny również pojawiac sie te znaki a ich nie ma. To samo dotyczy znakow wracajacych z mikroprocesora - chyba tez powinny wyswietlac sie w terminalu?

    0
  • #4 25 Maj 2008 13:17
    dawid512
    Poziom 32  

    Kolego w programie deklarujesz odpowiedni kwarc i predkosc transmisji. Uruchamiasz terminal i tam ustawiasz tak samo jak w programie.

    0
  • #5 25 Maj 2008 13:24
    udam_u
    Poziom 10  

    Dobra napiszę jeszcze raz w czym problem.

    W emulatorze terminala Bascoma jest okienko w które wpisuje tekst. I to co wpisuje pojawia sie na LCD - idzie przez RS232, więc transmisja do procesora jest i raczej jest skonfigurowane jak należy.

    Problem jest tylko w tym że to co wpisuję nie wyświetla się w okienku terminala. Nie wyświetlają mi się też na terminalu dane powrotne z mikroprocesora.

    Chodzi tylko o wyświetlanie na monitorze, w okienku terminala.

    Nie wiem czy tak ma być, czy coś naknociłem.

    0
  • #6 25 Maj 2008 13:50
    Utul
    Poziom 13  

    Witam
    Z tego co rozumiem LCD odbiera dane ale procek nie wysyła danych na terminal.
    - Masz aktywne okno terminala przy wpisywaniu liter
    - Kabelek odpowiedzialny za transmisję proc - komp masz dobrze podłączony

    Pozdro

    0
  • #7 25 Maj 2008 14:08
    udam_u
    Poziom 10  

    Utul napisał:
    Witam
    Z tego co rozumiem LCD odbiera dane ale procek nie wysyła danych na terminal.
    - Masz aktywne okno terminala przy wpisywaniu liter
    - Kabelek odpowiedzialny za transmisję proc - komp masz dobrze podłączony

    Pozdro


    Tak właśnie jest.

    0
  • #8 25 Maj 2008 15:22
    Utul
    Poziom 13  

    A na płytce masz wszystko dobrze podłączone..
    Nie wiem jak to podłączyłeś proc z MAXem w dokumentacji widze że trocha zworek tam jest.
    Pozdr

    0
  • #9 25 Maj 2008 16:17
    udam_u
    Poziom 10  

    Utul napisał:
    A na płytce masz wszystko dobrze podłączone..
    Nie wiem jak to podłączyłeś proc z MAXem w dokumentacji widze że trocha zworek tam jest.
    Pozdr

    Zworke J4 w pozycji 1-2
    Zworke J5 w pozycji 1-2
    Zworke J6 w pozycji 1-2

    Wydaje mi sie, ze J6 powinno byc ustawione na 2-3 ale przy tym ustawieniu nie sa wysylane dane nawet na LCD. Sprobowalem tez zrobic J4 J5 i J6 na 2-3 ale wtedy nie mam komunikacji z LCD. Przy ustawieniu J4 J5 na 2-3 a J6 1-2 jest komunikacja... Z dokumentacji jak dla mnie za wiele nie wynika za co zworka J6 odpowiada...
    http://www.btc.pl/pdf/zl11avr.pdf
    Pozdrawiam!!!

    EDIT:
    Port COM mam sprawny - jak zwieram Rxd i Txd to mam na terminalu to co pisze. Wyglada na to, ze moge wysylac dane do uC przez Rs232 ale on nie wysyla nic...moze chodzi o jakies ustawienia fusebit..? Prosze pomozcie...

    0
  • #10 25 Maj 2008 19:17
    dawid512
    Poziom 32  

    Spróbuj z tym programem:

    Code:
    $regfile = "m32def.dat"
    
    $crystal = 8000000

    $baud = 9600

    Dim I As Byte
    Dim Znak As String * 1

    Do

    Input "podaj wartosc I:" , I


    Print "wartosc I wynosi:" ; I

    If I = 1 Then
    Do
    Znak = Waitkey()

    Print "odebrano znak:" ; Znak

    Loop Until Znak = "k"

    End If

    If I = 2 Then
    Do
    I = Ischarwaiting()

    Print "flaga zawartosci bufora:" ; I

    Znak = Inkey()

    Print "w zmiennej Znak jest:" ; Znak

    Waitms 500

    Loop Until Znak = "k"

    End If

    Loop
    End

    0
  • #11 26 Maj 2008 01:22
    dawid512
    Poziom 32  

    Cytat:
    Koleś coś Ci się pop...... posłałeś kolesiowi pllik na AtMega 32 a on ma Atiny 2313,

    To zdanie świadczy jedynie o tym ze jestes w tym temacie laikiem. Chyba kazdy wie ze wystarczy zamiast:
    Code:
    $regfile = "M32def.dat"
    wpisać:
    Code:
    $regfile = "Attiny2313.dat"


    Poza tym ten programik ktory podalem wczesniej byl do testu.
    Problem tkwi jedynie w ustawieniu zworek. Wrzuć programik który Ci podałem i przesatwiaj je do momentu az procek się odezwie.

    0
  • #12 26 Maj 2008 21:04
    Utul
    Poziom 13  

    dawid512 Sorki za wczorajszy text, zwracam szacunek.

    dawid512 napisa

    Cytat:

    Chyba kazdy wie ze wystarczy zamiast:


    No na pewno nie kazdy wie.
    Pozdro

    0
  • #13 02 Cze 2008 20:10
    udam_u
    Poziom 10  

    Odpisuje tak późno, bo miałem kilka spraw do załatwienia, które skutecznie zredukowały moj wolny czas do zera.
    Utul i dawid512 obydwoje mieliście racje...
    Dokumentacja dołączona do zestawu ZL11AVR w sposób błędny opisuje ustawienia zworek. Dla potomnych piszę to co odkryłem:

    J5 (Ta jest dobrze opisana) pozwala wybrać sposób konwertowania napięć przy łączeniu płytki z komputerem:
    1-2 (MAX) poprzez układ MAX232
    2-3 (T) poprzez tranzystory

    J6 (w instrukcji źle opisana)
    W praktyce pełni taką funkcje:
    1-2 działa odbieranie danych z komputera (RxD)
    2-3 (RxD Off) odbieranie danych z komputera jest wyłączone ale z uC mozna wysylac dane do komputera

    J4 (w instrukcji źle opisana)
    W praktyce pełni taką funkcje::
    1-2 (Off) interfejs RS jest wyłączony
    2-3 (RS) interfejs RS jest włączony

    Ja używam konwertera opartego na MAX232 z obustronną komunikacją, więc moje ustawienia zworek to:
    J5:1-2, J6:1-2, J4:2-3

    Lepszy brak dokumentacji niż zła. ;) Jestem bardzo zdziwiony, że w dokumentacji zestawu dla POCZĄTKUJĄCYCH są takie pomyłki.

    Dodatkowo, ja również popełniłem błąd - miałem źle ustawione fusebits (wewnętrzny oscylator z dzielnikiem ustawionym na 8 ). Po przestawieniu na zewnetrzny 4MHz oraz ustawieniu zworek tak jak napisalem wyzej mam obustronna komunikacje.
    Dziękuje Dawidowi 512 i Utul'owi za pomoc.
    Pozdrawiam!!!

    0
  • #14 19 Lip 2008 01:42
    Ilmarinen
    Poziom 12  

    Witam, miałem (właściwie mam nadal) dokładnie ten sam problem co w temacie, ale nie mając dobrego kontrastu na lcd(zwarty do masy nic praktycznie nie widać) nie sprawdzałem czy sie cos na nim pojawi, kombinowałem we wszystkie strony, zajrzałem na forum, wyczytałem cos o fuse bitach i spróbowałem. Przekombinowałem i zablokowałem sobie procek teraz muszę sobie chyba zamówić 2 nowe (na wszelki wypadek:D). Będę próbował odblokować, ale na razie wybieram najprostsze rozwiązanie.

    Stąd moja prosba do udam_u o opisanie krok po kroku konfiguracji fusebitów w najnowszej wersji BASCOM-AVR, myśle że przysłużyło by sie to wielu początkującym ze mną włącznie. Z tego co przeczytałem do pełnego opisu rozwiązania tego problemu brakuje właśnie fusebitów.


    Pozdro

    0
  • #15 19 Lip 2008 01:51
    dawid512
    Poziom 32  

    CKSEL 3..1 dla 3-8MHz przykładowo 1110 SUT 00 a dla 8MHz i powyżej 1111 SUT 00.

    0
  • #16 20 Lip 2008 16:39
    Ilmarinen
    Poziom 12  

    Poczytałem trochę więcej o fusebitach i natknąłem sie na stronkę

    http://palmavr.sourceforge.net/cgi-bin/fc.cgi

    można tam na sucho poustawiać fusebity dla chyba wszystkich procesorów atmel avr, co ważniejsze jest to zrobione tak jak w BASCOM AVR. Wprowadziłem tam ustawienia które podałeś i wyszło mi że dla CKSEL 1110 i SUT 00 sa to ustawienia dla zewnętrznego oscylatora 8MHz.

    Tak dla uściślenia mam programator zgodny z stk200/300 i zewnętrzny oscylator 4MHz.

    0
  • #17 21 Lip 2008 00:20
    dawid512
    Poziom 32  

    Przepraszam mała pomyłka miało być 1101 zamiast 1110 ale podejrzewam że także by zadziałało;P

    0