Har lyckats att programera DTR och RTS från 12v- till 12v+ och ovändt :-) Kan man läsa DCD (in)? Hur? Programerar qbasic. Är inte ser och par lika rent elektriskt?
- posted
för 19 år sedan
Har lyckats att programera DTR och RTS från 12v- till 12v+ och ovändt :-) Kan man läsa DCD (in)? Hur? Programerar qbasic. Är inte ser och par lika rent elektriskt?
Lite ont om information för att kunna svara bra, men
På
Nej, parallellporten kör TTL (0-5V lite förenklat), serieporten kör V.28 (+12V/-12V _mycket_ förenklat).
/Henrik
:-)
Tror det är nått med &H2fe man skall läsa. Kanske ställa in nått riktnings register. Vilken signal skall man skicka in i DCD ttl?
Liten förklaring till parallellportens stift och I/O-register finns på min hemsida (kommer inte ihåg var jag stal den):
Du kan inte vara säker på att parallellportens I/O-register nås på port
02FE och 02FF eftersom detta beror på BIOS-inställningar m m. På minnesadress 0000:4008 sparar DOS informationen om vilken I/O-port första parallellporten använder.Det blir lite klurigt i QBasic eftersom det språket saknar bitskiftinstruktioner och heller inte kan läsa mer åt gången än 8 bitar från en minnesposition och bara kan läsa/skicka 8 bitar från/till en I/O-port, men något sådant här bör fixa det:
DEF SEG = 0 PortAddrLow% = PEEK(&H4008) PortAddrHigh% = PEEK(&H4009) PortAddr1% = PortAddrLow% + PortAddrHigh% * 256 PortAddr2% = PortAddr% + 1
Då får du två variabler, PortAddr1% och PortAddr2% som innehåller I/O-portadresserna till första parallellportens I/O-register, oavsett BIOS-inställningar, typ av moderkort, parallellport m m. Dessa adresser kan du sedan använda med INP och OUTP för att sätta och läsa 8 av bitarna åt gången.
I C blir det istället: unsigned short PortAddr = *(unsigned short far *)0x00400008;
Då kan man använda inpw() och outpw() för att läsa/skriva alla 16 bitarna på en gång.
-- Olof Lagerkvist ICQ: 724451 Web page: http://here.is/olof
riktnings
Det är com porten jag vill använda. För där finns mer kräm 12v+ och 12v-. Att driva bygget med.
Port 3FE - Modem Status Register - MSR (read only) ¦7¦6¦5¦4¦3¦2¦1¦0¦ 2FE, 3FE Modem Status Register ¦ ¦ ¦ ¦ ¦ ¦ ¦ +---- 1 = DCTS Delta CTS (CTS changed) ¦ ¦ ¦ ¦ ¦ ¦ +----- 1 = DDSR Delta DSR (DSR changed) ¦ ¦ ¦ ¦ ¦ +------ 1 = RI ring indicator changed ¦ ¦ ¦ ¦ +------- 1 = DDCD Delta Data Carrier Detect (DCD changed) ¦ ¦ ¦ +-------- 1 = CTS ¦ ¦ +--------- 1 = DSR ¦ +---------- 1 = ring indicator (RI) +----------- 1 = receive line signal detect
Vill läsa ovan ex DCD. Vet ej hur ännu och inte heller vilken signal den vill ha. Gissar på TTL.
[snip]
Du är faktiskt ganska snett ute är jag rädd. Den tekniska termen "kräm" används oftast i betydelsen strömstyrka och då är oftast parallellporten bättre. Generellt sett så är det ytterst vanskligt att driva något från en port på en PC, i synnerhet är serieporten ganska opålitlig. Både spänning och hur mycket ström utgångarna kan leverera skiljer en hel del redan på stationära datorer, på bärbara är det än värre. Du kan inte räkna med att få +/- 12V, i själva verket kanske du inte får mer än +/- 5V vid en belastning som drar 10 mA, i värsta fall inte ens det.
Parallellportarna kan skilja en hel del, men där vet man lite bättre hur de beter sig. Låg utnivå ligger på 0-0,5V ungefär, hög bör ligga över 3V och det är i allmänhet inga problem att dra 20 mA, på gamla burkar kunde man ibland dra så mycket som 64 mA.
Skall du driva eller styra större strömmar än dessa så får du fixa fram det på annat sätt.
Ofta är parallellporten den mest lämpliga för att styra hobbyprojekt.
Att DCD inte skall ha TTL framgick väl i min första postning. Status på DCD läses ut ur bit 7 i MSR.
/Henrik
Som Henrik skriver, parallellporten är bättre till sådant. Annars har jag en liknande bild om serieporten:
Uttrycket INP(PortAddress%) & &H8000 blir skilt från 0 när DCD, pin 1 på porten, är hög (om du har I/O-adressen till porten i variabeln PortAddress%, alltså oftast &H03FE eller &H02FE).
Nej, det är 12 V-system.
-- Olof Lagerkvist ICQ: 724451 Web page: http://here.is/olof
Hej Henrik, hej Anders!
Jag har testat ytterligare ett alternativ. Köp en USB till Serie Adapter pilla ut strömmatningen ur kabeln, troligtvis röd och svart delkabel. USB-specen lovar 100mA i specialfall 500mA! DB9 kontakten kan användas till signalerna. Det är mycke slöare än PCns vanliga COM-port men i slow speed tillämpning borde det gå bra ;)
-- Trevlig helg önskar: /Svennis http://w1.213.telia.com/~u21316909/
Svennis wrote: [snip]
Det kan vara ett alternativ, men dessa adaptrar har sina svagheter. Anders har ju inte nämnt vad det skall användas till, men det verkar ju inte vara normal seriekommunikation, och då kan det bli lite värre att använda en USB-Serie adapter. Vet att många haft problem med dessa i applikationer där man håller på och flipprar med statussignalerna i porten för att styra elektronik. Med så mycket knepig ostandardiserad hårdvara och drivrutiner mellan applikationsprogram och utgång så har man inte något direkt kontroll. Och att styra den via skrivningar till en port från QBASIC kan man glömma.
Ett område där man sett bristerna i USB-Serie adaptrarna är inom diagnostiksystem för bilar. Där har man ofta behövt exakt kontroll över vissa signaler och det har funkat fint så länge det satt serieportar på laptops. Det blir ju allt mer sällsynt och USB med adapter har visat sig bli lite av ett lotteri.
/Henrik
12v-.
Drivningen av minn lilla Fiber test grunka (honeywell). Lite låg sänning men det funkar. SMT moduler för tempmätning funkar fin utan att få mer än en kontakt. Det känns om comporten är rätt bra skyddad elektriskt. Tål en hel del. Sitter det inte rs232 till ttl konverter i datorn? Sedan en liknande 16550 som styr både par och ser? Får kanske fundera lite på joy porten. Där finns 5v+. Vad tål den?
Hmm, om jag inte misstar mig så kan man ta ut max 500 mA på USB-porten
- sedan slår en polyswitch-säkring till och stryper strömmen
problemet är att om man anluter till USB-porten en enhet som strömavtapp utan logik som skvallrar om närvaro, så vet inte OS:t om att man tjuvar ström och delar ut kapaciteten till andra anslutna USB-enheter i 100 mA-steg, vilket gör att hela skiten kaske stannar (USB-mus mm.) när OS: har delat ut sina 500 mA till alla inkopplade enheter och den extra okända belastningen gör att polyswitchen nyper till...
håller med - det är lite för många lager som kan krångla mellan applikationsprogramvaran och responsen i andra ändan på USB/serieporten. Drivrutinerna erbjuder knappast en transparent emulerat UART-krets med alla register och med samma tidrespons i us-tiddomän som att läsa/skriva på en fysisk UART - för det är nämligen det som krävs i industrin - speciellt vid felsökning och hantering av gamla produkter.
Det är bara att vänja sig att ha en PC-card med två RS232 på den kvaravarande pc-cardplatsen för att laptopen övh. skall betraktas som användbart ur en service/mätteknikers synpunkt - och det blir extra viktigt att hitta laptop med 2 PC-card platser eftersom man också måste ha plats med en GPIB-kort då dess USB-varianter heller inte fungerar bra så fort man försöker använda det lite proffesionellt och med hög prestanda.
Kort sagt, nästan allt som är USB-anslutet är bara leksaker idag och håller inte i prestanda för proffesionell verksamhet.
/TE
Jag vet inte vad som är värst. USB i sig eller windows hantering av densamma. Båda gör mig galen med jämna mellanrum.
Serieport skall vara riktig gammal hederlig serieport, det fungerar alltid (utom när man börjar blanda in ATAPI och annat junk). Åtminstone kan man få ett felmeddelande om nått är paj. Serieport över USB, det blir alldeles för många lortiga fingrar mellan applikationen och hårdvaran. Det är drivrutin för USB-serieportskonverten, för USB-huben i sig osv osv...
Keep It Simple.
Då fungerar det.
-- Ichimusai http://ichimusai.org/ AA #769 ICQ: 1645566 Yahoo: Ichimusai MSN: Ichimusai1972 AOL: Ichimusai1972 IRC: Ichimusai@IRCNet "Voice or no voice, the people can always be brought to the bidding of the leaders. That is easy. All you have to do is tell them they are being attacked, and denounce the pacifists for lack of patriotism and exposing the country to danger." -- Hermann Goering
Hi Anders!
Joy porten 5V är kopplad direkt till nätdelens 5V spänningsmatning. Där finns det kräm vill jag lova ;)
Problemet är veka kablar som brinner av om drar mer än några ampere.
-- Med vänliga hälsningar: /Svennis http://w1.213.telia.com/~u21316909/
+Svennis wrote
För att få ut 500mA så måste prylen speciellt be om så mycket ström, och datorn kan neka den det om det inte finns, vilket ofta är fallet.
[snip]
Om du menar att du tar drivningen från serieporten så är det som tidigare påpekat ingalunda säkert att du får det att funka med en annan dator om det skulle bli aktuellt.
del.
Det varierar oerhört mellan tillverkare och modeller, men i allmänhet verkar de tåla en del stryk. Finns dock undantag, på en del bärbara jag drabbats av har serieportarna varit extremt känsliga.
På serieporten sker konvertering av elektriskt snitt i datorn, men det sitter sannerligen ingen 16x50 till parallellporten. Vad menar du att den skulle fylla för funktion där?
Går omöjligen att svara på, finns mig veterligen ingen standard som säger vad en dator skall kunna leverera på den porten och även om det fanns så tvivlar jag på att datortillverkarna skulle följa den.
/Henrik
16550
På Amigan används 8520 till både ser och par.
På joystick porten finns midi=seriel, så där får jag forska vidare.
Funkade fint att läsa av &H2fe för input. Skall vara rs232 signal. Min grunka (honeywell).ger jord. dcd vill ha negativ spänning. Så det får bli "el relä" imellan.
Anders Anderzon wrote: [snip]
Midiporten verkar inte speciellt väl standardiserad eller flexibel, kan nog vara knölig att använda till något sånt här.
Skall man göra det rätt så skall man ju switcha mellan positiv och negativ spänning. Man kan mygla till detta utan speciellt mycket elektronik genom att använda RTS för positiv nivå och DTR för negativ eller omvänt. Kan kräva lite trimning och funktionen går knappast att garantera på alla datorer. Se
/Henrik
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.