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   453 / 840
(#) Ricsi89 hozzászólása Jún 30, 2012 /
 
Sebességmérésre használnék egy Atmega8L procit. Belső órajelről mennyire lenne stabil? Vagyis elég stabil a belső órajel ahhoz, hogy időt mérjek a procival?
(#) TavIR-AVR válasza Ricsi89 hozzászólására (») Jún 30, 2012 /
 
Milyen pontosságot vársz el?
A belső 8 MHz+/- 5% alapban, de -50/+100% hangolható.
És persze van hőfokfüggése is...
(#) Ricsi89 válasza TavIR-AVR hozzászólására (») Jún 30, 2012 /
 
Annyira nagyon pontos úgysem lesz, csak az a kérdés, hogy mennyire hőfokfüggő a belső oszcillátora.
(#) Ricsi89 hozzászólása Jún 30, 2012 /
 
Újabb érdekesség. Fordítanám le a kódot és ezt írja:
Idézet:
„avr-objcopy: 'boardcomp.elf': No such file”

Eddig ilyet még nem írt. Igaz elég rég foglalkoztam már avr-el, meg azóta volt egy újra telepítés is a gépemen. Mi lehet a gond?
(#) zombee válasza Ricsi89 hozzászólására (») Júl 1, 2012 /
 
1: WinAVR, vagy AVR Toolchain fel van telepítve? Utóbbi az AVR Studio 4.19-el is települ.
2: Az elérési útban van szóköz? Azt tudom hogy WinAVR-nél gondot okoz(pl. Documents and Settings)
3: Projekt beállítás megfelelő? Pl. elérési utak?
(#) Ricsi89 válasza zombee hozzászólására (») Júl 1, 2012 /
 
Valami a makefile-al volt, hiányzott belőle a target sor után a "CC = avr-gcc" sor egyenlőség utáni része. Betettem, belinkeltem neki külön a makefile-t és jó lett.
Ha már írok, akkor lenne még egy kérdésem. Atmega8-ba hogyan lehetne bootloadert tölteni, hogy azután soros porton keresztül tudjam feltölteni a szoftvert? Így is érdekes lesz feltölteni a szoftvert, mivel az avr studio nem ismeri fel a dopert.
(#) zombee válasza Ricsi89 hozzászólására (») Júl 1, 2012 /
 
A bootloader általában AVR910-et "emulál", amit tudtommal az AVR Studio 5 már nem támogat.
A 4-essel meg elmegy a Doper is...
(#) sikolymester válasza Ricsi89 hozzászólására (») Júl 1, 2012 /
 
Itt van egy stk500 kompatibilis bootloader: Bővebben: Link

Ha jól emlékszem, akkor atmega8-cal is működik.
(#) Ricsi89 válasza zombee hozzászólására (») Júl 1, 2012 /
 
A gondom az, hogy az avr studio nem ismeri fel a doperemet. 4.19-es studio és nem látja a dopert. Találtam egy bootloadert, nem tudom, hogy ez mennyire lenne jó. Bővebben: Link
(#) sikolymester válasza Ricsi89 hozzászólására (») Júl 1, 2012 /
 
Itt van egy stk500 kompatibilis bootloader: Bővebben: Link

Ha jól emlékszem, akkor atmega8-cal is működik.
(#) zombee válasza Ricsi89 hozzászólására (») Júl 1, 2012 /
 
A baj nem az AVR Studio-val van. Lehet a Doper is hibás, de inkább a driver nem lett megfelelően telepítve.
A drivere nincs aláírva, ez okozhat gondokat win7 esetében...
(#) Ricsi89 válasza zombee hozzászólására (») Júl 1, 2012 /
 
Nemrég kérdeztem itt, hogy mi lehet a gond, akkor sem jöttünk rá, minden újra lett telepítve, driver is, több forrásból is, többféle driver, egyikkel sem lett jó. Meg azért is lenne jó ez a bootloader, mert nem kellene kivezetni a programozáshoz szükséges lábakat, elég lenne csak a soros port hozzá és kész. Ez egy bedobozolt, kibonthatatlan helyen lévő eszköznél előny, mert a soros porthoz elég egy jack aljzat egy elérhető helyen és kész a kommunikáció, lehet szoftvert frissíteni.
(#) karika200 hozzászólása Júl 1, 2012 /
 
Sziasztok!

Régóta használok egy dallas IC-s hőmérőt soros portra illesztve, ami grafikonokat készített eddig a webre. Szeretném kicsit tovább vinni a dolgot, hogy ne kelljen hozzá PC. Arra gondoltam, hogy a feladatot egy AVR-el és egy Arduino Ethernet Boardal oldanám meg. Ezzel az Arduino-s megoldással kapcsolatban viszont lenne pár kérdésem.

1, Ha jól veszem ki, akkor i2c kommunikáció megoldható a board és a mikrokontroller közt, ami olvasná folyamatosan a hőmérséklet adatokat. Ha valaki foglalkozott már gyakorlatban is a szóban forgó megoldással és van forráskódja amit publikálna, szívesen venném.
2, Egy alapvető HTTP kliensen gondolkodok, ami 5 percenként meghívna egy URL-t és POST-al átadná a mért adatokat. Ehhez gyakorlatilag elég "csak" egy IP stack TCP felett. Gyakorlatilag pedig akkor még nem beszéltünk a névfeloldásról(UDP) de ettől azt hiszem el is tekinthetünk egyelőre. Ehhez akkor gondolom van egy C library amit szintén be kell linkelnem a programomba, tehát valami nagyobbacska AVR-ben kell gondolkodni.

Egyelőre csak felmérem a terepet, komolyan nem néztem utána a dolgoknak. Erős a dilemmám, hogy egy Raspberry Pi vagy egy mikrokontrolleres megoldás lenne-e nekem a legjobb. Jelenlegi információim alapján utóbbi felé hajlok, a sok új dolog tanulása miatt és talán gazdaságosabb rövid és hosszú távon is.
(#) TavIR-AVR válasza karika200 hozzászólására (») Júl 1, 2012 /
 
Mit szeretnél pontosan?
Simán tudja az AVR.

Ethernet:
Wiznet?
ENC28J60?

A dallas chip 1-Wire buszos!
A névfeloldás a DNS

Arduino alatt rengeteg minden készen van.
RasPI-re linux + OWFS.

Tipp ENC/Wiznet modullal
(#) Ricsi89 válasza Ricsi89 hozzászólására (») Júl 1, 2012 /
 
A fura az egészben, hogy a doper tökéletesen működik avrdude alatt. Most programoztam vele, mivel studio alól nem ment, így ezzel próbáltam és tökéletesen olvas, ír.
(#) zombee válasza Ricsi89 hozzászólására (») Júl 1, 2012 /
 
Nekem volt egy olyan telepítésem hogy az stk500 plugin nem jelent meg a menüsorban.
Szóval egy AVR Studio újratelepítés javasolt. Nem kell törölni semmit, csak a telepítőt újra lefuttatni.
(#) Ricsi89 válasza zombee hozzászólására (») Júl 1, 2012 /
 
Újratelepítettem az avr studio-t és most már jó.
(#) zombee válasza Ricsi89 hozzászólására (») Júl 1, 2012 /
 
Nagyon szívesen! Sejtettem hogy valahol azzal lehetett gond...
(#) sikolymester válasza karika200 hozzászólására (») Júl 1, 2012 /
 
Az IP stack a TCP alatt van. A névfeloldás nem UDP, hanem DNS. Az Arduinoval az i2c kommunikáció egyszerű, mint az egyszer egy. Szerintem lesz is hozzá neten rengeteg példa. De az arduino kezelése tényleg pofon egyszerű.

Én a helyedben inkább a TCP/IP rész miatt aggódnék, és nem csak azért, mert látszik, hogy homályos számodra. A raspberry pi egy remek dolog, de ha linuxot még csak android telefonban láttál, akkor eltanácsollak tőle.

Az, hogy milyen AVR-t válassz azt nagyban befolyásolja, hogy milyen arduinok vannak, persze feltételezve, hogy egyáltalán arduinozni akarsz.
(#) Ricsi89 válasza zombee hozzászólására (») Júl 1, 2012 /
 
Akkor kezdett nekem is a gyanúm a studio-ra terelődni, amikor avrdude-al ment a doper. Ha egyikkel megy, akkor csak nem driver probléma. Csak fura, hogy ezelőtt is ugyanígy volt feltelepítve és nem ment. A lényeg, hogy jó lett.
Közben feltelepítettem az AVR Toolchain-t is és megoldódott a fordítás probléma is.
(#) molnarp hozzászólása Júl 2, 2012 /
 
Üdv!
Egy Willem GQ-3X programozóval kellene egy Atmega162-n beállítani a fuse biteket de itt nincs olyan, hogy "BootLock11, BootLock12, Lock1 és Lock2, mint a Ponyprognál. Vagy csak máshogy hívják...
Hogy is van ez?
(#) karika200 válasza sikolymester hozzászólására (») Júl 2, 2012 /
 
Sziasztok!

Igen, bocs, rosszul írtam, tehát TCP, IP felett. A névfeloldás valóban a DNS, de az ugye nem TCP-n hanem UDP-n megy, erre próbáltam utalni. De ha jól veszem ki, ezzel sem lesz gond az arduinoval. Linuxot/BSD pedig nem androidon láttam először, van "egy-két" szerver a kezem alatt, mivel ezzel foglalkozom

Leírom akkor pontosan, amire irányult a kérdésem. Tehát nem szeretnék tökre az alapoktól indulni. Nem szeretném az IPv4-et (sem a 6-ot) lefejleszteni mikrokontrolleres környezetre... Ahogy a fentiek alapján elképzelem most a lehetőségeket, - ahogy akár Windowson/*nix-on is - nyitok egy TCP socketet és kommunikálok rajta.

Köszönöm a tippeket és a linket TavIR-AVR-nek!
(#) TavIR-AVR válasza karika200 hozzászólására (») Júl 2, 2012 /
 
A TCP/UDP kezelése e lehető legegyszerűbb a WizNet W5100 chipcsaláddal.
Kezelése:
- Mi a TE IP-d, MAC-od
- Milyen csomagot kérsz(UDP/TCP)
- melyik porton
- mi a gateway/router száma
- mi a csomag?

Küldés

Semmit nem kell NEKD megcsinálni. Az alsó 3 OSI réteget HW-ből tudja

Az ENC-re meg meg van írva.

Arduinoban minden kész, bascom alatt szintén (most a Wiznet pl. 4-5 sor lett a 2.0.7.5-s verzióban )
(#) Ricsi89 hozzászólása Júl 2, 2012 /
 
Sziasztok!
A sebességmérővel kapcsolatban, amit pár napja tárgyaltunk. Kész lett a prototípus, mágnes huzogatva a hall szenzor előtt mér is, viszont az utolsó mért adat a kijelzőn marad mindig. A számolás és kiíratás itt történik:
  1. while(1){
  2.  
  3. szam = ((kerekmeret * orajel) / Time)*18/10000; //orajel=125000 kerek=1330mm     km/h
  4. szamok();
  5. _delay_ms(500);
  6. }

A Time lenne az a változó, amit visszakapok a timer értékét, a két jel között eltelt idő. Ha itt a while ciklusban a végére beírom a Time=0;-t, akkor semmit nem mér, mindig 0 lesz a kijelzett érték. Mit lehetne tenni, hogy nullázza az értéket, ha nem kap jelet?
(#) zombee válasza Ricsi89 hozzászólására (») Júl 2, 2012 /
 
Mert itt a szenzorod "triggereli" a mérést, ha nincs triggerjel akkor a végtelenségig vár a következőre,
addig a pontig csak az előzőt tudja mutatni! Kell egy "timeout" amin túl nullát mutathat a műszer...

A Te esetedben indítanod kell egy másik időzítőt, és minden impulzusnál újraindítani(TCNT0=0)
Ha CTC módba állítod, akkor csak azt kell megadnod neki hogy mi legyen ez a timeout(pl. OCR0(A)).
(#) Ricsi89 válasza zombee hozzászólására (») Júl 2, 2012 /
 
Vagy esetleg ha a timer overflow-t nézem. Ha túlcsordul a timer, akkor nincs jel és lehet nullázni.Egyébként kipróbáltam élesben és csak bezavar itt is a motor gyújtása. Érzékelő árnyékolt kábelen megy, valami mégis bezavarja. Ahogy beindul a motor, máris 5-6-ot mutat az óra, előtte pedig 0 volt. Hogyan lehetne a bementet szűrni?
Esetleg ez segíthet? Most találtam Atmega8 timer1-nél. "Input Capture Noise Canceler" Ez elvileg egy beépített szűrő lenne.
(#) zombee válasza Ricsi89 hozzászólására (») Júl 2, 2012 /
 
ICNC - egyfajta szűrő az 1-2 órajelnyi zajok kiszűrésére, de csodákat ne várj tőle. Az AVR ICP1 lábára
egy ~220Ohm felhúzó ellenállás nem árt. Nagy bemenő impedancia mellett a vezeték mindent összeszed.
(#) Ricsi89 válasza zombee hozzászólására (») Júl 2, 2012 /
 
Nyitott kollektoros a hall elem kimenete, így 1kOhm-al van tápra húzva, bár igaz, hogy len a szenzornál. Megpróbálok a procinál is betenni egy felhúzó ellenállást.
(#) zombee válasza Ricsi89 hozzászólására (») Júl 2, 2012 /
 
A procinál is tegyél, de sztem az 1k is túl nagy. A Csapj a falra! játékomba pl. a 4 méteres vezetékek miatt
már 100Ohm kellett hogy a felvillanó LED-ek miatt ne rúgjon vissza a nyomógomboknál.
(#) Ricsi89 válasza zombee hozzászólására (») Júl 2, 2012 /
 
Holnap megpróbálom 100Ohm-al akkor. Az 1k nem vált be.
Következő: »»   453 / 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