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   209 / 841
(#) (Felhasználó 4577) válasza adamtui_93 hozzászólására (») Ápr 12, 2010 /
 
Most írtam, hogy figyelj oda a nem létező helyesírásodra és használd a kód gombot.

  1. if ( ( PINA & (0b01110000) ) && ( PINC & (0b00000110) ) )
(#) adamtui_93 hozzászólása Ápr 12, 2010 /
 
á köszönöm hogy szóltál előszőr nem értettem mire gondoltál a kód gombal kapcsolatban de most már világos

  1. if ( ( PINA & (0b01110000) ) && ( PINC & (0b00000110) ) )

de ezzel sem jó itt is ha egyik igaz akkor már világít
(#) (Felhasználó 4577) válasza adamtui_93 hozzászólására (») Ápr 12, 2010 /
 
Szuper, akkor már csak azt kell megértened, hogy van egy válasz gomb, amit ha használsz átláthatóbb a fórum, minden hozzászólás jobb felső sarkában található.
A helyesírásra meg azért érdemes odafigyelni, mert esetleg nem reagálnak a kérdésedre, vagy egyszercsak megunják, hogy kétszer-háromszor kell elolvasni a hozzászólásod, mire rájön az ember, hogy mit akarsz.

Én így használom és működik:
  1. if( (!(PINC & (1<<PC3))) && (PINC & (1<<PC4))
(#) adamtui_93 válasza (Felhasználó 4577) hozzászólására (») Ápr 12, 2010 /
 
Hali
  1. if (PINA & (0b10000000))

itt ha PINA7 1 akkor igaz de azt hogy tudnám megoldani ha PINA7 1 de valamelyik másik is 1 akkor már hamis legyen ?
pl:
  1. if (PINA & (0b11000000)) vagy if (PINA & (0b10100000)) stb..
(#) boomerang hozzászólása Ápr 13, 2010 /
 
Sziasztok !

ATmega 8-as vezérlővel építenék egyszerű kis áramköröket. A RESET lábat 0-ra húzva (leföldelve ahogy értelmezem) ugye újraindul a kontroller. Szükséges ellenállás ? Vagy simán egy nyomógomb és föld ?

Köszi
(#) puli122 válasza boomerang hozzászólására (») Ápr 13, 2010 /
 
Simán egy nyomógomb a föld felé.
(#) c4h10 hozzászólása Ápr 13, 2010 /
 
Sziasztok egy olyan kapcsolást szeretnék csinálni ATTINY45 segítségével amin egy forgókapcsoló segítségével be lehet állítani 0,5; 1; 1,5; 2; 2,5 ;3 ;3,5; 4; 5; 6; 7;8 másodpercenként ad egy impulzust ami egy 4017-es IC segítségével reléket vezérel. Az egész kapcsolás egy külső jel hatására induljon el és az utolsó relé pedig kapcsolja ki. Nem tudom hogy ez megvalósítható-e? Ja és valaki nem tudná nekem felprogramozni az AVR-t (természetesen NEM ingyen) mer nem nagyon értek hozzá. Csak azért döntöttem az AVR mellet mert szeríntem egyszerűbben megvalósítható az elképzelésem és van itthon 5db ATTINY45-ös proceszorom. Válaszaitokat előre is köszönöm :worship:
(#) Barbár válasza c4h10 hozzászólására (») Ápr 13, 2010 /
 
Hali!

Előszöis mivel az ATTiny45-nek nincs annyi lába ahány kölönböző időintervallumot szeretnél ezért inkább a forgókacsoló helyett egypotmátert javasolnék ami feszültség osztóként lenne beköve és így az AVR-rel ADC-n tudnál feszültséget mérni, és gyakorlatilag így a poti csavargatásával "1024 db különböző értéket tudnál közölni az AVRrel..."

Üdv!


Barbár
(#) Ideiglenes válasza Barbár hozzászólására (») Ápr 13, 2010 /
 
Vagy mondjuk 12 db ellenállásból egy létrát össze lehetne állítani és a kapcsoló választaná ki, hogy a létra melyik pontja menjen az analóg bemenetre. De a potával mindenképpen egyszerűbb lenne.
(#) c4h10 válasza Ideiglenes hozzászólására (») Ápr 13, 2010 /
 
Aha értem akkor egy potis változatról tudtok nekem egy rajzot csinálni az AVR-es részéről. Ami min 0,5 másodperctől kb 10 másodpercig tud impulzust szolgáltatni és egy 7szegmenses led kijelzőn jelzi a beállított értéket egy tizedes pontossággal. Ha esetleg ez túl sok egy attiny45-nek akkor másik AVR is jó lesz.
Üdv.: c4h10
(#) puli122 válasza c4h10 hozzászólására (») Ápr 13, 2010 /
 
Hát szerintem azt ne várd senkitől hogy a kész cuccot megcsinálja helyetted. Az úgy oké hogy ötleteket kérsz a megvalósításhoz, vagy ha elakadsz, de szerintem senki nem fog vele dolgozni helyetted. És egész jó kis projekt hogy beletanulj a mikrovezérlők világába. Amit csinálj szerintem:
Alap avr programozó építése (semmi extra max 5 alkatrész)
Bascom vagy Avrstudió föltevése
Mintaprogramok tanulmányozása, egy kis programozással való ismerkedés.
A poti beolvasása + a hozzá való időzítés kiküldése egy 10 soros progi, azt megérted gyorsan.
Aztán jöhet a kijelzés, kicsit húzósabb de nem akkora kaland. Ha elkezded egy kapcsrajzot összedobok ha akarod.
(#) (Felhasználó 4577) válasza puli122 hozzászólására (») Ápr 13, 2010 /
 
Idézet:
„Hát szerintem azt ne várd senkitől hogy a kész cuccot megcsinálja helyetted. Az úgy oké hogy ötleteket kérsz a megvalósításhoz, vagy ha elakadsz, de szerintem senki nem fog vele dolgozni helyetted.”

Pontosan így van, ahogy mondod, nem akartam leírni, mert mindig csak ugyan azt hajkurásznám, pár oldallal visszább ugyan ezt leírtam egy másik kérésre.

Ha még nem foglalkoztál az AVR-ekkel, akkor nem ilyennel kell kezdeni. Inkább LED villogtatással kezd, aztán Timer + LED villogtatás, aztán PWM LED vezérlés, ADC-PWM LED vezérlés, ha ezek már mennek, akkor jöhet amit szeretnél.

Egyébként én máshogy oldanám meg. Bekötnék egy nyomógombot és azzal oldanám meg az idők változtatását, esetleg egy multiplexel vezérelt két digites kijelzőn kiíratnám, hogy éppen hány másodpercenként adja a jeleket.

Egyébként akár egy 555-el is meg lehet csinálni. Bővebben: LinkBővebben: Link
(#) Suncorgo hozzászólása Ápr 16, 2010 /
 
Sziasztok!

Építek egy 4 csatornás hőmérőt ami 7 szegmenses kijelzőkre írja ki a c°-ot és a hőmérsékletet egy AVR ADC-jével olvasom be egy LM35-ösről.

A programot Cpp-ben írom és nem tudom hogyan lehet egy változót, amiben van egy egész szám, történetesen legyen a 192-es.

Szóval:

int buff1 = 192;

A kérdés pedig az lenne hogy, hogyan lehetne ezt az értéket számjegyeire bontani? pl:

int buff1_egyes = valami;
int buff1_tizes = valami;
int buff1_százas = valami;

a végeredmény pedig ez legyen:

buff1_egyes : 2
buff1_tizes : 9
buff1_százas: 1

Remélem érthetően elmagyaráztam

A válaszokat előre is nagyon nagyon szépen köszönöm!!!
(#) (Felhasználó 4577) válasza Suncorgo hozzászólására (») Ápr 16, 2010 /
 
Modulo-val:
  1. szam = A Te szamod;
  2. elso = szam%10
  3. szam/=10;
  4. masodik = szam%10;
  5. szam/=10;
  6. harmadik = szam;
(#) Sir-Nyeteg válasza Suncorgo hozzászólására (») Ápr 16, 2010 /
 
Leírva:
Nézz utána a "modulo"-nak.
11 modulo 10 = 1
22 modulo 5 =2
Osztás utáni maradék. Modulo: %
(#) vbalint válasza (Felhasználó 4577) hozzászólására (») Ápr 17, 2010 / 1
 
Sziasztok!

Én az osztás helyett inkább bináris -> BCD átalakítást javasolnám. Az osztás elég időigényes munka, erre a feladatra sokkal hatékonyabb algoritmus is van, Bővebben: Link, vagy Link.
Ez csak néhány művelet, míg az osztások szerintem simán tartanak 10x tovább... Üdv: Bálint
(#) Suncorgo hozzászólása Ápr 17, 2010 /
 
Köszönöm a segítséget! Maradékos osztással csináltam meg Példa:

while(1)
{
ADC1=ReadADC1();
buff1 = ADC1*2.56;
buff2 = buff1/100;
buff2m = buff1%100;
buff3 = buff2m/10;
buff3m = buff2m%10;
}

ui: Tudom hogy van válasz gomb de többen segítettetek és nem tudtam kinek válaszoljak
(#) vzoole válasza Suncorgo hozzászólására (») Ápr 17, 2010 /
 
Ha egy függvényt akarsz meghívni egy számmal, de számjegyekre bontav...
ez is egy megoldás (lényegége ugyanaz)

  1. Függvény(változó/100, változó%100/10, változó%100%10);
(#) boomerang hozzászólása Ápr 17, 2010 /
 
Sziasztok !

Egy Atmega 8-as procit csak nagyon titkán és nehezen, vagy egyáltalán nem tudok felprogramozni. Programers Notepad-ot használok, a kontrollerre felölti, vissza is olvassa de valamit mindig hibázik, és végeredményben nem működik a dolog. A programozó egy maszek' stk-200-as, hagyományos nyomtató portos. Mi lehet a gond ? (lábak jól van bekötve) Köszi
(#) (Felhasználó 4577) válasza boomerang hozzászólására (») Ápr 17, 2010 /
 
Én kontakt hibára tippelek, de az is lehet, hogy a programozód a hibás. Ha jobban akarsz foglalkozni az AVR-ekkel, akkor ajánlom az AVRISPmkII-t.
(#) boomerang válasza (Felhasználó 4577) hozzászólására (») Ápr 17, 2010 /
 
Az eszközbe amit csináltam, 0 Ohm-os ellenállást tettem be átkötés helyett, 2 programozó láb is így van megoldva. Ez kihathat a programozásra ?
(#) Sir-Nyeteg válasza boomerang hozzászólására (») Ápr 17, 2010 /
 
Nem! Esetleg túl hosszú vezeték, vagy rossz proci? Másikkal is ezt csinálja?
(#) boomerang válasza Sir-Nyeteg hozzászólására (») Ápr 18, 2010 /
 
A panelen a programozó "erek" kb. 4-5 centi hosszan futnak a prociig. Másikkal nem tudom kiprobálni, csak egy AVR-t vettem.
(#) boomerang válasza Sir-Nyeteg hozzászólására (») Ápr 18, 2010 /
 
És a programozó kábel 35 centi hosszú
(#) (Felhasználó 4577) válasza boomerang hozzászólására (») Ápr 18, 2010 /
 
Az LPT-re gondolsz?
(#) boomerang válasza (Felhasználó 4577) hozzászólására (») Ápr 18, 2010 /
 
Igen.
(#) (Felhasználó 4577) válasza boomerang hozzászólására (») Ápr 18, 2010 /
 
És megnézted már, hogy van-e kontakt hiba?
(#) boomerang válasza (Felhasználó 4577) hozzászólására (») Ápr 18, 2010 /
 
Igen, leellenőriztem. A programozóba 100 Ohm-os ellenállást raktam, szerintem ezzel sem lehet gond.
Teljesen véletlenszerűen egyszer feprogramozza, másszor meg nem.
(#) (Felhasználó 4577) válasza boomerang hozzászólására (») Ápr 18, 2010 /
 
Akkor meg programozó hiba. Vegyél egyet, vagy csinálj másikat.
(#) Ideiglenes válasza vbalint hozzászólására (») Ápr 18, 2010 /
 
Utánanéztem ennek a BCD átalakításnak. Remek! Köszi az ötletet.
Következő: »»   209 / 841
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