Problem z wysyłaniem danych z labview do uC

Wszelkie sprawy związane z LabVIEW i komunikacją ze sprzętem. Problemy i ciekawe rozwiązania.
akswiety
Posty: 2
Rejestracja: 03 cze 2013 11:51
Wersja środowiska: LabVIEW 2012

Problem z wysyłaniem danych z labview do uC

Post autor: akswiety »

Witam

Jestem początkujący w programowaniu w środowisku labview i napotkałem problem z wysyłaniem danych z labview do uC po przez VISA Write a mianowicie jak wysyłam liczby z zakresu od 0 do 9 to uC odbiera je normalnie natomiast jak już ma przejść większa liczba np 15 to ścina jedynkę i uC dostaje tylko 5 i tak samo jest z wiekszymi liczbami. Zawsze kończy sie na tym ze uC odbiera tylko ostatnia cyfre natomiast jeżeli użyję np terminala z bascom avr to uC odbiera pełną wartość.

Druga sprawa to uC zawsze odbiera od labview wartość 48 czy to wysyłam puste pole czy też jakąś wartość.

Założenie jest takie że chcę wysyłać zmienną z zakresu 1 do 255 do uC i ta zmienna ma sterować całym portem.

W załączniku załączam plik z labview

Tak wygląda kod uC:

Kod: Zaznacz cały

$regfile = "m644pdef.dat"
$baud = 57600
$crystal = 16000000

Const Cmaxchar = 20                                        

                                              
Dim Bc As Byte                                           
Dim Buf As String * Cmaxchar                              
Dim D As Word
Config 1wire = Portc.0
Dim Minus As Bit
Dim Id(8) As Byte
Dim T As Word
Dim S As String * 4
Dim A As Byte
Dim W As Word
Id(1) = 1wsearchfirst()
Config Portb = Output
Portb = &B1111111
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

On Urxc Rec_isr                                            
Enable Urxc                                                 '
Enable Interrupts                                          

Do
   1wreset
   1wwrite &H55                                             
   1wverify Id(1)
   1wwrite &HBE                                             
   T = 1wread(2)

   1wreset
   1wwrite &HCC                                            
   1wwrite &H44                                             
   Waitms 750

   If T > &HFC00 Then                                       
   T = 65536 - T                                           
   Minus = 1
   Else
   Minus = 0
   End If

   T = T * 10
   T = T / 16
   S = Str(t)
   S = Format(s , "000.0")

   W = Getadc(7)
   W = W / 10

   If Minus = 1 Then
   Print "-" ; S ; " " ; W
   Else
   Print " " ; S ; " " ; W 
   End If
                                       
     Disable Serial                                         
        If Bc = Cmaxchar Then                               
        Buf = ""                                            
        Bc = 0                                              
        End If
 Enable Serial

Loop

                                                        
Rec_isr:

   A = Inkey()

  Cls
  Lcd A

 Portb = A                                           
Return
Załączniki
termometr_karta_pomiarowa.vi
(21.58 KiB) Pobrany 323 razy
TMa
Posty: 203
Rejestracja: 07 sty 2010 12:56
Wersja środowiska: LabVIEW 2017

Re: Problem z wysyłaniem danych z labview do uC

Post autor: TMa »

Rzuć okiem na poniższy kod
Załączniki
to_ascii.png
to_ascii.png (12.35 KiB) Przejrzano 5007 razy
akswiety
Posty: 2
Rejestracja: 03 cze 2013 11:51
Wersja środowiska: LabVIEW 2012

Re: Problem z wysyłaniem danych z labview do uC

Post autor: akswiety »

Dzieki wielkie za podsunięcie rozwiązania leci za to pochwała :)

Labview jednak dobrze wysyłał dane tylko uC źle je odbierał. Poprostu nie zwróciłem uwagi na to że algorytm zapisuje do zmiennej każdą wartość pokolei a że nie skleiłem ich odpowiednio to wyświetlił jak jak wyświetlił.

Tak wygląda mój kod do scalenia odebranych danych:

Kod: Zaznacz cały

A = 0
Q = ""
  Do
   A = Inkey()
   Q = Q + Chr(a)
  Loop Until A = 75       'każdy ciąg danych kończy się literą K której odpowiada wartość 75
   D = Val(q)
ODPOWIEDZ