rs232 mottagare?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
Xyzzy
Inlägg: 1260
Blev medlem: 30 januari 2004, 22:31:07
Ort: Uppsala, Sweden

Inlägg av Xyzzy »

Nu har jag inte hängt med i denna topic (skäms!), så det kan redan tagits upp, men RS232-signalen är negativ (någonstans runt -3 - -15V om jag inte missminner mig helt) vid "1" och positiv(+3 - +15V) vid "0". Detta fixar (inverterar och lägger på 0-5V nivå) en MAX232, eller motsvarande, använder du sådan?
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Skäms;)

Jo , jag kör en sån, http://www.jescab.se/RSlink.htm

/B
Användarvisningsbild
Xyzzy
Inlägg: 1260
Blev medlem: 30 januari 2004, 22:31:07
Ort: Uppsala, Sweden

Inlägg av Xyzzy »

Nu ser jag inte vad det är för IC på kretskortet, men är det en MAX232 (eller motsv.) ska den invertera signalen, annars kanske du ska kolla upp vad kretsen på ditt kort gör med signalen (kanske bara omvandlar TTL <-> RS232 utan att invertera?).
Ett sätt är ju att lösa det i mjukvaran, men kanske inte en snygg lösning :)
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Sodjan här på forumet borde veta hur det är med den saken:)
Det va honom jag köpte den av.

Snygga lösningar ligger i betraktarens ögon, jag ser ju inte koden när jag e klar:)

Så hur det än är struntar jag i hur jag behöver koda, bara detta funkar nångång:)


/B
Användarvisningsbild
Xyzzy
Inlägg: 1260
Blev medlem: 30 januari 2004, 22:31:07
Ort: Uppsala, Sweden

Inlägg av Xyzzy »

Ser du inte vad det står på ICn då?

Okay, men isf borde du kunna göra en rutin som inverterar varje bit innan den skickas... nu är jag inte haj på VB, men borde finnas ngt liknande kommando som ~ i C (invertera bitvis).
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Jo asså det STÅR ju MAX232 på kretsen så visst e det en sådan. (Det jag inte va säker på att du mena va om det fanns olika sådana)

Det jag tror e problemet nu e hur jag ska skicka, jag ska sända "C1" HEX enligt databladet..
Ska då få svaret CD eller ED hex


vad ska jag skicka då? &HC1? eller det binära talet?
Sänder jag binärt så vänder den på allt så jag får ett spegelvänt svar.

Vad jag än sänder iväg så får ja fel svar.

/B
Användarvisningsbild
Xyzzy
Inlägg: 1260
Blev medlem: 30 januari 2004, 22:31:07
Ort: Uppsala, Sweden

Inlägg av Xyzzy »

Hmm, det här var mysko... de enheter som du ska prata med (är det DS2480, jag skummade igenom några inlägg) vill de ha höga eller låga 1'or resp. 0'or?
Ett sätt är ju att invertera på hårdvarunivå... Ska du använda det där kretskortet du länkade till, i den slutgiltiga produkten, eller används den bara nu när du labbar?, om det senare, det finns isf kanske andra TTL <-> RS232nivåomvandlare som inte inverterar?

Tyvärr kan jag inte hjälpa dig med kodandet i VB, men det borde vara en enkel sak att fixa, för den som kan språket, att göra en rutin som inverterar, eller spegelvänder bitarna (det du föredrar att använda).
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Det är en DS2480 jag ska använda och den vet jag inte hur den funkar riktigt, det e ju så jä*la mycket o läsa om den så jag fattar knappt hälften känns det som.

Jag ska ha den till labb. just nu bara så jag får mjukvaran ok.

VB kan jag så det är inte svårt att invertera eller nått.

ska se om det är det som är felet.

/B
Användarvisningsbild
Xyzzy
Inlägg: 1260
Blev medlem: 30 januari 2004, 22:31:07
Ort: Uppsala, Sweden

Inlägg av Xyzzy »

Okay, Det låter som DS2480'an också vill ha inverterade nivåer, MAX232an använder man ofta till microcontrollers (pic, avr...) och de har ofta "icke inverternade" nivåer... därför är MAX232an rätt flitigt där.

Jag hoppas det löser sig!
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Ja du, tack för det, tror jag kommer få svårt att få detta iland, börjar kännas hopplöst.

Databladet får jag inget vettigt ur i detta läge...snart lägger jag ner detta om ingen kan bistå me HUR jag ska sända datat.

ska det va HEX, binärt, framlänges, baklänges, inverterat?? VAD?

Börjar bli smått frustrerad....

EDIT: Ur databladet för DS2480:
the DS2480B can translate each character
into eight 1-Wire time slots

Som jag ser det borde det räcka att jag skickar in tex "C1" endast så gör den om det till vad det ska va.

Om jag skickar "C1" när jag "startat om" DS2480 så får jag INGET som svar, om jag stänger ner programmet och kör igen direkt efter så svarar den me "B0"



/B
Senast redigerad av benring 4 september 2005, 17:36:11, redigerad totalt 1 gång.
Användarvisningsbild
Xyzzy
Inlägg: 1260
Blev medlem: 30 januari 2004, 22:31:07
Ort: Uppsala, Sweden

Inlägg av Xyzzy »

Ang. hex vs. binärt (eller decimalt, octalt... osv, osv) är bara till för dig som programmerare, serieporten skickar ändå ut datat bit för bit...precis som den blivit tillsagd (får man hoppas).

Ang. "framlänges" eller "baklänges" (MSB first eller LSB first) måste du kolla upp i databladet..., likaså inverterade nivåer

Edit:
Eng. första sidan i databladet står det:
---
User-Selectable RXD/TXD Polarity
Minimizes Component Count When
Interfacing to 5V Based RS232 Systems or
Directly to UARTs
---
På något sätt ska du alltså kunna välja om den ska vara inverterad eller inte... -beror på vad du kopplar till pin nr 6 (POL).
Senast redigerad av Xyzzy 4 september 2005, 17:41:03, redigerad totalt 1 gång.
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Men om den skickar datat oavsett som binär form så undrar jag hur jag kan få olika svar beroende på vad jag skickar in.

Borde jag inte få samma svar på "C1" som på "11000001" ??

ja det kan ja tydligen ändra beroende på hur pinnen "POL" på kretsen kopplas.
Vet bara inte vad jag kör, UART (Vad är det?) eller rs232??


EDIT: nyss fick ja "B0" som svar på C1, nu får ja "Àô"....blir fan inte klok på detta....
nu fick ja "B0" igen.

Här e koden jag testar med:

' Använd COM1.
MSComm1.CommPort = 1

MSComm1.Settings = "9600,N,8,1"

MSComm1.InputLen = 0
'Öppna porten.
MSComm1.PortOpen = True
' Sänd ett kommando
MSComm1.Output = "C1"



' Vänta på att data skickas tillbaka genom COM-porten
Do
DoEvents

buffer$ = buffer$ & MSComm1.Input

Debug.Print buffer$
Loop Until Len(buffer$) = 8

buffer$ = ""

' Stäng serieporten.
MSComm1.PortOpen = False
/B
Senast redigerad av benring 4 september 2005, 17:45:47, redigerad totalt 1 gång.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31459
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Serieporten skickar alltid binärt.
Om du skickar C1 som du gjorde först, kommer det ut 0100001100110001 (bokstaven C och siffran 1, 43 resp 31 hexadecimalt)
Om du skickar C1 hexadecimalt, så kommer det ut 11000001

Och du kan omöjligt få Àô, då de bokstäverna inte fiunns med i hexadecimala systemet. Det är nåt galet med ditt program ;)

[edit]
Du skickar nu strängen "C1" ut till serieporten. Det ska du väl ändå inte göra... Du borde skicka &HC1 väl?
Senast redigerad av MadModder 4 september 2005, 17:48:49, redigerad totalt 2 gånger.
Användarvisningsbild
Xyzzy
Inlägg: 1260
Blev medlem: 30 januari 2004, 22:31:07
Ort: Uppsala, Sweden

Inlägg av Xyzzy »

hmm, tja, jooo det är förståss lite mysko.låter som det är VB som vänder på bitarna... (kanske ska vara så?, minns faktiskt inte).

Hur har du kopplat "POL"?

RS232 är en slags UART (Universal Asynchronous Receiver/Transmitter).
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Galet är ordet:)

Jag har kopplat POL på 5v.


OM jag skickar "&hC1" så får jag svaret " 'iB0 ", va det vettigare?

binärt kan jag inte skicka, det enda jag får som svar e samma tal fast inverterad.

EDIT: &HC1 = 193, 193 är decimal form.

/B
Skriv svar