Seriell LCD igen. Hjälp mig...

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Inlägg av klasg »

sodjan:
Ah ett motstånd mellan MCLR och +5V, ska fixa (OT: Varför gör man så?).

Nu är jag hemma och lär använda LCDn, för att se om någonting kommer ut på TX. Har inget eget oscilloskop än.
/Klas
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

För att hålla MCLR i "kör-läge". Är den låg hålls processorn i "reset-läge." Och är den oansluten kan den plocka upp "brum" och fladdra melln hög och låg. Alltså omstartas processorn hela tiden.

En sak som är lite konstig, är om man tittar på "Figure 3" på sidan 3 i LCD manualen. Där visar man hur man ansluter LCDn både till en vanlig COM port på en PC och till en Basic-Stamp (i princip ett litet kort med en PIC monterat).

Nu är det så att en vanlig COM port har RS232-nivåer på signlarerna, d.v.s att en logisk "etta" är -5 till -15 volt och en "nolla" är mellan +5 och +15 volt. Den signal som kommer från en USART har en nolla som 0V och en etta om 5V.

Och varför säger man på sista sidan :

"Serial input......RS-232, or inverted TTL/CMOS, 2400 or 9600, N81"

Jag kan inte hitta något sätt att välja RS232 eller TTl/CMOS. Och vad menar de med "inverted" ?

OK, med eller utan oscillioskop, såp skulle jag ändå försöka verifiera att det kommer ut något på TX *utan* LCDn ansluten. Om du ändrar lite i koden så att du sänder kontinuerligt, så kan du sätta en LED på TX. Den kommder då att lysa "halvstark" under sändning och antingen vara helt släckt eller tänd (beroende på hur du kopplade den) när du inte sänder.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

sodjan och klasg: Jag menar naturligtvis RX på LCD:n, inte TX på som jag skrev i mitt förra inlägg. Jag fick ett anfall av plöttsligt järnsläpp. :) Sorry!
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Inlägg av klasg »

Kaggen:
Jag förstod vad du menade.

sodjan:
"Jag kan inte hitta något sätt att välja RS232 eller TTl/CMOS. Och vad menar de med 'inverted' ?"
Kanske Kaggen har rätt?

Testade nyss att skicka en inverterad 'H' på prov. b'10110111'. Det gick inge bättre...

Briljanta idéer mottages varmt :)
Börjar snart bli lite drygt det här...
/Klas
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

klasg: Du skrev tidigare att du testat att koppla LCD:n mot en PC, om jag förstod rätt? Hur kopplade du då? Direkt från en serieport har du inte samma nivåer på spänningen som du har med TTL/CMOS (precis som sodjan sa).

Kopplade du möjligtvis TX direkt från serieporten på PC:n till ingången (RX) på LCD:n utan några komponenter emellan? I så fall kör du antagligen med RS-232 nivåer som sodjan sa. Då lär du nog sätta en RS232 konverterare emellan PICens TX pinne och LCDns RX pinne, t.ex MAX232 eller liknande som ger ut +-15V istället för 0-5V.

Men du lär nog vara säker isåfall. Om du smäller på +-15V på LCD-pinnen, och det iaf är TTL/CMOS logik på LCDn, så vete fan vad som händer.

mvh Mats
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Inlägg av klasg »

Kaggen:
Jag har aldrig kopplat så.
Har kopplat på två sätt.
1: Pickite1:et mellan datorn och LCDn
2: P16F688 direkt till LCDn, programmerad innan.

Samtidigt som det står det där om "RS232" i databladet så står det också: "Do not exceed 5.5V into +5V. Overvoltage will damage the unit or shorten its life."
/Klas
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Max 5.5V gäller spänningsmatningen, inte serieingången !

*OM* det skulle vara så (verkar lite osannolikt) att LCDn har ett "riktigt" RS232 interface, så måste den så klart acceptera +/- 15V på *den* ingången.

> "Testade nyss att skicka en inverterad 'H' på prov. b'10110111'. Det gick inge bättre... "

Nja, det är inte så enkelt. Du måste invertera *hela* signalen om det ska vara någon mening, nu har du bara sänt ett annat tecken, så att säga. D.v.s att "viloläget" på TX måste vara låg istället för hög, o.s.v. Jag hade för mig att USART'en hade en kontrolbit i något register för att invertera TX, men jag kan inte hitta det nu, och sannolikt minns jag fel, eller så var det i någon speciell PIC...

Hur som helst, jag måste upprepa, vi måste se till att det kommer en signal på TX *över huvud taget* (d.v.s utan LCDn ansluten). Det finns ingen anledning att fundera på LCDn alls innnan dess.

Jag är beredd att sätta en slant på att, så snart TX början fungera, så fungerar LCDn också !

En sak, kan du göra ett test program som bara testar TX pinnen som vanlig I/O pinne ? D.v.s med USART'en avstängd. Vi måste kolla att inte pinnen är "körd" på något sätt.

Jag funderar också på att sända över en annan F688, varför inte just den som jag har testat ditt program i !? Vi kan ju inte utesluta att något har "hänt" med ditt exempler. Du satte den inte bakfram i PICkit1'an någon gång ! :-) :-)
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Jag sökte på nätet efter "inverted ttl" och det verkar som det är ett "hack" för att använda ttl nivåer direkt mot rs232 nivåer. Kolla länken nedan lite efter mitten på sidan...
http://www.microengineeringlabs.com/res ... 1-5_64.htm

...där verkar dom helt enkelt ha kopplat ett 1k motstånd mellan PIC TX pinne och RS232 RX ingång.

"While single-chip RS-232 level converters are common and inexpensive, thanks to current RS-232 implementation and the excellent I/O specifications of the PICmicro, most applications don't require level converters. Rather, inverted TTL (N300..N9600) can be used. A current limiting resistor is suggested (RS-232 is suppose to be short-tolerant)."

Jag frånsäger mig allt ansvar dock om det inte funkar, men att testa sätta ett motstånd emellan borde ju inte kunna försämra saken iaf. :)

Kan ju vara att dom har en logisk inverterare emellan också, men det framgår inte av ovanstående länk iaf.

Mats
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Intressant, men det har en hake...

Detta är ju om t.ex LCDn skulle ta imot data från en "riktig" RS232 källa, t.ex en COM port på en PC. I detta fall talar vi om det omvända. Sändaren (PICen) kör ju inte RS232.

Dessutom ser det ut som om den som har skrivit websidan använder sig av de "protection diods"som sitter på PIC ingångarna för att "klippa" signalen. Detta är en riktig ful-ful-ful-lösning... :-)

Nja, det *jag* skulle vilja veta, är om det går att få ut *någonting alls* på TX på PICen. Antingen från USARTen eller som en vanlig I/O pinne.

En annan sak är ju att helt enkelt kolla med tillverkaren av LCDn. De borde i alla fall kunna räta ut frågetecknen kring hur insignalen ska se ut. Samt detta med RS232 elle inte.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Jag tror den kan ta data från både RS232 och inverterad TTL. Om man går in på länken för LCD:n, som klasg skickade i sin första post i denna tråd, och bläddrar ned till botten, finns en länk där det står "Frequently asked questions (FAQ)" http://www.seetron.com/bpk_faq.htm om man där läser följande fråga "What about taking data straight from a UART?" så får man svaret på livet, universrum och allting. :D

Synd bara man inte kollade den först. :)

Man måste alltså ha en inverterare så att även stop-bittar och liknande blir inverterade.

Mats
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Inlägg av klasg »

Kaggen:
Det är ju helt otroligt. :) Om det är någonstans man borde ha kikat så är det ju där...Tack. En 7404 får det bli.

sodjan:
Nu vet inte jag om jag har varit otydligt eller om jag faktiskt har mätt och/eller skrivit fel här i tråden. "18-Aug-2005 23:28" skrev jag "Tar jag bort 'puls' så händer ingenting på TX." Antingen så mätte jag galet eller så har jag ändrat någonting i koden sedan dess. Kommenterar jag bort allt som har med "puls" att göra nu så verkar det komma ut någonting på LCDn. Det måste fan ha kommit ut någonting redan då (som jag inte såg, för det kommer bara ut då- och då.) och sedan har jag antagit att det som kommit ut efter den gången också berodde på ”puls”. Fan vad klantig man är. Pinsamt.

Hoppas att det går att lösa med en inverterare nu då.
/Klas
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Som sagt, det är helt otroligt !!

Att de har missat att **tydligt** beskriva en så central punkt i deras datablad !!!

Alltså skall TX signalen inverters innan den matas til LCD.

OK, det kan göras på två sätt :

- Extern invertare (74*HC*04 skulle jag ta, inte TTL varianten)

- Eller lägga TX till en annan ledig pinne på F688'an och lägga ut den inverterade signalen på en annan (ledig) pinne som kopplas till LCDn. Om man sätter upp den första pinnen för IOC ("Interrup On Change"), så blir det inte så mycket extra kod. Bara en liten interrupt snutt som kopierar in-pinnen till ut-pinnen (inverterat) och som bara körs när in-pinnen (d.v.s TX) ändrar läge.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Kan även göras med en transistor + 2 motstånder.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Precis som tillverkaren säger i sin FAQ, och ger följande schema :

http://www.seetron.com/images/invert.gif
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Inlägg av klasg »

Weeeeiiii :)
Det funkade nu direkt när jag inverterade signalen.

Jättetack till er som hjälpt mig. Framförallt sodjan och Kaggen.
Tack!
/Klas
Skriv svar