Fórum témák
» Több friss téma |
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
Most már tud a gépem rendesen kommunikálni az AVR - el.
Átállítottam INT.OSC - ra, beprogramozom, minden OK. Ha visszaolvasom a programot, megint EXT.Crystalt ír ki. Ez normális ![]()
Nem.
Fusebiteknél jobbra a Write Fs-re rányomtál ?
Igen most megnyomtam a WRITE FS gombot, most már megváltoztatta a fuse biteket. :yes:
De valahogyan még mindig nem akar elindulni az AVR Valamelyik portd - re kötötem voltmérőt, folyamatosan 0 - at mutat
PIC után most elkezdtem foglalkozni az AVR-ekkel.
Van egy ATmega128L mikrokontrollerem. Az adatlap azt írja, hogy az összes porton van belső felhúzó ellenállás. A C portra akartam volna a felhúzást megcsinálni. Az adatlapból az derül ki, hogyha a DDR-t 0-ra állítom, akkor az bemenet (fordítva, mint a PIC esetében). Ha ezek után a PINC regisztert 1-be állítom és az SFIOR,PUD regiszter 0-ban van, akkor bekapcsolom a felhúzást. Na most ez nekem sehogy sem akar működni. Folyamatosan 0 V-van a bemeneteken a PORTC. Az AVR-es adatlapok siralmasan rosszabbul olvasható, mint a PIC-es, így lehet valami elkerülte a figyelmemet.
Szerintem a PORTC regiszterbe kellene 1-et tenned, hogy a felhuzast bekapcsold, nem a PINC-t...
Idezet az adatlapbol: Idézet: „If PORTxn is written logic one when the pin is configured as an input pin, the pull-up resistor is activated. To switch the pull-up resistor off, PORTxn has to be written logic zero or the pin has to be configured as an output pin. The port pins are tri-stated when a Reset condition becomes active, even if no clocks are running.”
Én is ugyan ezt olvastam, csak fogalmam sincs, hogy miért írtam PINC-t.
Természetesen működik ![]() Köszi. Figyelmetlen voltam.
Üdv mindenkinek!
Készítettem egy egyszerű bekötést ATmega8 - al. Egy LED dióda van bekötve valamelyik portra (kép) aminek villognia kéne, de valahogyan nem teszi ezt. Belső oszcillátort használok, ezt remélem jól állítottam be a fuse bitekben (kép). Kommunikáció az AVR és a PC között működik, az AVR is működőképes. Szerintetek mi lehet a gond? ![]() Idézet: „valamelyik portra” ![]() De arra a portra amit vezérelsz ? Fuse bitek jók !
Lenne egy nagyon amatőr kérdés:
Ha van egy sok fájból álló forráskód, abból hogyan lehet egy hex fájlt csinálni avr be való beégetéshez. A chip több funkciót is tud, meg usb illesztő is van rajta, ezért van (gondolom) ennyi fájl- Az eredeti fájlnévben található elnevezéseket akarom csak módosítani, hogy ne olyan néven jelenjen meg az eszközkezelőben, ahogy eredetileg. A fórráskódokat tartalmazó fájlokban megtaláltam hol kell átírni, de nem tudom hogy lehet "vissza"alakíani hexbe, hogy be lehessen tölteni a prociba.
Szervusz,
gyakorlati oldaláról megközelítve a kérdést így megoldhatod, elméleti oldalról megközelítve a kérdést -amennyiben érdekel- azt javasolnám, hogy nézz utána a programozás alapjainak.
Hali
Az lenne a kérdésem hogy bascom alatt atmega 32 chipet milyen néven találom?
ATMega 32 vagy Mega32.
$chip="m32def.dat"
hali kiprobáltam azzal de azzal sem ment stk 500am van avr studió alól müködik minden de igy meg sem mucan
Hali sikerült beálitani de rájöttem hogy a C-t valamelyest jobban értem és inkább egyenlöre annál maradok de van egy olyan problémám hogy valaki létszives szemléltese egy példaprogramon keresztül hogy ha pl PIN0 lábon lévö gombot megnyomom akkor a PORTB 1 es lábon a led világitson de csak addig mig nyomom és ha nem nagy kérés akkor egy olyat is ami meg ha már nem nyomom utánna is világit.
bascomban:
portd.0 -> gomb portb.1 -> led
amikor nyomod világít szerk: ha ezt kitörlöd megkapod a másik variációt is
Köszönöm a válaszod erre gondoltam csak nem bascomban mint már elöbb irtam "rájöttem hogy a C-t valamelyest jobban értem és inkább egyenlöre annál maradok" de mind 1 köszi a segitséget de ha megtudná valaki irni C ben annak még jobban örülnék
A logikajat csak megerted, es ez alapjan mar nyilvan nem gond megirni a programot C-ben...
a logikáját értem csak azt nem hogy hogyan "hivom" be hogy megvizsgálja a PINCt ( szoval lényegében azt nem mit irjak az if után )
u.i.:épp azért kértem hogy mintaprogramon keresztül mutasa meg valaki hogy megértsem
Pl.: PINC 5 megvizsgálása:
Ekkor azt vizsgálod, hogy magas szinten van-e. Ezt beleteszed egy IF-be feltételnek, végrehajtani meg azt, hogy tegye magas szintre a lábat, amire a LED-et kötöd, különben alacsony szintre. Személy szerint nem szeretem ezeket az "írj meg egy programot..."-al kezdődő mondatokat. Írd meg Te, és ha elakadsz szívesen segítünk. Ha mindent megcsinálnak helyetted, sose fogod megtanulni, mindenki így kezdte, az ember a saját bőrén tanul a legjobban. Tehát kezdd el és amikor elakadsz írsz a fórumba és segítünk. Kezdő lökésnek annyit, hogy megadtam a port figyelést, port szint állítást a PORTx (x helyére a port betűjele), 0 alacsony, 1 magas szint, port ki/bemenet konfigurálás DDRx, 0 be, 1ki, és WinAVR-be ne felejtsd el beállítani, hogy milyen AVR-el dolgozol és hány MHz-en fut, a Fuse bitek pedig jók a gyári beállítással is. Egyébként ezek nagyrésze benne van az adatlapban, érdemes először azt olvasgatni, működését, memóriák, órajelforrás, tápfeszültség, stb.
Kezdőknek én a Bascom-ot ajánlom.
A C nyelv logikaja bonyolultabb, a chip belsejet regiszter szinten kell sokszor ismerni. ezt a Bascom eldugja eloled.... (ha nem akarod, nem kell megismerni) Idézet: „A C nyelv logikaja bonyolultabb, a chip belsejet regiszter szinten kell sokszor ismerni. ezt a Bascom eldugja eloled.... (ha nem akarod, nem kell megismerni)” Ebben igazad van. Viszont nem nagy dolog megtanulni, megérteni, és csak egyszer kell megérteni.
Olvasd el szerintem a Nyolc labbal c. cikk sorozatot, hogy kapj egy kis alapot. Menj a Kapcsolasok / AVR -re es ott megtalalod a cikket...
Üdv Mindenkinek!
Segítségeteket szeretném kérni. Két AVR-t szeretnék felprogramozni az egyikhez van forráskód a másikhoz pedig megvan a hex-file csak nem tudom a fuse bitek beállítását. Segítséget előre is köszönöm.
hali már a kimeneti beállitások mennek, kissebb programokat is irtam már, mint irtad ne egy kész programot várjak ez igaz ez a programomnak egy része de ezt nem értettem belöle.
am köszi a segitséget
Én is keresgettem a hétvégén drivereket, és én is ezt fogom megpróbálni, de lenne egy kérdésem:
Ez a driver is (mint a legtöbb amit neten találtam) HD44780 kompatibilis LCD-hez való. Viszont nézegettem a HE store -ban LCD kijelzőket (16x1 -es, vagy 16x2 -es kellene (inkább az utóbbi)), de nem tudom, hogy melyik "HD - kompatibilis" és melyik nem. Ennek, hogy lehetne utánajárni? Előre is köszi a segítséget! Üdv! András
Ha egy meghatározott feladatról van szó, nem kötelező a HD44780 kompatibilitás. Adatlapot átnézed, és választasz egy olyat ami neked szimpatikus. Egyébként elsőre úgy látom, hogy még a COG-ok is "kényszeríthetőek" a HD44780-ra (bár ezt tüzetesebben meg kellene nézni), de azoknak van SPI interfésze is, én inkább azt használnám. Tegnap volt egy kis időm, ezt a drivert is át kell írni (legalábbis én úgy látom). Innentől kezdve mindegy mit írsz meg.
Nagyjából értem, csak az a baj, h én nem tudok és nem is akarok semmilyen drivert átírni.
Akarok egy 16x2-es kijelzőt venni amivel működik az említett driver, csak az a baj, hogy nem tudom h a HEstoreban melyik kijelző ilyen, és azt sem tudom, hogy ezt hol lehetne megnézni... Ebben tudna valaki segíteni?
int main(void) {
DDRB = (0b00000111); while(1) if ( PINA & (0b01110000)) if ( PINC & (0b00000110)) KEK_KI; else KEK_BE; return 0; } csináltam egy probapanelt kisérletezésere. De azt hogy birom megcsinálni hogy a akkor világitson a led amikor PINA-ra és a PINC-re is igaz mert igy azt csinálja hogy ha PINC nem igaz és PINA igaz akkor világit de minden más esetben nem világit
Használd a kód gombot és jobban figyelj oda a helyesírásodra.
A nyomógombot a test és a PB0 közé kösd, a LED-et egy 470 Ohm-os ellenálláson keresztül a PB1-re, az AVR-t 5V-ról tápláld. Az AVR Studio lehet, hogy nem fog örülni az ékezetes kommenteknek.
Hali nem azzal van a gondom hogy nem világit mert világit csak az a baj hogy olyat szeretnék hogy csak akkor világitson ha PINA és PINC is igaz mert ha két & jelet teszek közé akkor
if ( PINA & (0b01110000) && PINC & (0b00000110)) ha PINA igaz akkor világit ha PINB igaz akkor is világit de csak akkor kéne ha világítana ha mind a kettő igaz |
Bejelentkezés
Hirdetés |