logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega162-16PU][BASCOM] Uruchomienie LCD i RS232

vir2000 03 Kwi 2009 20:49 5070 18
  • #1 6371093
    vir2000
    Poziom 11  
    Witam,

    Od wczoraj zacząłem zabawę z AVRami, po dniu zabawy uruchomiłem pierwszy program (zapalanie diody). Teraz chciałem iść dalej i zacząć zabawę z LCD 16x2 i RS232 ale tu już mam problemy.

    Połączyłem układ do testów (C1-C4 1µF, Q1 16MHz),
    [Atmega162-16PU][BASCOM] Uruchomienie LCD i RS232
    samo programowanie układu działa ponieważ dodatkowo dałem jeszcze diody które zapalają się tak jak powinny. Dlatego wiem że układ jest zaprogramowany.

    Problem polega na tym że kiedy chcę wysłać cokolwiek na RS232 komputer już niczego nie odbiera, a na wyświetlaczu LCD zamiast wyświetlanie napisu zapalają się wszystkie piksele w górnej linii i nic więcej się nie dzieje.

    Ustawienia wyświetlacza i RSa skonfigurowałem w ustawieniach BASCOM AVR.
    Program który chciałem uruchomić:

    Config Porta1 = Output
    
    Cls
    LCD "Hello world"
    Wait 1
    
    Do
      Porta = &B1111110
      Waitms 10
      Print "RS dziala!"
      Porta = &B1111111
      Waitms 10
    Loop
    End
    


    Ktoś mi podpowie co robię nie tak?
  • #2 6372213
    dawid512
    Poziom 32  
    Nie sugerowałbym się ustawianiem parametrów w opcjach Bascoma zawsze lepiej jest dodać wszelkie informacje do kodu. Po za tym aby korzystać z portuC musisz najpierw wyłączyć JTAG.
  • #3 6373276
    wader_669
    Poziom 28  
    Radze pierw zrobic config lcd i baud, ja nie ufam bascomowi i wole to reczenie zrobic.

    Dodano po 3 [minuty]:

    
    Config Porta1 = Output 
    

    i tu jest blad
  • #4 6373542
    vir2000
    Poziom 11  
    Ok przestawiłem piny do lcd z C na A i teraz śmiga :D
    Tylko teraz co może być nie tak z RS232? Może jeszcze trzeba coś dodatkowo skonfigurować w ustawieniach?
  • #5 6373724
    janbernat
    Poziom 38  
    No jeszcze skonfigurować RS.
    Szybkość, parzystość itd.
    I w procesorze i w komuterze.
  • #6 6377314
    vir2000
    Poziom 11  
    Nie mogę tego uruchomić :/
    Zrobiłem 2 układu na MAX232 jeden który był podany w Bascomie a drugi z tego Kitu i na żaden nie ma reakcji. Zrobiłem na szybko program w delphi który sprawdza czy coś przychodzi na coma (nie zależnie od baud) ale jest cisza :(

    W między czasie jeszcze starałem się podłączyć DS1820 (buduje termometr wielopunktowy z RS232) i tu też mam problem bo dsy się nie zgłaszają po 1wreset. Próbowałem również różnych typów połączeń (zasilanie zew i Vdd zwarte do masy)

    Nie mam pojęcia gdzie popełniam błąd, tak wygląda mój program:
    $regfile = "m162def.dat"                                    ' specify the used micro
    $crystal = 10000000                                         ' used crystal frequency
    $baud = 2400                                                ' use baud rate
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 8                                                ' default use 10 for the SW stack
    $framesize = 24                                             ' default use 40 for the frame space
    
    Config 1wire = Pina.4
    Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.5 , Rs = Porta.6
    Config Lcd = 16 * 2
    
    Cls
    
    
    Dim Ds(8) As Byte
    Dim W As String * 10
    Dim I As Byte
    
    W = "RS232 Send"
    
    Do
       Cls
       Cursor Off Noblink
    
       Lcd "Test 1wire..."
       Ds(1) = 1wsearchfirst()
    
       Lowerline
       For I = 1 To 8
          Lcd Hex(ds(i))
       Next
    
       Wait 1
    
       Cls
       Cursor Off Noblink
       Lcd "Polaczenie RS232"
    
       I = 0
       Do
          Print W ; I
          Home Lower
          Lcd W ; " - " ; I ; " "
          Incr I
          Waitms 25
       Loop Until I = 10
    
       Wait 1
    Loop
    
    
    End
  • #7 6377519
    wader_669
    Poziom 28  
    Moze problem jest w tym programie co napisales na kompa?
    Nie mozesz po prostu uzyc terminala?
    Kod w bascomie wyglada ok.
  • #8 6377559
    vir2000
    Poziom 11  
    terminal w bascomie tez milczy :(
    Wziąłem teraz podłączyłem układ pod osobny zasilacz (bo brałem napięcie z USB) ale nadal ani ds się nie zgłasza ani RS nie śmiga :/
    Zastanawia mnie czy czegoś dodatkowego nie powinienem podłączyć w układzie. czasami bywa że brakuje jednego elementu i reszta leży...

    Przeszukałem strony żeby znaleźć układy które inni uruchomili i niewiele się różnią od mojego, podstawy są tak samo połączone.

    2 pytania:
    1. Czy może być to zbyt szybki kwarc? mam 10MHz
    2. Czy te kondensatory przy kwarcu (27pF) są niezbędne? (nie miałem takich, najmniejsze jakie mam to 100pF)
  • #9 6377934
    zumek
    Poziom 39  
    vir2000 napisał:
    Nie mogę tego uruchomić :/

    Czy wiesz, że Twoja ATMega162 jak wychodzi z fabryki, to jest taktowana wewnętrznym oscylatorem RC 8MHz(CKSEL:0010) i że ten sygnał jest dodatkowo podzielony przez 8 (CKDIV8:0) :?:
  • #10 6378092
    wader_669
    Poziom 28  
    no brawo.
    Zacznijmy od tego ze przy komunikacji przy rs jest wazne czym taktujesz procesor.
    1. Ustaw dobrze fusebity
    2. te kondensatory sa wazne. Daj jakis od 12 - 22 pF.
  • #11 6378328
    vir2000
    Poziom 11  
    Odnośnie tego taktowania to nie byłem pewien czy ten wewnętrzny oscylator jest od razu włączony, ale skoro tak to wypne ten kryształ.
    Jaką prędkość baud podać w bascomie? 8MHz?

    Jutro się zaopatrze w kondensatory 22pF i będę miał alternatywe.

    I będzie trzeba trochę poczytać o tych fusebitach bo tego jeszcze nie rozgryzłem, może ktoś ma stronkę gdzie jest to dość jasno i prosto wyjaśnione?

    Dzięki za każde info.
  • #12 6378619
    janbernat
    Poziom 38  
    Sprawdź schemat tego kitu z notą aplikacyjną Maxima.
    Dla MAX232 kondensatory mają 1uF.
    Dla MAX232A po 100nF.

    Dodano po 1 [minuty]:

    W bascomie podaj 1000000Hz
  • #13 6378729
    crazy_phisic
    VIP Zasłużony dla elektroda
    I pozostaje jeszcze zasilanie MAX'a.
  • #14 6425153
    vir2000
    Poziom 11  
    Witam ponownie

    po dłuższej przerwie wróciłem do dalszej pracy nad układem.

    Mam nadal problem z połączeniem do ds1820 przez 1wire. Próbowałem kilka metod wykrywania układu i żadna nie działała zawsze zwracało mi Err=1. Do ds'a mam podpięty rezystor podciagający a VCC podpinałem za równo pod napięcie jak i na masę i nic niestety to nie dawało.

    Co do połączenia przez RS232 to już jeden krok do przodu bo w terminalu otrzymuje znaki, ale nie te co wysyłam. Za każdym razem jest to "€" wysyłając 1 znak dostaje "€€" sprawdzałem ustawienia terminala (bit stopu, parzystości, prędkości) i wszystko jest tak samo skonfigurowane.
    Sam układ wydaje się być poprawny (MAX232N z 1µF kondensatorami) wg układu z helpa bascoma.

    Przeszukałem wiele stron ale niestety nic nie znalazłem co pomogłoby mi rozwiązać ten problem.

    Jeśli chodzi o oscylator to używam wewnetrznego w Bascomie ustawiłem go jako "$crystal = 8000000" dając 10000000 jak proponował kolega janbernat LCD zaczeło pokazywać krzaki i nie dało się nić odczytać.
  • Pomocny post
    #15 6426704
    janbernat
    Poziom 38  
    Ale ja proponowałem 1000000Hz a nie
    10000000Hz
    To jest 10x więcej!
    (przekopiowałem z postów-więc może się nie pomyliłem)
    Jeśli nie zmieniałeś fusebitów to daj:
    $crystal=1000000
    Sprawdzam i liczę: 1MHz=1000000Hz.
    Uff. Może jeszcze nie mam ciężkiej sklerozy.
  • #16 6426833
    vir2000
    Poziom 11  
    ajj mój błąd! gdzieś mi się rozmnożyło jedno 0 :P faktycznie rs232 teraz śmiga że miło :D

    niestety 1wire nadal nie zaskakuje :( jeszcze posprawdzam timingi


    działa ... mam to na płytce szybkiego montażu i nie zauważyłem że nie połączyłem jednego toru "-" i do ds nie było to podłączone -.-'
    teraz śmiga :) więc się biorę za pisanie programu :D
  • #17 6616222
    vir2000
    Poziom 11  
    witam ponownie,

    na początek przepraszam za dwa posty po sobie ale nie chce tworzyć nowego tematu ponieważ problem nadal tyczy się tego samego układu.

    Otóż pokazany w pierwszym poście układ został przeze mnie już zbudowany i działa prawidłowo. Problem w tym że jak odłączę programator to nie dostaje danych po RSie (dostaje krzaki), jak podłącze go z powrotem to jest ok. programator musi być też włączony (podłączony pod usb), jeśli nie jest układ się nie uruchamia (same kwadraciki na lcdku).
    Układ wygląda teraz tak:
    [Atmega162-16PU][BASCOM] Uruchomienie LCD i RS232

    Gdzie zrobiłem błąd? :/
  • #18 6616520
    janbernat
    Poziom 38  
    Odłącz usb i wtedy sprawdź napięcie na procesorze i wszędzie tam gdzie ma być +5V.
    Coś mi się wydaje że Twój zasilacz nie daje prawidłowego napięcia-pewnie niechcący zasilasz układ z usb.
  • #19 6617754
    vir2000
    Poziom 11  
    na pewno nie zasilam z usb bo mam wyjętą zworkę od zasilania przez usb. Po za tym jak odłączę szelkę od programatora to układ działa ok, wyświetlacz pokazuje kolejno przeliczone temperatury z czujek ale niestety dane wysyłane na kompa są już nieprawidłowe :/ (RS działa tylko prawidłowo jak jest podłączony programator do układu i do komputera)
    zastanawia mnie czy te styki ISO, OSI, RST, SCK powinny mieć podciągnięte napięcie +5V albo ściągnięte do masy (oprócz RST oczywiście).

    ok problem rozwiazany, podanie 5V na owe piny załatwoło sprawe :)
REKLAMA