GSM-poweri, konkkakysymys

mikö piru siinä vaatii noin isoks sen konkan? ite oon puotellu burstit ihan 100uf tantaalilla ja 10nf kerkolla rinnan kytkettynä… :confused: :open_mouth:

Kertaalleen olen ollu tekemässä sellasta projektia missä GSM moduuli ja ATMega prossa. kyllä normi lipo piisas muutamalla tantaalilla varustettuna.

Kyllä tuon GSM modeemin pitäs pystyä käskemään sleep modeen AT komennoilla ja herättää sieltä. eli tota virtojen katkomista ei tartte tehä. Samalla GSM moduuli ohjasi lipo latausta. Tarvittiin laturi, jossa oli virranrajoitus.

Tein illalla kuivaharjoituksia 328:n taajuuden laskemiseksi (kide pois ja sisäinen
oskillaattori käyttöön). Sain jopa jollain tasolla toimimaan, kun ruuvasin fuseja
sinne tänne…

Neuvokaas nyt viisaammat, mitä asetuksia tarvitsen. Käytän
engbedded.com/fusecalc kalkulaattoria fusemäärityksiin.

Mihin kohtiin tarvitsen ruksit? Tarkoitus on ajaa 3.7-4.2V eli sillä
minkä lipo antaa. Watchdogia en käytä, sleep modea käytän, herätys
pinnillä. Olisi hyvä, jos prosu toimisi mahdollisimman lähelle sitä miten
toimii 16M kiteelläkin. Niin ja käytän sarjaliikennettä varten NewSoftSerialia,
tarvitseeko sinne vääntää jotain paikalleen kun taajuutta pudotetaan?

CKOUT
CKDIV8
Boot reset vector enabled
Brown-out-detection level (4.3, 2.7, 1.8, disabled)

Ite sain järkeviksi arvoiksi: -U lfuse:w:0xa2:m -U hfuse:w:0xd9:m -U efuse:w:0xfd:m

Nyt sen pitäisi pyöriä 8MHz. Sitten vain katsot CKOUT pinnistä milloin tulee 8 megahertsiä pihalle (kai skooppi löytyi?) ja säädät OSCCAL arvoa.

Skooppi löytyy, mutta ei minulta. Lueskelin myös vähän aiheesta kaikentietävästä netistä, ja ymmärsin, että jos aikoo käyttää UARTia tai ylipäänsä siirtää sarjamuotoista dataa, niin kide olisi hyvä olemassa. Internal oscin kablibrointi kahdeksaan megaan vaatisi myös ilmeisesti oskilloskoopin, kuten Vuokko totesi. Jokin pirun pitkä viritysohje löytyi Atmelilta, mutta taidanpa antaa olla.

Plan B: korvaan 16Mhz kiteen 8MHz kiteellä. Tämä lienee sopivin ratkaisu minulle, koska mulle on ihan sama, onko laitteessa kide vai ei. Kiteen olemassaolo ehkä säästää hermojani.

Olisi kiva, jos laite vielä toimisi sarjaliikenteen kanssa nykyisellä tavalla kellotuksen pudotuksen jälkeen… Tarttee varmaan muuttaa jotain johonkin, olikohan boards.txt -tiedostossa jotain määreitä kääntäjälle, muistaakseni.

Vuokko: laskitko fuset fusecalcilla? Mikä on oikea valinta, jos mulla on 8MHz kide laitteessa?

Joo. naksuttelin tuon webbisivun.

Jos ajelet kiteellä niin et tarvitse CKOUT ominaisuutta. Ehdotin skooppauksen helpottamiseksi. Jos haluat niin sitten laskee ohjelmoi sen uudelleen. Ext full swing crys ja laiska heräys
BOD 2.7V ja BOOTSIZE iso. Noilla pitäisi mennä.
-U lfuse:w:0xf7:m -U hfuse:w:0xd9:m -U efuse:w:0xfd:m

Ei se sisäisen kellon säätäminen ole vaikeaa skoopila.

int main(){
  setup();
  while(1){
    viive()
    if(PINx & (1 << M){
     OSCCAL += 1;
    }
    if(PINx & (1 << K){
      OSCCAL -= 1;
    }
    if(PINx & (1 << L){
      print_or_save_to_EEPROM(OSCCAL);
    }
  }
}

Skoopilla katsoo milloin näkyy 8MHz ja naputtelee nappeja sitten.

Vuokko

Mä en saa samoja fuseja… mikä on ext full… jne täsmällinen valintasi?

EDIT: no tulihan samat arvot kun otin div8 -täpän pois, eli jos oikein käsitän,
niin tällä täpällä prosessorin nopeus pudotetaan 8Mhz:n kiteellä yhteen MHz:iin.
Moinen hidastus ei ole tarpeen.

Mitenköhän sujuu sarjaliikenne NewSoftSerialin kanssa :open_mouth: ? Luulisi
kellotaajuuden puolittamisella olevan jotain vaikutusta.

Jos tuo on fiksusti tehty niin nopeus ei vaikuta toimintaan. *) Jos taas on sanottu tiukasti, että arduino pyörii jollain tietyllä nopeudella niin silloin on ongelma. F_CPU:sta sen tulisi viiveet laskea. Paljonko bitin paukutus maksaa prossuaikaa on minulle toistaiseksi tuntematon tieto. Tosin itse olen ollut laiska ja koodannut tuon ominaisuuden assemblerilla ja laskenut kellojaksoja ja saanut siten parhaan mahdollisen toteutuksen. Koodia kurkkimalla se selviäisi.

Arduinoihmiset kertokoon miten tuo tehdään.

*) datasheetin sarjaporttiosastossa on USARTin osalta mainittu nopeusvirheitä eri kellotaajuuksille.

Sain pyörimään 8Mhz:lla kiteen kanssa ihan kivasti, tosin mulla on jotain 328p -kiinapiirejä, jotka nurisivat signaturesta ohjelmoinnin yhteydessä, mutta sain kun sainkin taklattua jotenkin.

Vielä on yksi ongelma. PIR on kiinni samassa jännisyötössä kuin modeemi, ja modeemin ollessa päällä ja tehdessä temppujaan PIR “vilkuttelee” ihan omiaan. Täytyy olla jonkinlainen jännitesyöttöön liittyvä ongelma, enkä oikein tiedä, miten ratkaisisin, sillä jos oletuksena on nyt 3.7V jännite, niin LDO-regulaattorikin pudottaa jännitettä sen verran, että PIR taitaa sokeutua. Taidan hoitaa PIR-ongelman ohjelmallisesti, jos se onnistuu helposti. Tarkoitan, että ohjelma noteeraa vain ensimmäisen PIRiltä tulevan herätteen, ja ohittaa mahdollisesti muut.