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

Atmega8 x 2 + UART bledy komunikacji BACOM

Kakalia 07 Gru 2009 20:36 936 0
  • #1
    Kakalia
    Poziom 18  
    Witam

    Musze wykonac na zaliczenie przedmiotu nastepujace zadanie, mam w ukladzie dwa procesory Atmega8, pierwszy procesor mierzy napiecia za pomoca wbudowanych przetwornikow i jest polaczony z drugim procesorem za pomoca programowego UARTu. Drugi procesor ma podlaczony LCD i wyswietla przeslane wartosci napiec.

    Problem w tym ze procesor albo zle interpertuje dane lub je gubii, ponizej programy z obydwu procesorów:

    CPU1 (pomiar napiecia)

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

    Config Adc = Single , Prescaler = Auto , Reference = Avcc

    Open "COMB.0:9600,8,N,1" For Output As #1
    Open "COMB.1:9600,8,N,1" For Input As #2

    Dim Wart_ac As Word
    Dim V As Single
    Dim Wart_nap As String * 3


    Dim Wart_acs As Word
    Dim Vs As Single

    Dim C_ac As Word
    Dim Cc As Single

    Start Adc

    Do

    Incr Z

    'Pomiar napiecia zasilajacego 1
    Wart_acs = Getadc(0)
    Vs = Wart_acs * 0.0539


    'Pomiar napiecia zasilania 2
    Wart_ac = Getadc(1)
    V = Wart_ac * 0.1029
    Wart_nap = Fusing(v , "#.&")


    'Zmierz pojemnosc akumulatorów 3

    C_ac = Getadc(2)
    Cc = C_ac * 0.0539

    ' Wysylaj dane

    Printbin #1 , 111 'Flaga 1
    Print #1 , Wart_nap
    Printbin #1 , 89 'Flaga 2
    Print #1 , Vs
    Printbin #1 , 222 'Flaga3
    Print #1 , Cc

    Loop
    End



    CPU2 (tylko LCD)

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

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2

    Open "COMB.0:9600,8,N,1" For Output As #1
    Open "COMB.1:9600,8,N,1" For Input As #2


    Dim Wart_nap As String * 3
    Dim Vs As Single
    Dim Cc As Single
    Dim Flaga As Byte

    Do

    Inputbin #2 , Flaga

    If Flaga = 111 Then
    Input #2 , Wart_nap
    If Flaga = 89 Then
    Input #2 , Vs
    If Flaga = 222 Then
    Input #2 , Cc
    End If
    End If
    End If


    Lcd Wart_nap ;"___";Vs;___"Cc

    Loop
    End


    Program testowany w proteusie, nie mam jeszcze procesorów fizycznie, w zadaniu jest napisane iz konieczne jest zestawienie polaczenia po uarcie programowym..