Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
WinAVR / GCC alapszabályok:
1. Ha ISR-ben használsz globális változót, az legyen "volatile"
2. Soha ne érjen véget a main() függvény
3. UART/USART hibák 99,9% a rossz órajel miatt van
4. Kerüld el a -O0 optimalizációs beállítást minden áron
5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás
6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et
Bővebben: AVR-libc FAQ
Lapozás: OK   705 / 840
(#) csatti2 válasza Robika hozzászólására (») Nov 17, 2015 /
 
Vagy használj olyan AVR-t, amiben több USART is van...
(#) Robika válasza csatti2 hozzászólására (») Nov 17, 2015 /
 
Köszi,utánanéztem és tényleg van ilyen. Jó irány
(#) zombee válasza Robika hozzászólására (») Nov 18, 2015 /
 
Kicsit nagyobb méretű, de az ATMega164 (/324/644/1284) rendelkezik kettő USART-al a DIP tokkal (is) rendelkező szériában, ha SMD kell akkor ATMega128 alá nem mennék.
A másik lehetőség, hogy szoftveresen oldod meg az egyik UART működését - a feladat nem bonyolultabb mint egy másik AVR-t betenni és I2C/UART konverterként használni.
De kétségtelen hogy a nagyobb IC használata a legegyszerűbb...
(#) fecus válasza csatti2 hozzászólására (») Nov 18, 2015 /
 
Mindenkinek kösz.
csatti2: 868MHz-el kapcsolnám össze a szerveremmel hogy ne terhelje a WiFi sávot és átlásson 1 köztes emeleten.
Tudsz olyan magyar nyelvű listát ahol valaki sikeresen összekötötte már az efféle eszközét valamelyik home automatzation progival?

killbill: Hú de jó, hogy írtad! Mérnem kellene az akkut. Akkor dobom a Attiny2313-at.
(#) csabeszq válasza fecus hozzászólására (») Nov 18, 2015 /
 
Én home automation-höz Wifit használnék.

Az RF transmitter akkor jó, ha hordozni akarod az eszközöket ide-oda és nem mindig elérhető a Wifi hálózat (távirányítós rc autó). Szerintem, ha mindig ugyanott csücsülnek az eszközeid, nem éri meg RC-zni.

A WIFI garantálja, hogy a csomagok rendesen átmennek (bár komoly késleltetés lehet), nem kell újra megírni a zajszűrést / sérült csomagok eltávolítását / ... Emellett simán lehet hálózati eszközzel nyomkövetni azt, ami történik (Wireshark), sőt a web-en is megnézheted, hogy mi újság és minimálisan kerül többe.
(#) csatti2 válasza csabeszq hozzászólására (») Nov 18, 2015 /
 
Akkumulátoros szenzoroknál, ahol fontos, hogy ne kelljen őket állandóan töltögetni nem jó választás a wifi mert viszonylag energiaigényes (a kapcsolatot felépíteni és adatot küldeni/fogadni összességében pedig jóval tovább tart). Szerencsésebb egy internetre kapcsolt központi egység, ami valamelyik szabadon használható frekvencián dolgozik emellett pl. 315Mhz, és utána már csak egy ilyen adóvevőt kell beépíteni a szenzorokba (adó is elég ha csak küldi a mért értéket). Ezek sokkal energiatakarékosabb megoldások. Természetesen kell vmi protokollt írni a rádiós kommunikációra de ez nem bonyolultabb mint egy hálózati protokoll elkészítése.
(#) csatti2 válasza fecus hozzászólására (») Nov 18, 2015 /
 
Nem kell feltétlenül dobnod. Egy komparátorral (lehet használni az uC beépített komparátorát is), TL431 ref IC-vel, pár ellenállással és egy mosfettel könnyedén készíthetsz olyan áramkört, ami 3V-nál lekapcsol és nem terheli tovább az akkut. A referenciafesz IC (ha csak nincs saját refje az uC-nek) és a mosfet akkor is kell ha uC-vel oldod meg a védelmet. Egyedül arra kell ügyelned, hogy a mérőáramkör is már a mosfet után legyen, hogy ne szívja tovább az akkut, miután lemerült (egy pici kapcsolóval áthidalhatod a mosfet-et, ez funkcionál bekapcsológombként).

Nem ismerek ilyen projektet, de nem azért mert nincs, hanem mert még nem kerestem.
(#) fecus válasza csatti2 hozzászólására (») Nov 18, 2015 /
 
Egy olyan eretnek gondolatom volt, hogy uC-vel figyelem az akkut. 3V-nál bekapcsolom a 230Vos hálózatot és feltöltöm. Aztán kikapcsolom a 230V-ot. Így nincs készenléti fogyasztás. Nincs áramkimaradás csak nagyon szerencsétlen esetben. Amúgy is egy Honeywell 230-as szelepet vezérelne a radiátoron.
De ettől még jó ötlet. Lerajzolom magamnak.

Ebay-on kívül hol lehet jó áron beszerezni Atmel uC-t? a 88V-re vagy 328-asra gondoltam mint központi egység. Az Ebay-on van jó eladótok?
Egy RTC az azt hiszem i2c-s, egy DS1820 az 1wire, Egy UART csak hogy legyen, 2 relé, egy olcsó LCD, és a rádiós adóvevő ami talán SPI.
A télen mehetne rádió nélkül csak helyi termosztátként. Oszt' ha okosabb leszek csatolni kellene a linux szerveren valamilyen okosotthon progihoz. Onnan átadnám annak a szabályzást.
Aztán álmodtam már pince páratartalom mérést, mert egyszer már megindult ott a penész, stb.
A hozzászólás módosítva: Nov 18, 2015
(#) csatti2 válasza fecus hozzászólására (») Nov 18, 2015 /
 
Aliexpressen kaphatók még olcsón. Ha sürgősen kell, akkor pedig tme.eu (itt a viszonylag nagy választék és egész elfogadható ár melett viszont figyelembe kell venni a szállítási költséget).

A 230V-al óvatosan, a radiátoron keresztül odacsaphatsz mindenkinek a házban. Én maradnék tisztán akkus megoldásnál és készítenék egy külön töltőt (labortáp is jó lehet erre a célra), gondolom nem csak egy szelepet akarsz majd vezérelni. Ha ADC-s uC-t használsz, akkor küldhetsz előre jelzést, hogy merül az akku.

Az akku kiválasztásánál vedd figyelembe, hogy a szelep tűjét benyomó mechanika motorja azért komolyabb áramot is felvehet, illetve érzékelni kell a két végállapotot is (ez esetleg megoldható a motoráram figyelésével).
(#) Kovidivi válasza csatti2 hozzászólására (») Nov 19, 2015 /
 
Nekem van hasonló szelepem, az áramfelvétel minimális, mert rengeteg áttétellel van megoldva a szelep benyomása. Jó sok idő kell, mire végigtekeri teljesen azt a pár mm-t. Úgy van megcsinálva, hogy 2 vagy 3 ceruzaelemmel már 1 éve megy. Persze nyáron nincs semmi dolga, mert max-ra van állítva, a kijelzőn mégis megjelenik a beállított hőmérséklet.
(#) csabeszq válasza fecus hozzászólására (») Nov 19, 2015 /
 
Én az Üllői úton az Elektrokonthában szoktam vásárolni. Az Ebay-hez képest 2-3 szoros áron, de nem mindig van kedvem ülni és várni. A 328P-t árulják.

www.elektrokontha.hu
(#) AxaGame válasza fecus hozzászólására (») Nov 19, 2015 /
 
Hali!
Én a Kontel-től szoktam venni. Elég sok cuccot be tudnak hozni 7-10 napos átfutással és nem rossz árban.
Nem is rég hoztak nekem AtMega1284 uP. De rendeltem korábban már 88-ast is.
(#) csatti2 válasza Kovidivi hozzászólására (») Nov 19, 2015 /
 
Nekem is van. 2db ceruzaelemről mennek, kb. 2 évet bír ki az elem. Emellett rádión keresztül kommunikál egy központi egységgel, illetve külön termosztátokkal (MAX eq3 termékcsalád).
Mivel viszonylag ritkán pozicionál ezért nehéz ebből megmondani a pontos áramfelvételét ilyenkor, de azért gondolni kell rá az akku kiválasztásakor (a ceruzaelemeket azért lehet terhelni).
A hozzászólás módosítva: Nov 19, 2015
(#) Hp41C válasza csabeszq hozzászólására (») Nov 19, 2015 /
 
(#) Auf hozzászólása Nov 19, 2015 /
 
Hali!

AVR assembly és c kevert nyelven írtam egy progot avr studio -ban és nem fordul le, mert a portf értéke nagyobb mint 32. Az IO.h -ban van ez definiálva, atmega128 -nál. Eddig c-ben írtam minden ilyen részt, de most muszáj lenne assembly-ben.

Köszi előre is.
(#) zombee válasza Auf hozzászólására (») Nov 19, 2015 /
 
OUT/IN helyett ST/LD kell.
(#) rolandgw válasza Auf hozzászólására (») Nov 19, 2015 /
 
CBI/SBI 0x1F-ig, IN/OUT 0x3F-ig ,e felett STS/LDS.
(#) Csillagnyee válasza Droot hozzászólására (») Nov 19, 2015 /
 
Köszi, itt volt a hiba a deklarációnál!
(#) fecus hozzászólása Nov 19, 2015 /
 
Még sohasem dolgoztam ATMega uC-vel csak Attiny-vel. Ez mit jelent:
"ATmega48A/PA/88A/PA/168A/PA/328/P support a real Read-While-Write Self-Programming mechanism. There is a separate Boot Loader Section, and the SPM instruction can only execute from there. In ATmega 48A/48PA there is no Read-While-Write support and no separate Boot Loader Section. The SPM instruction can execute from the entire Flash"?

Tudom programozni a Studióval, meg az MKII klónnal?
(#) csatti2 válasza fecus hozzászólására (») Nov 19, 2015 /
 
Ennek a bekezdésnek semmi köze az ISP-hez, csupán a bootloader-es önprogramozáshoz.

Így van, tudod vele programozni. Sőt ha a programozód támogatja a debugwire-t, akkor még rendesen debugolhatod is a programodat.
(#) zombee válasza fecus hozzászólására (») Nov 19, 2015 /
 
A dolog lényege hogy a bootloader szekcióban képes az IC "önmagát" írni. Ennek nem sok köze van az ISP-hez és mkII-höz, az ISP programozás lehetősége az ATTiny-hez hasonlóan adott. Először csak azt fogod észrevenni hogy egy ATTiny-hez képest jóval több lábon állsz, elkezdheted a feladatokat a láb képességeihez és elhelyezkedéséhez igazítani(panelterv optimalizálás). És megengedheted azt a luxust hogy a programozólábakra az ISP csatin kívül nem kötsz rá semmit, minimalizálva a programozás alatti hibás működést.
A hozzászólás módosítva: Nov 19, 2015
(#) Auf válasza rolandgw hozzászólására (») Nov 20, 2015 /
 
Köszi!

LDS -el hogy gondoltad?

Itt a kód:
  1. LCD_Read_BusyFlag:
  2.   cbi   DDRE, 7 ; kimenetről bemenetre állítom a "busy flag" lábat 
  3.   sbi   PORTF, 2        ; read mód állítása
  4. ide:   
  5.   sbic  PORTE, 7        ; köv ut átugorja, ha 1 a BF láb
  6.   rjmp ide      ; addig itt vár, amíg nm lesz nula a BF láb
  7.  
  8.   sbi   PORTF, 2        ; visszaállítjuk írás módba
  9.   sbi   DDRE, 7 ; a datalábat visszaállítjuk kimenetnek
  10.   ret

Az 5 és 15 soroknál ír hibát.
(#) rolandgw válasza Auf hozzászólására (») Nov 21, 2015 /
 
  1. lds   r16, PORTF
  2. sbr   r16,4    // cbi esetén cbr vagy ORI,ANDI-t is használhatsz
  3. sts    PORTF,r16

A 3. és 8. sor üti egymást, a 3.-ba cbi kell.Bár nem értem,hogy ehhez miért kell asm.
A hozzászólás módosítva: Nov 21, 2015
(#) rolandgw válasza rolandgw hozzászólására (») Nov 21, 2015 /
 
Szerintem 5. sorban pint kellene olvasnod,nem portot.Gondolom nem HD44780-ról van szó,mert akkor így nem fog működni.
A hozzászólás módosítva: Nov 21, 2015
(#) Vacok hozzászólása Nov 21, 2015 /
 
Sziasztok!

Tudnátok abban segíteni, hogy miért jár pontatlanul egy óra?
Atmega328 AVR-rel építettem egy ébresztőórát. Az óra 32768Hz kvarcról üzemel 2 22pF kondenzátorral van a kvarc két lába testre kötve, ha a panelt leteszem az asztalra, vagy az ujjammal akár megközelítem akár a kvarcot, akár a kondenzátorokat a számlálás lelassul.
(#) csatti2 válasza Vacok hozzászólására (») Nov 21, 2015 /
 
Valószínűleg kisebb kondikat kellett volna beépítened. Pontosabbat a kristály adatlapja ismeretében lehetne számítani, de próbálkozzál inkább 10-12pF körül.
(#) Sick-Bastard válasza Vacok hozzászólására (») Nov 21, 2015 /
 
Szerintem maga a kondi jelenléte a hiba forrása. Úgy tudom, hogy az AVR-eknek az órakvarcokhoz nem kell kondi. Még a 328p-nél sem, mert ilyenkor nem XTAL-ként üzemelnek a lábak, hanem TOSC-ként.
(#) csatti2 válasza Sick-Bastard hozzászólására (») Nov 21, 2015 /
 
Ahhoz képest, hogy nem kell, még egy képletet is megadott a kiszámításához az erről szóló fejezet (8.5).
(#) Kovidivi válasza Sick-Bastard hozzászólására (») Nov 21, 2015 /
 
Én is kondi nélkül használom, Atmega328, Timer2-n órakvarc, és profi pontos. Mondjuk ez kvarctól is függ. Ha kondi nélkül is pontatlan, akkor keresni kell másikat, vagy szoftverből kell kalibrálni.
A hozzászólás módosítva: Nov 21, 2015
(#) Ivan93 hozzászólása Nov 22, 2015 /
 
Sziasztok!
A mellékelt kódban erre:
  1. temperature=-46.86+175.72*data/65536;
és erre:
  1. humidity=data*(125/65536)-6;
a sorra egy számomra értelmezhetetlen hibát ad:
  1. c:/program files/winavr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr5\libc.a(log.o): In function `log': (.text.fplib+0x46): relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in c:/program files/winavr/bin/../lib/gcc/avr/4.3.2/avr5\libgcc.a(_addsub_sf.o)
ebből több/kevesebb van attól függően, hogy kikommentezem e a két sor valamelyikét. A hiba helyét sem jelölte meg az error, de szűkítések után ez a két sor okozza. Ha kiveszem a hőmérséklet és páratartalom mérést, vagy a légnyomásmérést akkor sincs semmilyen hiba.
Minden ötletet szívesen fogadok, a segítséget előre is köszönöm!
Iván
A hozzászólás módosítva: Nov 22, 2015

main.c
    
Következő: »»   705 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem