PIC ja sarjaliikenne

Minulla on PIC, jolle haluan keskustella sarjaportin kautta. Tein siihen tällaisen väliin, jonka pitäisi toimia jännitteiden tasaajana:
http://sodoityourself.com/max232-serial-level-converter/

PIC on kiinni USB:n kautta ohjelmointilaitteessa, joka syöttää sille virtaa. Hölmö kysymykseni on, että pitääkö tuolle linkissä esitelly laitteelle keksiä jostain virtaa? Jos pitää, niin voinko ottaa tuosta PIC:n levystä sitä jotenkin?

Olen aika ummikko tämän kanssa, joten joku sivulinkki tai rautalanka on tervetullutta.

Koitin juotella piirilevyyn Vdd ja Vss kohtiin ohjeen mukaan, mutta silloin ohjelmointilaite ei tunnistanut koko piiriä enää.
10606
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

Kyllä se kytkentä käyttöjännitteen tarvii. 5 volttia Vcc-linjaan ja sen nolla Gnd-linjaan. Ne voi kyllä ottaa PIC:in vastaavien nastojen rinnalta, mutta ehkä ohjelmointilaitteesi tai USB-portti ei kykene syöttämään tarvittavaa lisävirtaa. Eli kokeile käyttää erillistä 5 voltin virtalähdettä tuolle kytkennälle.

Äänestä
  • Ajattelin, että tuo toimii pelkkänä jännitteentasaajana eikä sinällään tee aktiivisesti mitään, mutta mutta :)

    Pitää keksiä jostain virtalähde tuolle. Eiköhän tämä tästä sitten lähde. Kiitos neuvosta!

    Äänestä

Ota PICin rinnalta vaan. Jos olet tehnyt oikein tuon MAX232-kytkennän niin sen kulutus on mA-tasoa, en nyt muista ulkoa mutta voin sen mitatakin jos tarvis. USBin virta riittää varmasti.

Äänestä
  • Minulla on nyt kaapista kaivettu virtalähde, josta saan 3 tai 5 volttia pihalle ja kytkin sen tuolle max:lle. Sen jälkeen ohjelmointilaite löytää piirin, eli jokin muuttui. Tiedä sitten teinkö jotain väärin tuossa alkuperäisessä kytkennässä.

    Kuitenkaan liikenne ei toimi. Latasin netistä Hercules nimisen terminaalisoftan, jolla koitan tuupata merkkejä PIC:lle, mutta menestys on heikkoa (vilkutan ledejä jos merkkejä tulee sisään, mutta yksikään getc-kutsu ei ilmeisesti mene läpi). Kokeilin sitten ottaa merkkejä PIC:ltä vastaan, mutta ruudulle tulee ihan puppua, samaa merkkiä (hieman a:n tapainen missä on väkänen katolla) koko ajan. (asetin char c='a' ja kasvatin c:n arvoa koko ajan, välissä 0.1s sleep). Kaiken lisäksi viritelmä rupeaa pitämään hetken kuluttua korkeataajuista ääntä.

    Myös tuo Hercules ihmetyttää. Välistä se ei huoli mitään merkkejä vastaan vaikka ottaisin yhteyden ulkoiseen modeemiin. Hetken kuluttua kuitenkin kaikki saattaa toimia ihan normaalisti ja AT-komennoilla saan juteltua ihan ok.

    Äänestä

  • srjaton kirjoitti:

    Minulla on nyt kaapista kaivettu virtalähde, josta saan 3 tai 5 volttia pihalle ja kytkin sen tuolle max:lle. Sen jälkeen ohjelmointilaite löytää piirin, eli jokin muuttui. Tiedä sitten teinkö jotain väärin tuossa alkuperäisessä kytkennässä.

    Kuitenkaan liikenne ei toimi. Latasin netistä Hercules nimisen terminaalisoftan, jolla koitan tuupata merkkejä PIC:lle, mutta menestys on heikkoa (vilkutan ledejä jos merkkejä tulee sisään, mutta yksikään getc-kutsu ei ilmeisesti mene läpi). Kokeilin sitten ottaa merkkejä PIC:ltä vastaan, mutta ruudulle tulee ihan puppua, samaa merkkiä (hieman a:n tapainen missä on väkänen katolla) koko ajan. (asetin char c='a' ja kasvatin c:n arvoa koko ajan, välissä 0.1s sleep). Kaiken lisäksi viritelmä rupeaa pitämään hetken kuluttua korkeataajuista ääntä.

    Myös tuo Hercules ihmetyttää. Välistä se ei huoli mitään merkkejä vastaan vaikka ottaisin yhteyden ulkoiseen modeemiin. Hetken kuluttua kuitenkin kaikki saattaa toimia ihan normaalisti ja AT-komennoilla saan juteltua ihan ok.

    Lataas brayn terminal. on erittäin pätevä softa.

    http://www.hw-server.com/software/termv19b.html

    Äänestä

  • kuuskoski kirjoitti:

    Lataas brayn terminal. on erittäin pätevä softa.

    http://www.hw-server.com/software/termv19b.html

    Kyllä tästä taitaa pitkä ja kivinen tie tulla. Saan PIC:ltä heksana vain arvoja 00 F0 00 00 00 00 00 F0 00 00 00 F0 00 F0 F....

    Koodi on
    #include
    #fuses INTRC_IO, NOWDT, NOBROWNOUT, PUT, NOMCLR
    #use delay(clock=20000000)
    #use rs232(baud=9600, xmit=PIN_B7, rcv=PIN_B5, ERRORS, PARITY=N, bits=8)

    void main()
    {
    char c = '0';

    while(1)
    {
    putc(c);
       c ;
    }

    }

    Ajattelin tuolla kokeilla saanko sieltä ylipäätään mitään pihalle. Välistä koitin myös delay_ms:llä ja ledeillä hieman tutkia ottaako se mitään vastaan, mutta aina jäi getc-kutsu jumiin.

    Jotain outoa tässä nyt on.

    Äänestä

  • srjaton kirjoitti:

    Kyllä tästä taitaa pitkä ja kivinen tie tulla. Saan PIC:ltä heksana vain arvoja 00 F0 00 00 00 00 00 F0 00 00 00 F0 00 F0 F....

    Koodi on
    #include
    #fuses INTRC_IO, NOWDT, NOBROWNOUT, PUT, NOMCLR
    #use delay(clock=20000000)
    #use rs232(baud=9600, xmit=PIN_B7, rcv=PIN_B5, ERRORS, PARITY=N, bits=8)

    void main()
    {
    char c = '0';

    while(1)
    {
    putc(c);
       c ;
    }

    }

    Ajattelin tuolla kokeilla saanko sieltä ylipäätään mitään pihalle. Välistä koitin myös delay_ms:llä ja ledeillä hieman tutkia ottaako se mitään vastaan, mutta aina jäi getc-kutsu jumiin.

    Jotain outoa tässä nyt on.

    Missäs olet TRISB:n alustanut? Vai meneekö se joteskin automaattisesti tuossa "use rs232" lauseessa? Itse olen vääntänyt PICille ainoastaan assembleria.

    Ja eikös tossa kannattais ennemmin käyttää EUSARTia kun kerran sellainen peripheraali löytyy? Jos sarjaportti pyörisi raudalla, niin mitä sitä suotta softaa laittamaan....

    Äänestä

  • SmithChart kirjoitti:

    Missäs olet TRISB:n alustanut? Vai meneekö se joteskin automaattisesti tuossa "use rs232" lauseessa? Itse olen vääntänyt PICille ainoastaan assembleria.

    Ja eikös tossa kannattais ennemmin käyttää EUSARTia kun kerran sellainen peripheraali löytyy? Jos sarjaportti pyörisi raudalla, niin mitä sitä suotta softaa laittamaan....

    Käsittääkseni tämä koodi käyttää suoraan valmista rautaratkaisua. Sainkin viimein luettua PIC:ltä järjellistä dataa, mutta kirjoitus ei toimi. Sinne ei vain yksinkertaisesti mene mitään.

    Rupeaa keinot loppumaan. Kai sitä pitää investoida lisää työkaluja, että voi tutkia tarkemmin meneekö sinne edes jännitettä kirjoitettaessa.

    Osa ongelmista ratkesi kun en anna max232:lle virtaa ollenkaan. Jos laitan sen ulkopuoliseen jännitelähteeseen kiinni, niin jostain syystä homma ei toimi vaan siirtyvä data on puppua.

    Äänestä

  • alkup. kirjoitti:

    Käsittääkseni tämä koodi käyttää suoraan valmista rautaratkaisua. Sainkin viimein luettua PIC:ltä järjellistä dataa, mutta kirjoitus ei toimi. Sinne ei vain yksinkertaisesti mene mitään.

    Rupeaa keinot loppumaan. Kai sitä pitää investoida lisää työkaluja, että voi tutkia tarkemmin meneekö sinne edes jännitettä kirjoitettaessa.

    Osa ongelmista ratkesi kun en anna max232:lle virtaa ollenkaan. Jos laitan sen ulkopuoliseen jännitelähteeseen kiinni, niin jostain syystä homma ei toimi vaan siirtyvä data on puppua.

    Ilmeisesti tuossa edellä ollut uartin määrittely on toimiva, koska olet saanut vastaanotettua liikennettä. Tuo garble ongelma vaikuttaisi että onko max ja pic kiinni samassa maatasossa?

    Asenna microchipin mplab. Sillä voit simuloida tuota picciä ja myös sarjaliikennettä. Näet rekisterit yms yms. Käyttö voi vaatia jonkin verran opiskelua mutta sillä selviää varmasti toimiiko koodi oikein.

    http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002

    Äänestä

  • kuuskoski kirjoitti:

    Ilmeisesti tuossa edellä ollut uartin määrittely on toimiva, koska olet saanut vastaanotettua liikennettä. Tuo garble ongelma vaikuttaisi että onko max ja pic kiinni samassa maatasossa?

    Asenna microchipin mplab. Sillä voit simuloida tuota picciä ja myös sarjaliikennettä. Näet rekisterit yms yms. Käyttö voi vaatia jonkin verran opiskelua mutta sillä selviää varmasti toimiiko koodi oikein.

    http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002

    Kuitenkin jos otan suoraan PIC:ltä virtasta, niin tulee sama efekti. Tiedä sitten onko tuolla merkitystä, koska PIC:ltä tulee järjellistä dataa.

    Minulla on Mplab asennettuna, mutta jos oikein käsitin niin se ei tue 16F690:n simulointia. Pitää katsoa josko uudemmassa versiossa on jo tuki.

    Sarjaportista myös tulee dataa pihalle, koska pystyn kommunikoimaan modeemin kanssa sen kautta.

    Äänestä

Kommentoi aloitusta


srjaton kirjoitti:

Minulla on PIC, jolle haluan keskustella sarjaportin kautta. Tein siihen tällaisen väliin, jonka pitäisi toimia jännitteiden tasaajana:
http://sodoityourself.com/max232-serial-level-converter/

PIC on kiinni USB:n kautta ohjelmointilaitteessa, joka syöttää sille virtaa. Hölmö kysymykseni on, että pitääkö tuolle linkissä esitelly laitteelle keksiä jostain virtaa? Jos pitää, niin voinko ottaa tuosta PIC:n levystä sitä jotenkin?

Olen aika ummikko tämän kanssa, joten joku sivulinkki tai rautalanka on tervetullutta.

Koitin juotella piirilevyyn Vdd ja Vss kohtiin ohjeen mukaan, mutta silloin ohjelmointilaite ei tunnistanut koko piiriä enää.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu