Tiedote ylläpidolta:

Elektroniikkafoorumi sulkeutuu tietoturva ongelmien takia.
Käyttäjien tietoja (yv:t, sähköpostiosoite ja salasanan hash) on saattanut vuotaa vääriin käsiin.

Foorumi on asettettu vain luku tilaan. Vanhoja keskusteluja voi lukea palvelinsopimuksen päättymiseen asti.
Tietokannasta on poistettu kaikki salasanat, sähköpostiosoitteet ja yksityisviestit.

Jos haluat saada omat yksityisviestisi, lähetä sähköpostia yllapito@elektroniikkafoorumi.com
samasta sähköpostista mikä oli foorumin tiedoissa niin voin kaivella niitä varmuuskopioista.

Mielenkiintoni foorumin ylläpitoon on viime vuosina ollut vähäistä jo muutenkin joten tähän on hyvä lopettaa.
Kiitokset kaikille käyttäjilla ja pahoittelut mahdollisista ongelmista.

Päivitys: Näyttäisi siltä että mahdollinen vuoto koski vanhaa phpBB2 tietokantaa,
joten helmikuuta 2012 uudemmat tiedot pitäisi olla turvassa.

-Lahha
yllapito@elektroniikkafoorumi.com


PIC 16f877a ja omituinen ongelma?

Keskustelua mikrokontrollereista ja niiden ohjelmoinnista.

Valvoja: Moderaattorit


Vanhempi jäsen
Vanhempi jäsen
Viestit: 400
Liittynyt: Pe Maalis 06, 2009 18:23
ViestiLähetetty: Ti Maalis 26, 2013 12:35
jahonen kirjoitti:Hyvä teoria mutta RMW-ongelma ei selitä sitä miksi tuo RB4-pinni menisi inputisi/HiZ-tilaan suoritettaessa bcf portb,4-käsky.

JOo, sitä se ei kyllä selitä, mutta tämä jälkimmäinen kuulostaa vahvasti RMW ongelmalta.

Vanhempi jäsen
Vanhempi jäsen
Viestit: 595
Liittynyt: La Marras 12, 2011 14:56
ViestiLähetetty: Ti Maalis 26, 2013 14:10
Joopa, näyttää siltä, että on viisasta luopua suoraan portin bittien vääntelystä myös kevyemmin kuormitetuissa tapauksissa. Oli jotenkin jäänyt mieleen, että tuo rmw probleemi alkaa esiintyä vasta, kun lähestytään portin maksimikuormaa. Hyvä, että tuli puheeksi. Tosin se ei kyllä selitä b-portin nelosen käytöstä, kuten todettiinkin.

Eikä myöskään sovi tuohon toisen ongelmatapauksen selitykseksi, joka tuossa toisessa projektissa edelleen satunnaisesti kummittelee c-portin seiskassa. Sitä pinniä kun aikansa hyppyjohdolla tököttelee maihin vian ollessa esillä, niin se korjaantuu.

Vanhempi jäsen
Vanhempi jäsen
Viestit: 400
Liittynyt: Pe Maalis 06, 2009 18:23
ViestiLähetetty: Ti Maalis 26, 2013 17:52
On outoa kyllä. Ei mulla noin pahasti ole kyllä vastaan tökkinyt yksikään picci, vaikka niitä melko monia eri versioita olen käyttänyt.

Mikä tuossa "bcf auki,1" tuo auki on? Onko se joku rekisteri tai portti tai...?
Miten muuten havaitsit sen että se nelospinni menee HiZ-tilaan?

Hitto tää vaivaa mua, löytäkää nyt joku ratkaisu. :mrgreen:

Vanhempi jäsen
Vanhempi jäsen
Viestit: 595
Liittynyt: La Marras 12, 2011 14:56
ViestiLähetetty: Ti Maalis 26, 2013 20:21
L18 kirjoitti:Mikä tuossa "bcf auki,1" tuo auki on? Onko se joku rekisteri tai portti tai...?


Se on merkiksi otettu rekisteri. Nostetaan bitti 1 ylös, kun venttiili 1 on ajettu aukiasentoon. Ja samoin bitti 2 ylös, kun venttiili 2 on auki. Bitit alas, kun venttiilin ajaa kiinni.

Miten muuten havaitsit sen että se nelospinni menee HiZ-tilaan?


Siinä on portb pullup-resistorit päällä, ja sen portin tila hyppää perässä olevan optotriakin kynnysjännitteeseen, mutta ei liipase triakkia. Kaksi ir-lediä sarjassa, ja lilluu 2V paikkeilla, vaikka sen pitäis olla output.

Ai niin. Se opto on vastustettu suunnilleen 10-11mA ottamaan portista, ettei nyt ihan rajoilla edes olla. 7mA ei ollut ihan riittävä luotettavaan liipaisuun.

Vanhempi jäsen
Vanhempi jäsen
Viestit: 476
Liittynyt: La Helmi 03, 2007 11:36
ViestiLähetetty: To Maalis 28, 2013 17:03
Kiitos Jussille yhden ongelmakoodin "tieteelle" luovuttamisesta. Loistavaa ajanvietettä sairaslomapäiville.

Vaikka en vielä olekaan päässyt kokeilemaan koodia oikeassa raudassa niin löysin tuosta kattila-koodista ainakin yhden ongelman computed goto-taulukoihin liittyen, joka saattaa selittää miksi koodin järjestely on saattanut aiheuttaa mielenkiintoisia vikoja. Varmaankaan tämä ei ratkaise kaikkia juttuja mutta toivottavasti edes jotain. Ehkä olet tämän jollain tapaa huomioinut mutta laitan tämän kommentin tähän siinä toivossa että siitä on jollekin muulle iloa.

Nimittäin PCLATH pitää asettaa computed goto-tilanteessa heti siinä vaiheessa kun ohjelmalaskurin ylittää 0xFF:n (tai oikeastaan sen pitää olla sama kuin taulukon osoitteen ylin tavu joka tapauksessa).

Selvitellessäni tuon koodin saloja siirtelin palasia omasta mielestäni selvempään järjestykseen ja törmäsin siihen että simulaattorissakin bin2dec sinkosi suorituksen ihan jonnekin outoon paikkaan. Hetken user manualin ihmettelyn jälkeen tajusin että computed goto (addwf PCL, f) käyttää huomattavan paljon enemmän bittejä tuosta PCLATH:sta kuin mitä goto tahi call.

Sekoilut sai korjattua lataamalla PCLATHiin ko. osoitteen ylimmät 8 bittiä (high-operaattoria hyödyntäen kääntäjä tekee sen itse):

Koodi: Valitse kaikki
        clrf    dig_ctr
        movlw   high table  ;get high byte of table address for correct operation of computed goto
        movwf   PCLATH
subtr   movf    index,w     ;get current index into W


Koodi: Valitse kaikki
            movlw   high disptbl
            movwf   PCLATH
            movlw   0xff
            movwf   dcount
            movf    select,w        ;näytön valintarekisterin lisäys program counteriin
disptbl     addwf   PCL,f


Sanomattakin lienee sitten selvää, ettei taulukko saa osua kohtaan jossa ohjelmakoodin osoitteen 8 alinta bittiä pyörähtää ympäri tai taas ollaan ongelmissa. Computed goto-osuudet kannattanee orgilla sijoittaa sopiviin kohtiin niin ei tule ylläreitä.

t. Janne

Vanhempi jäsen
Vanhempi jäsen
Viestit: 595
Liittynyt: La Marras 12, 2011 14:56
ViestiLähetetty: To Maalis 28, 2013 17:15
Jep. Ihan hyvä huomio, tai oikeastaan selvennys. Mutta ihan alusta asti ne pari paikkaa, jossa tuota käytetään, oli tarkoitus pysyvästi pitää selvästi ensimmäisen ff:n alueella juurikin tuon takia. Nyt en katsonut, mihin ne ovat lipsahtaneet viimeisissä siirtelyissä, joita ihan vaan kokeeksi tein reippaalla kädellä. Siitä käännetty toimii kuitenkin nyt ilman ongelmia nillä parilla lisätyllä bcf kohdalla.

Vanhempi jäsen
Vanhempi jäsen
Viestit: 476
Liittynyt: La Helmi 03, 2007 11:36
ViestiLähetetty: Ma Touko 06, 2013 22:01
Noniin, nyt on tehty tiedettä ja kokeiltu tuota Jussin lähettämää kattila_3.asm-pätkää eri tavoin. Suurin osa ajasta meni kyllä kasatessa reikälevylle se kytkentä picceineen (16F877A) jolla pääsi kokeilemaan.

Testasin ekaksi tuon portc:n ongelman, eli että vaatisi useita bcf-käskyjä nollautuakseen. Yksi näytti oman testauksen mukaan riittävän hienosti portc,6:n nollaukseen. Toinen testi oli sitten vaihtaa portc,6:n tilalle portb,4. Sekin näytti toimivan ongelmitta niinkuin odotinkin.

Eli summa summarum: ongelma ei näyttäisi olevan ainakaan koodissa tai picissä. Missä se sitten on, en osaa kyllä arvata.

t. Janne

Vanhempi jäsen
Vanhempi jäsen
Viestit: 595
Liittynyt: La Marras 12, 2011 14:56
ViestiLähetetty: Ma Touko 06, 2013 23:01
Jokseenkin arvattava tulos. Kiitos mielenkiinnosta kuitenkin.
Kolmella eri piirillä tuota piti kokeilla, sama toiminta. Ja aina sama kohta. Useammalla bcf:llä toimii nikottelematta.

Vanhempi jäsen
Vanhempi jäsen
Viestit: 400
Liittynyt: Pe Maalis 06, 2009 18:23
ViestiLähetetty: Ti Touko 07, 2013 12:15
Eli olisi jostain ulkoisesta tekijästä kiinni?
Eihän picin käyttöjännitelinjassa ole mitään ikävää kuormaa kiinni?

Vanhempi jäsen
Vanhempi jäsen
Viestit: 595
Liittynyt: La Marras 12, 2011 14:56
ViestiLähetetty: Ke Touko 08, 2013 0:43
L18 kirjoitti:Eli olisi jostain ulkoisesta tekijästä kiinni?
Eihän picin käyttöjännitelinjassa ole mitään ikävää kuormaa kiinni?


Ei ole mitään sillai ikävää. Ja tekee saman pelkkänä prossuna ilman toimilaitteita, eli relekorttia. Sama yksi ainoa kohta nyt vaan nikotteli samassa kohdassa koodia. Ei se oikein ulkoa voi tulla. Eikä sillä nyt oikeastaan ole kuin uteliaisuusmerkitys, toistettuna se sama bcf pariin kertaan hoitaa homman.

Vanhempi jäsen
Vanhempi jäsen
Viestit: 400
Liittynyt: Pe Maalis 06, 2009 18:23
ViestiLähetetty: Ke Touko 08, 2013 6:51
Juu, uteliaitahan tässä ollaankin. ;)
jahosella siis sama picci ja sama koodi, sillä erolla että hänellä ei ole tuollaista toimintaa kuin sinulla?
Outoa...

Vanhempi jäsen
Vanhempi jäsen
Viestit: 476
Liittynyt: La Helmi 03, 2007 11:36
ViestiLähetetty: Ke Touko 08, 2013 8:08
Kuorma portissa on pienempi tuossa minun koekytkennässä kuin Jussilla, joten ei varmaan ihan sama tilanne. Voisi tietty vielä kokeilla nostaa ledien virran 20 mA hujakoille ja kokeilla vaikuttaako se mitään.

Mutta toisaalta myöskään tuota RB4:n muuttumista inputiksi ei minulla ilmentynyt siinä samassa kohti vaan kaikki toimi moitteitta. Ymmärsin ettei se missään vaiheessa enää muuttunut outputiksi takaisin. Samoin koemielessä C:llä tekemäni samantapainen softa tuntui toimivan ihan ok. Noilla ei liene paljoa koodimielessä yhteyttä joten aikaisemmin kerrotun perusteella sen ei olisi pitänyt lainkaan toimia jos yksinkertaisemmissakin pätkissä on joutunut vaihtelemaan koodin paikkaa muistissa jotta sen on saanut pelaamaan. Aika mielenkiintoinen tapaus tosiaan.

Minulla oli sellainen eroava työtapa että käytin ohjelmointiin PICkit3:a ICSP-piikkiriman kautta joten en PICiä irroitellut mihinkään erilliseen ohjelmointilaitteeseen vaan flashasin suoraan MPLABista. Bypass-konkkina minulla on 47n 0603-smd-konkat käyttispinnien välissä reikälevyn juotospuolella. Sen lähemmäksi picciä niitä ei taida saada.

t. Janne

Vanhempi jäsen
Vanhempi jäsen
Viestit: 595
Liittynyt: La Marras 12, 2011 14:56
ViestiLähetetty: Ke Touko 08, 2013 11:14
Joo, ei muuttunut rb4 takas outputiksi ilman resettiä. Ei edes erikseen lisätyllä bcf trisb,4 käskyllä. (bank 1)
Sen opton virta on ihan mitattuna jossain 10-11mA välissä.
Ei ole nyt ehtinyt muuten tehdäkään lisätutkimuksia, kun se toimii tollai kikkailtuna.

Vanhempi jäsen
Vanhempi jäsen
Viestit: 476
Liittynyt: La Helmi 03, 2007 11:36
ViestiLähetetty: To Touko 09, 2013 18:35
Joo, ei taida auttaa kylmät kääreetkään. Toimi edelleen moitteitta vaikka nostin ledien virran 10 mA hujakoille. Toimii käyttäen RB4:ää tai RC6:tta. Sekin tuli huomattua samalla että PICkit 3 ohjelmoi edelleen piirin ongelmitta vaikka nuo 10 mA ledit ovat yhtäaikaa kytketyt RB6 ja RB7 (PGC/PGD) pinneihin.

Ainut erikoisuus jonka huomasin on se että venttiilien ohjaus ei ole täysin riippumaton vaan venttiili 1 "varastaa" ajan laskennan venttiili 2:lta jos molempia ajellaan yhtäaikaa (eli venttiilin 2 ajon aikalaskenta ei etene ennen kuin venttiili 1 on ajettu loppuun), mutta tämä taitaa olla ihan softan ominaisuus.

t. Janne

Vanhempi jäsen
Vanhempi jäsen
Viestit: 595
Liittynyt: La Marras 12, 2011 14:56
ViestiLähetetty: To Touko 09, 2013 19:13
jahonen kirjoitti:Ainut erikoisuus jonka huomasin on se että venttiilien ohjaus ei ole täysin riippumaton vaan venttiili 1 "varastaa" ajan laskennan venttiili 2:lta jos molempia ajellaan yhtäaikaa (eli venttiilin 2 ajon aikalaskenta ei etene ennen kuin venttiili 1 on ajettu loppuun), mutta tämä taitaa olla ihan softan ominaisuus.


Juu, niin on. Saa ajella toista pidempään, se ei haittaa. Kunhan vaan ehtii laitaan, eikä surruuta koko ajan. Meinasin säästää rajakytkimien laitossa vaivaa, mutta saattaa tulla tehtäväksi kuitenkin.
EdellinenSeuraava

Paluu Mikrokontrollerit ja ohjelmointi

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 1 vierailijaa

cron