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.

Mega8 - Sterownik syntezy TSA6057 - Bascom i 2x16

ORMO_PL 29 Maj 2016 14:36 858 10
  • #1 29 Maj 2016 14:36
    ORMO_PL
    Poziom 19  

    Cześć!


    Na elektrodzie znalazłem gdzieś program

    Code:
    $regfile = "m8adef.dat"
    
    $crystal = 8000000
    Config Pind.0 = Input
    Portd.0 = 1
    X_gora Alias Pind.0
    Config Pind.1 = Input
    Portd.1 = 1
    X_dol Alias Pind.1
    Config Pinb.2 = Input
    Szift Alias Pind.2
    Config Sda = Portc.4
    Config Scl = Portc.5
    Dim Temp As Long
    Dim Freq As Long
    Dim Freq_temp As Long
    Dim Temp2 As Word
    Dim Pokazanafstr As String * 10
    Dim Pokazanaff As String * 10
    Dim Pokazanaf As Long
    Dim Ustaw_pomoc1 As Byte
    Dim Ustaw_pomoc2 As Byte
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portc.0 , Rs = Portc.1
    Declare Sub I2c
    '######################################################################################################
    Const Freq_pcz = 10700                                      'pcz
    Const Krok = 25                                             'krok
    Const Scan_up = 174000                                      'gorna
    Const Scan_dn = 110000                                      'dolna
    Freq = 145625                                               'po wlaczeniu
    '######################################################################################################
    Cls
    Lcd "  FM 110-174MHz  "
    Cursor Off
    Wait 1

    Do
    Gosub Licz
    Loop
    End

    Licz:
    If Freq > Scan_up Then Freq = Scan_dn                       'Dol Przestrajania
    If Freq < Scan_dn Then Freq = Scan_up                       'gora Przestrajania
    If X_dol = 1 Then Gosub W_dol : Gosub I2c
    If X_gora = 1 Then Gosub W_gore : Gosub I2c
    Freq_temp = Freq - Freq_pcz
    If Szift = 0 Then Freq_temp = Freq_temp -600
    Pokazanaf = Freq
    Pokazanaff = Str(pokazanaf)
    Pokazanafstr = Format(pokazanaff , "000.000")
    Pokazanaff = Pokazanafstr


    If Pokazanaf < 10000 Then
    Locate 1 , 2
    Lcd " "
    Locate 1 , 3
    Else
    Locate 1 , 2
    End If
    Lcd Pokazanaff : Lcd " MHz"
    Return

    W_gore:
    Freq = Freq + Krok
    Gosub I2c
    Waitms 2
    Return

    W_dol:
    Freq = Freq - Krok
    Gosub I2c
    Waitms 2
    Return

    I2c:
    Temp = Freq_temp / Krok
    Temp2 = Temp
    Rotate Temp2 , Left , 1
    Ustaw_pomoc1 = Low(temp2)
    Ustaw_pomoc1.0 = 1
    Ustaw_pomoc2 = High(temp2)
    I2cstart : I2cwbyte 196 : I2cwbyte 0
    I2cwbyte Ustaw_pomoc1
    I2cwbyte Ustaw_pomoc2
    I2cwbyte &B01100100                                         '
    I2cwbyte 0 : I2cstop
    Waitms 100

    Return


    i staram się zbudować urządzenie pod ten program.

    Niestety, problemy są już na początku, bo zaprogramowałem procesor, podłączyłem wyświetlacz zgodnie z programem, i pojawiają się prostokąty w górnym wierszu.

    Linia R/W ściagnięta do masy, D0 - D1 wiszą w powietrzu. D4 - D7 podłączone jak w programie, utrzymuje się cały czas stan wysoki.

    Próbowałem zamienić piny pod EN i RS, ale bez rezultatu.

    Podłączone obie linie GND, VCC i AVCC podpięte do zasilania z kondensatorami 100nF. Pin 1 ściągnięty do zasilania przez rezystor 1 k, Pin 5 ściągnięty do masy.
    Na linii filtrowanie w stabilizatorze, plus bezpośrednio przy procesorze 1000uF, 47 uF, 2x 100nF

    Zaprogramowałem drugi egzemplarz - to samo
    Podpiąłem inny LCD - to samo.

    Brakuje mi pomysłów
    Składam na płytce prototypowej
    Fusy fabryczne, pomijając ustawienie wewnętrznego RC na 4 MHz.


    Proszę o pomoc, bo sprawa jest prosta jak konstrukcja cepa. Nic mi nie działa, a nie doszedłem jeszcze do sprawdzenia kontaktu z i2c.


    Pozdrawiam.

    0 10
  • #2 29 Maj 2016 16:57
    yokoon
    Poziom 28  

    W programie jest

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Pokaz schemat.
    Jak masz ustawiony kontrast?

    0
  • #3 29 Maj 2016 17:48
    ORMO_PL
    Poziom 19  

    Schematu jako takiego nie mam. Po prostu staram się wszystko poskładać tak, jak jest w programie.

    Kolega sp3ots zaprogramował swój procesor i wyświetlacz działa jak należy. Prawdopodobnie to kwestia uszkodzonego breadboard'u u mnie. Znajdę chwilę i poprzepinam wszystko w inne miejsce, zobaczymy, czy się uruchomi.


    Pozdrawiam.

    0
  • #4 29 Maj 2016 18:10
    KrisH
    Poziom 13  

    Nie wspomniałeś o pinie 3 wyświetlacza LCD?

    0
  • #5 29 Maj 2016 19:05
    ORMO_PL
    Poziom 19  

    Zasadniczo bez niego nie udałoby się czegokolwiek zobaczyć

    0
  • #6 29 Maj 2016 21:13
    KrisH
    Poziom 13  

    Nic nie wspomniałeś o regulacji kontrastu. Prostokąty mogą o tym świadczyć.

    0
  • #7 29 Maj 2016 21:15
    ORMO_PL
    Poziom 19  

    Jest zbudowana jak powiedziano. Potencjometr 10k do pinu trzeciego :)

    0
  • #8 29 Maj 2016 21:32
    373522
    Użytkownik usunął konto  
  • #9 30 Maj 2016 09:08
    ORMO_PL
    Poziom 19  

    Programuję darmową wersją mkavrcalculator, i tam też mam wymuszoną weryfikację po zapisie.

    Wczoraj nie miałem za bardzo czasu, ale przełożyłem układ w inne miejsce na płytce stykowej i... nadal to samo. Dziś, jak starczy czasu zbuduję cały moduł na płytce uniwersalnej i rozrysuję schemat. Będziemy radzić....

    0
  • #10 30 Maj 2016 21:28
    ORMO_PL
    Poziom 19  

    Panie i panowie.


    Po zlutowaniu na płytce uniwersalnej układ dalej nie działał.

    Okazało się, że musiałem ustawić BODLEVEL=1, WDTON=0 i CKSEL=0011.

    Układ się uruchomił, pokazał się napis FM 110-174. Po podpięciu syntezy układ pokazał na LCD częstotliwość.

    0
  • #11 31 Maj 2016 06:41
    yokoon
    Poziom 28  

    ORMO_PL napisał:
    Panie i panowie.

    Witam.
    Po zlutowaniu na płytce uniwersalnej układ dalej nie działał.

    Okazało się, że musiałem ustawić BODLEVEL=1, WDTON=0 i CKSEL=0011.

    Układ się uruchomił, pokazał się napis FM 110-174. Po podpięciu syntezy układ pokazał na LCD częstotliwość.


    CKSEL=0011 to Internal oscylator 4 MHz.
    Natomiast w programie jest 8 MHz.

    0