Jaksaisko joku linkata AVR-studioon saman tyylisen ledin vilkutuskytkennän kun arduinossa se blink
at mega328P on verolevyllä ja AVR:än oma ISP siinä kiinni. AVR-studio tunnistaa tämän räpellyksen Device Program valikossa koodilla "0x1E950F" ja target jännite 5V eli jotain elonmerkkejä ilmeisesti on.
Miteenhän tonne nyt saisi jonkun yksinkertaisemman mahdollisen ohjelman sisään? pitääkö C-kieli jotenkin kääntää Asembleriksi?
at mega328P on verolevyllä ja AVR:än oma ISP siinä kiinni. AVR-studio tunnistaa tämän räpellyksen Device Program valikossa koodilla "0x1E950F" ja target jännite 5V eli jotain elonmerkkejä ilmeisesti on.
Miteenhän tonne nyt saisi jonkun yksinkertaisemman mahdollisen ohjelman sisään? pitääkö C-kieli jotenkin kääntää Asembleriksi?
Vastaukset 10
Vanhimmat
Aloita vaikka täältä.
http://metku.net/index.html/reviews/hwforum/index.html?path=articles/microcontroller-part-1/index
Juu kiitti. Muuten hyvä sivu mutta omalla koneella en saanut noita kuvia auki
sain ledinvilkutuksen toimimaan tällä: http://www.pololu.com/docs/0J36/3.b
nyt jopa oikein muuttelin ledin vilkkumisaikojakin, näytti aluksi aika hitaasti vilkkuvan, vaikuttaako nopeuteen se että olen juottanut levylle 16mhz kiteen, eli samalla ohjelmalla vilkkuisi nopeammin jos olisi enemmän taajuutta kiteessä?
Korjaus linkkiin, nyt pitäis kuvat näkyä.
http://metku.net/index.html?path=articles/microcontroller-part-1/index
Korjasitko myös koodiin 16Mhz kiteen, muuten viivefungtio toimii väärin.
#define F_CPU 20000000 , jos et muuttanu tätä niin ms ei pidä paikkaansa.
Vilkkutaajuutta muutetaan sillä viiveluupilla.
_delay_ms(100);
Ohops. tuo kidehomma oli tosi hyvä huomio, plussat siitä, ei ollut mitään käsitystä tuosta muuttujasta.
Eli periaatteessa kun kiteen arvo oli väärin niin aika kyllä muuttui lineaarisesti kun muita arvoja muuttelin, mutta eivät vain täsmänneet millisekunteina?
Eli jos joskus kehityn tässä hommassa niin kannattaako vastedes ostaa kaupasta aina suurimman taajuuden kide minkä rahalla saa, jos haluan mahd nopeeta toimintaa? Pysyykö AVR tahdissa?
Kontrollerille annetaan tyyppikoodin perässä max. nopeus sitä ei kannata ylittää. Kide valitaan tarpeen mukaan tai jätetään pois. Tuollainen vilkkukokeilu käy aivanhyvin sisäisen kellonkans. Mitä nopeampi kontrolleri sen kalliimpi ja tehoa kuluu enempi eli jos paristokäyttöinen laite niin ei aina kannata käyttää max taajuutta. Erikoiset kidetaajuudet on yleensä sellaisia että ne mahdollistaa esijakajan optimaalisen käytön, esim. kello-ohjelmalle hyvä on 4,1943Mhz.
Noniin kiitos tuo kellokiteen tajuus olikin hyvä juttu!
Oikeastaan olen tutkaillut tässä AVR-studioita ja arduinoa samaan aikaan.
Kerkisin arduinolla aloittaa parkkikiekkoprojektin jossa kiekko käy rc-auton servolla auton käydessä kellona, ja kun auto pysäytetään niin se jää paikoilleen.
Arduino unossa on 16mhz kide ja sitä tuskin kannattaa alkaa vaihtamaan kun kellotaajuus on kirjoitettu luullakseni bootloaderiin.
Omassa kännykässä puolessa vuodessa heittää kello 10min, mahtaako kiekon kanssa käydä sama kun taajuus ei ilmeisesti mene aivan tasan ajan kanssa...
No, nuo avr:t on tupanneet oleen pitkään hyvälaatusia kellotettavia. Itsekin olen kokeilemalla päässyt 20Mhz versiota kellottamalla n. 28.6 MHz:iin. Sitten 32MHz:lla alko tulla jo defektiä, ts. joitakin yksikköjä ei saanu enää toimimaan tai toimi väärin, porttiin kirjotukset epäonnistu, yms. hauskaa.
Hommahan menee niin, että rakenteluvaiheessa ei haittaa, vaikka olisi ylimääräsiä tehoja prossassa. Mutta sitten valmiista laitteesta otetaan kaikki joutavat kellosyklit pois. Tämä siitä syystä, että jos vaikka on patterilla toimiva laite, niin prossun energiankulutus on suoraan verrannollinen käytettyyn kellotaajuuteen(ja io:n määrään). Patterien kestoaikaa voi siis saada hyvässä tapauksessa paljonkin lisää. Samaa tietysti ajavat prossun sleep/idle-modet, joita kannattaa kanssa lisäillä.
Ei ongelmia kiekon kanssa, kun käyttöajat on lyhyitä. Ongelma johtuu kiteen lämpötilaominaisuuksista. Ts. n. 30C:ssä taskussa pidetty kide käyt nopeammin, kuin 20C:ssä pöydällä pidetty. Tästä syystä on kehitetty kideuuneja, jotka siis ovat kiteitä, joissa on lämpötilakompensointia.
btw. Laita se kännykkäs asetus "käytä verkon aikaa", tjsp. päälle. Pysyy sitten ajassa, tosin mulla se on sen jälkeen jostain syystä GMT-ajassa..
Ootko muuten asettanut sulakkeet(fuses) niin, että se todellakin käyttää ulkoista kidettä? Kun siinä on oletuksena käyttää sitä sisäistä RC-oskillaattoria, jonka taajuus on 8MHz. Lisäksi kellotaajuuden jakajaksi on asetettu 8, eli kellotaajuus on 1MHz, tämä voi aiheuttaa sen sleepin virheellisen ajan kanssa.
Itsesiassa en varmaan ole laittanut ulkoista kidettä käyttöön, juotin sen levylle kun kuvassa sellainen oli. pitää alkaa lukemaan lisää ohjeistusta miten voin kokeilla kidettä. Nyt parkkikiekkoon tuli tilatut hammashihnapyörät joten vähän aikaa ollaan arduinon puolella opiskelemassa.
Tuossa parkkikiekossa, joka siis on arduinolla, AVR käy kellona 24/7 ja jokaista puolituntista kutsutaan omalla pulssinleveydellä, kuten RC-auton servoa ohjataan pulssinleveysmodulaatiolla.
Kun auto on käynnissä niin rele päästää pulssin kulkemaan servolle ja kiekko pyörii, mutta kun sytytysvirta katkaistaan AVR jää käyntiin mutta pulssi ei mene enää kiekolle. Tässä on helppous siinä että kun auto käynnistetään niin kiekko ottaa jälkeen jääneen ajan kiinni kun AVR komentaa senhetkistä pulssinleveyttä
Hieman ohi aiheesta mutta esimerkiksi nyt sinun taidoillasi, onko kontrollerien kanssa bisnesideaa rakennella sulautettuja järjestelmiä?