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
Nem is értem, miért nem PLCC tokkal készítik, abból VISZONYLAG olcsó a foglalat, ugyanúgy miniatűr SMD lehet a cucc, és az sem utolsó hogy cserélhető...
Egyébként én tűket szúrok a lábakba, úgy programozok, legalábbis azokat a rendszereket amelyeket nem én készítettem. Ha arra vetemednék hogy SMD-ből építsek rendszert, akkor úgy fogom megoldani hogy a programozó lábakat kivezetem a panel szélére 6 darab lyuknélküli PAD-hez, amire ráforraszthatom a programozó vezetékeket, vagy késes csatlakozót alakítok ki(mint a régi floppy meghajtókon) és rátolom a csatlakozót...
Biztos felreertem az arakat,...
dip - tqfp atalakito
Nem... Ez még csak nem is egy elvetemült ár... A Farnellnél van foglalat is, csak sajnos a legkisebb is 44 lábú. Az csak 60 euró, de még forrasztgathatod.
De miért nem jó az ISP? Akár azt is lehet automatizálni, ha sorozatgyártásról van szó...
Sziasztok,
Az alábbi kódrészlet kavart meg. (amúgy köszönet, Topi- 8 lábbal... cikkéért) TCCR0B = (0 << CS02) | (1 << CS01) | (1 << CS00); //011 = clk/64 előosztás Jól értem, hogy mivel nincs operátor az első egyenlőségnél, így gyakorlatilag egy teljes byte törlés? Előállítom a 0b00000000 bitet, és beleteszem/ráteszem a TCCR0B-re? tehát minden bit nulla lesz. Szerintem...>>>>>>
Használd a kód beillesztést.
Folyamatosan én használom helyetted a kód beillesztést.
Elfogyott a türelmem.
Az előbb az"Idézet"-t próbáltam ki, a következő már a "KÓD" lett volna! Mert azt Én is észrevettem, hogy nem jó, csak nem találtam a használati utasítást.
Amúgy köszönöm. Idézet: „Az előbb az"Idézet"-t próbáltam ki, a következő már a "KÓD" lett volna! Mert azt Én is észrevettem, hogy nem jó, csak nem találtam a használati utasítást.” Tudod, mikor idezni szeretnel az Idezet gombra kattintasz, mikor pedig kodot szeretnel beszurni a Kod-ra Amugy en ugy szoktam kiprobalni, hogy elkuldom, majd megnezem hogy nez ki, es meg van lehetosegem egy ideig javitani a dolgon, tehat javitom, ismet megnezem az eredmenyt stb -- ha nagyon nem megy torlom es elgondolkodom rajta vagy megkerdezek valakit...
Tudom, hogy egy kezdőnek hallgass a neve, és az én gépész agyam úgyis hamarosan úgy ellöki a szíjjat, hogy ki tiltatom magam, de érdemben szólna valaki valamit a kérdésemhez?
Sziasztok, Az alábbi kódrészlet kavart meg. (amúgy köszönet, Topi- 8 lábbal... cikkéért)
Jól értem, hogy mivel nincs operátor az első egyenlőségnél, így gyakorlatilag egy teljes byte törlés? Előállítom a 0b00000000 bitet, és beleteszem/ráteszem a TCCR0B-re? tehát minden bit nulla lesz. Szerintem... Ja, hogy legyen valami értelme is hogy írok, ne csináljunk egy AVR Óvoda topikot, ahol nem idegesítjük a NAGYOKAT? Idézet: „Tudom, hogy egy kezdőnek hallgass a neve, és az én gépész agyam úgyis hamarosan úgy ellöki a szíjjat, hogy ki tiltatom magam, de érdemben szólna valaki valamit a kérdésemhez?” Az nem baj, ha kezdo valaki, de a kotelezo hazi feladatot illik megcsinalni: El kellene olvasni egy C programozasrol szolo konyvet vagy tutorialt. Idézet: „ól értem, hogy mivel nincs operátor az első egyenlőségnél, így gyakorlatilag egy teljes byte törlés?” Nem. Egyenlosegjel azt jeleni "legyen egyenlo". Azaz TCCR0B legyen egyenlo a kifejezes eredmenyevel. Idézet: „Előállítom a 0b00000000 bitet, és beleteszem/ráteszem a TCCR0B-re? tehát minden bit nulla lesz. Szerintem...” Ez nem egy bit, hanem egy bit sorozat. Mivel 8 db bit van ott, ezert ezt byte-nak hivjuk. De igen, ha nulla a kifejezesed eredmenye, akkor azt fogja bele masolni a TCCR0B-be...
Hali
Az lenne a kérdésem sőt inkább kérésem hogy valaki akinek nem fáradság küldjön egy linket vagy egy kódot C-ben hogy hogyan kell beállítani az rs232 kommunikációt mert nem jutok rajta tovább se hogy se a legjobb az lenne ha valami példát tudna valaki mutatni hogy pl kiküld 1 egyest és 1 led kigyullad megnyom egy gombot és vissza küld egy 2 est abból már kibogarásznám mit hogy de egy magyarázat is megteszi csak értsem meg.
Tessék: ezek alapján írsz magadnak.
Senki se fogja helyetted megírni.
kösz ezek nagy részét már végig néztem és most is folyamatosan nézem de annyira nem tudok angolul hogy oldalakat olvasgassak de még az ADC megértettem sok példából a PWM-et ugy szint de itt nem jutok tovább. Ha feltennél legalább annyit hogy pl mint ADC-nél ReadADC(1) és akkor beolvassa vagy PWM-nél OCR1A= ; és akkor "ki irja" az adatot ezt USART nál hogy tudom megcsinálni?
ezt az oldalt találtam leghasznosabbnak : Bővebben: Link de még igy sem megy
Isten hozott a klubban...
Ha nincs operátor az egyenlőség előtt akkor a bal oldali változó értékét egy az egyben a jobb olali értékre állítja. Ezzel a kóddal csak a CS01, CS00 bitjei lesznek aktívak. Egy példával tudom szemléltetni az egyenlőség előtti operátorokat:
Egy Bitwise művelettel viszont így néz ki:
Kicsit fáradt vagyok, ez az érték nem 32, hanem 16 lesz.
Hogyan probalkoztal? (Nem latom a kapcsolasi rajzod es a forras kodod?)
Sziasztok!
Egy sebesség-kijelzést csinálok ATmeg164P-vel. Az elv az, hogy egy interrupt megérkezésekor elindul egy számláló és a következő beérkezéséig számol, ebből számolna sebességet. A programban egészen odáig jutottam, hogy interruptra elindul a számláló (kijeleztettem azért tudom), következőre újraindul, de ekkor valamiért nem olvassa ki a timer értékét. Itt a programrészlet amim eddig van: ISR(TIMER1_OVF_vect) { cli(); sebesseg=0; TCNT1=0; sei(); } ISR(INT1_vect) { cli(); //megszakítások kikapcsolása sebesseg=(kerekatmero*10800/TCNT1); //1159200/1024=10800 TCNT1=0; //indítsa újra a számlálót sei(); //megszakítások be } ... //megszakítások, timerek bekonfigurálása EIMSK=0x02; //INT1 megszakítás bekapcsolása EICRA=0x08; //INT1 lefutó él érzékelés TIMSK1=0x01; //timer1 megszakítás be TCCR1A=0x00;//normál mód TCCR1B=0x05; //bekapcs, 1024-es osztás sei(); Tehát a probléma, hogy elindul a TCNT1, megszakításkor újraindul,de nem menti ki az értékét. Mi a hibám? Idézet: „sebesseg=(kerekatmero*10800/TCNT1); //1159200/1024=10800” Ezt a sort elmagyaráznád nekem pontosan? Arra volnék kíváncsi, hogy a kerékátmérőből hogyan számolod ki a sebességet. Gondolom reed relét használsz jeladónak, mint a digitális kilométerórákban. A közeljövőben én is fogok egyet építeni.
Amikor a küllőkön lévő mágnes zárja a reed relét, interrupt keletkezik az INT1 lábon. Ekkor az előző mérés óta eltelt idő a Timer1 16 bites számlálóban található. Ezt az értéket olvassa ki a program a TCNT1-ből. Így tehát v=s/t képlet szerint számol. Remélem tudtam segíteni.
Értem, köszönöm. Teljesen világos minden. Azt hittem, hogy valamilyen cifrább módszerrel számolsz.
Hello,
Ha a TCNT1=0 akkor milyen sebességet számolsz? Én úgy csinálnám, hogy az INT1 megszakításokat számolnám, aztán a TIMER1_OVF_vect-ben kiszámolnám a sebességet. Vagyis az időegység alatt megtett fordulatok száma * kerület. Persze lehet, hogy hülyeség...
Sziasztok!
Segítségre lenne szükségem eOscope digitális oszcilloszkóp projekttel kapcsolatban. Az eredeti projekthez képest 4-szer akkora fifo memóriám van. Ezért át kéne írni ezt az értéket a programban, mert miután az eredeti projektben levő 512-es memória betelik, elvileg eldobná az adatokat. Át is tudtam írni az egyik fájlban az 512-t 2048-ra a forráskódban, ami fent van a honlapjukon. \eoscope_develop\eOscope\software\inc\eOscope.h (ezt a fájltű) #define EOS__nFifoLength 512 (ezt írtam át 2048-ra) Viszont most az összes fájlból kéne csinálni egy hex fájlt. Le kéne fordítani, de sajnos nem értek a WinAVR-hez... Próbáltam a forráskódot lefordítani, de mindig valami hibát írt ki, nem csinálta meg.... Valaki tudna segíteni nekem, vagy le tudná nekem fordítani? Előre is köszönök bármiféle segítséget! Üdv!
Ez a panelem és e mellé egy szintillesztő kapcs. rajzot nem tudok mert nincs csak a fejembe de működik a szint illesztő és a panel is az összekötésüket mind 2 variációban kipróbáltam de nem működött a kommunikáció. Forráskódok meg : Bővebben: Link Bővebben: Link
A beállításokra avr studió nem irt ki hibát de se küldeni se fogadni nem tudom hogy kell vele pedig elég sok variációt kipróbáltam de egyik se csinált semmit.
Van egy cikk a WinAVR használatáról az oldalon: Bővebben: Link
Sziasztok,
Szeretnék felprogramozni ISP-n egy ATMEGA 644-20AU melyet egy 20MHz kvarc hajt. Első alkalommal a ponyprog és az avrdude mindent rendesen lát a gyári állapotoknak megfelelően: Read Osc.Calibration Byte successful: 0xAB (171) avrdude: Device signature = 0x1e9609 avrdude: safemode: lfuse reads as 62 avrdude: safemode: hfuse reads as 99 avrdude: safemode: efuse reads as FF Majd baállítom a fuse biteket: avrdude -p atmega644 -c siprog -P /dev/ttyS0 -i 1000 -U lfuse:w:0xF7:m -U hfuse:w:0xDF:m minden ok: avrdude: Device signature = 0x1e9609 avrdude: safemode: lfuse reads as F7 avrdude: safemode: hfuse reads as DF avrdude: safemode: efuse reads as FF továbbra is tudom kezelni a uC-t. Végül fel szeretném programozni az eszközt: avrdude -p atmega644 -c siprog -P /dev/ttyS0 -i 1000 -U flash:w:main.hex:i (main.hex egy nagyon egyszeru peldaprogram lett volna) Ez a folyamat nagyon sokáig tart kb. 30perc, a végeredmény pedig verify error! Ezekután már nem fér hozzá az atmega644-hez a ponyprog és az avrdude: initialization failed rc=-1 Ezt eljátszottam 2 eszkozzel is, es mindig egyanez lett a végeredmény. Merre keresgéljek, megoldást jelenthet, ha veszek egy gyári programozót? Esetleg cseréjem a kvarcot ideiglenesen 8Mhz-re? köszi.
A kvarc sebessége itt nem lényeges, ahoz hogy programozd, csak legyen valami...
Ha kezdő vagy, akkor mindenképpen egy egyszerűvel kellene kezdened, mint pl. EZ. Mindössze egy 74HC244 kell hozzá meg pár passzív alkatrész. Nem kell hozzá előre felprogramozott uC.
Alapvetően a Reset-MOSI-MISO-SCK lábak vezérlésével lehet egy adott soros protokoll szerint felprogramozni, ahogy a uC leírásában van. A printerportos megoldás is ezeket használja. (A fenti link is ilyen, csak pufferelve van.) De nem szükséges magát a protokollt ismerni, mert a fenti oldalról letölthető program tudja azt. Tehát: Telepíted a PonyProg nevű programot. Megépíted az AVR ISP-t. Megírod a programodat, lefordítod. Csatlakoztatod az AVR ISP-t a uC-hez. (Szükséges hozzá: kvarc, 5V tápfeszültség, esetleg a Reset lábra 1kOhm tápfesz felé, 100nF föld felé) PonyProg-gal betöltöd a programodat és örülsz.
Már többször részletesen lépésről lépésre megcsináltam, de ennek ellenére hiba jött elő....
És több forrásfájl egyesítéséről sem nagyon ír.... Ezért írtam a fórumba, hátha valaki profi benne és tudna segíteni nekem Azért köszönöm, hogy válaszoltál!
Köszi a választ,
működhet a programozás egy usb->LPT átalakítóval? Tapasztalatok? |
Bejelentkezés
Hirdetés |