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
Szia!
Egyenlőre csak annyit, hogy hardweres pwm-el elő tudjam állítani a megfelelő vezérlőjelet, és értsem is hogyan működik... Utána egy ADC-vel rákötnék egy potit, majd azzal vezérelném az egészet, végül jönne az lcd is... Már msp430 as kittel megcsináltam az egészet, de most váltottam nem rég AVR-re... Valaki talált hibát a forráskódban? Zoltán
Ezt nézd meg ez egy rc-szervó teszter egy potival vezérled egész jól le van írva ahogy megírta a srác.
Bocsánat! CTC módban fut az időzítőd, rossz értéket adtam meg. Bár ettől még működhetne...
De ejtettél egy végzetesebb hibát: a program futása soha nem érhet véget, a main() fv. végére tegyed be:
Illetve mondom a helyes timer beállítást. Egyedül a TCCR1A-s sort kell módosítani:
Szia!
Módosítottam a programot:
Így sem reagál, semelyik lábon sem ad ki pwm jelet, sőt, mindegyik láb értéke "0". Talán hibás lenne az AVR...? A normál portot működnek... de ez nem akar. Nem kellene külső oscillátor hozzá? (elég butaság lenne...) Ilyenkor mit lehet tenni? Zoltán
Két hiba is van, este nem vettem észre. Egyiket Te ejtetted, másikat én, és pont ugyanaz a hiba.
Persze ilyenkor mindenki arra gondol kínjában hogy talán az AVR nem jó(én is). 7. sor:
14. sor:
Sziasztok
Azért fordulok hozzátok mert egy mega8-as nem válaszol vissza. Mi lehet a baja? Próbáltam kvarcot tenni mellé, külső órajellel de semmi. ISP freki hibát ír az avr studio. Szkóppal néztem, SKC-n van órajel, MOSI-n van adat viszont az IC nem válaszol vissza a MISO lábán. Kinyirtam volna a bootloadert belőle? Van valami egyszerű nagyfesz programozó amivel életre tudnám kelteni? Üdv: Suncorgo
Az ISP inkább egy programozási felület, nem szokás bootloadernek hívni. Ha a RESETDISBL vagy az ISPEN nevű FUSE bitek valamelyike el lett állítva, az csak nagyfeszen(HVPP) javítható.
A legegyszerűbb ilyen eszköz a HVPP Fuse bit Doctor, erre rákeresve meglesz a kapcsrajz is. Ezen kívül a gyári STK500(és HVPP-képes klónjai, pl. a sajátom vagy a der-hammer féle), illetve AVR Dragon.
Nem azt hívtam bootloadernek. Csak gondoltam hogy a bootloader válaszol vissza SPI-n a programozónak mikor adat kiolvasás van.
Az AVR doper ami itt az oldalon fennt van az képes HV progra? Mármint ha megoldom hogy a cél AVR reset lábára 12Vot kapcsoljon?
Bootloader nem szokott SPI-n kommunikálni. Általában Rx/TX-en, mint pl. az Arduino vagy az Evertool.
Vagy USB-n (pl. USBBOOT), illetve hardveres USB-vel rendelkező AVR-ek esetében a FLIP bootloader. ATMega8 esetében a Doper nem lesz jó HVPP-re, azzal csak HVSP-t lehet(ami a kisebb Tiny-khoz jó). A legegyszerűbb amit építhetsz erre, az egy HVPP Fusebit Doctor, kb. ugyanannyira bonyolult mint a Doper.
Mire való tulajdonképpen az a bootloader? Én még soha nem használtam, pedig lehet, hogy jobb lett volna.
Egyfajta program az AVR-ben ami bizonyos feltételek esetén kommunikál valamilyen csatornán(lehet USART, SPI, I2C, USB), és rajta keresztül betölti azt a kódot amit a boot-feltétel nem-teljesülése esetén futtatni fog.
Persze a bootloadert is be kell égetni és a BOOTRST-t meg a kezdőcímet beállítani. Meg is kell írni/módosítani a bootloader kódját ha pl. az induló feltételt állítanád be. A legjobb példa erre az Arduino és a JTAG-ben használt Evertool. A legtöbb AVR-hez elérhető a szintén avr910-kompatíbilis bootloader(pl. az Evertool is az). Ha már avr910: általában lefoglal egy portlábat, és bekapcsoláskor azt figyeli hogy le van-e húzva. Ha nincs akkor a bootloader a kezdőcímre ugrik(magyarul: kilép), ha igen akkor avr910-es programozóként viselkedik és önmagát programozza. A programozás végén általában újra kell indítani az AVR-t, és a bootloader aktiválásához is kézzel RESET-elni kell tehát nem lesz egyszerűbb. Olyan eszközöknél használnak bootloadert amelyeket néha(inkább nagyon ritkán vagy soha) frissíteni is kell, és azt a meglévő(tehát RS-232, USB, CAN-busz, stb.) csatlakozáson egy egyszerű program lefuttatásával külső segédeszköz(pl. AVR-programozó) nélkül lehet megejteni. Nekem is lenne egy kérdésem a GSM-modullal, mert éppen egy konzolos eszközt(PC interfész) kellene programoznom. A GSM-modul esetében az AT parancsokat vagy egy ENTER(azaz A kérdésem hogy lényegében mindkettő zárhat egy utasítást?
Megszületett az AVR Fuse Doctor. Remélem hozza a várt eredményt
Bootloadert ISP programozóval lehet betölteni? Ez lehet hogy hülye kérdés mert pont az a szoftverrészt akarom felülírni ami éppen kommunikál.
Gyönyörű! Az első változatom megépítése is tovább tartott és csak drótoztam, tervezésre nem futotta(1. kép).
De végül 2 hét alatt csak-csak elkészült egy maratott verzió 3 darab foglalattal(2. kép).
Betölteni egy szűz AVR-re csak programozóval(ISP, JTAG) lehet.
A bootloader elvileg felülírhatja magát, de minden pillanatban csak olyan szektort írhat amin éppen nem fut a program. Egy szektor mérete jelen ismereteim szerint a BOOTSZ nevű FUSE bitek által legkisebb értékre beállítható terület. Hülye megfoglamazás tudom, ATMega32-nél ez 256 bájt. Tehát a maximális, 2048 bájtos bootloader esetében bármely, megadott állapotban 7 darab bootloaderes szektort írhatsz... A kommunikációs rész is lecserélhető ha az új programkódot a kommunikációs rész az SRAM-ba vagy EEPROM-ba tárolja le, egy másik szektorba pedig lehet az a kód ami onnan kiolvassa és flasheli...
Köszönöm. Pedig ezt csak gyorsan összedobtam.
Ez a programozó (STK500v2) a tuxgraphics.org alapján készült.
Mindössze kiegészítettem egy 74HCT125-el leválasztásképp és egy 74HCT08-al közösítem az UART interface-t. Így ha már van FTDI benne akkor lehet használni a géppel való kommunikációra is. Az a 2 vezeték most áthidal mert nincs itthon 7408-am. De ez már részletkérdés. Ezzel a programozóval fektettem meg a most helyrehozni kívánt atmega8-amat. (előfordul) Ennek a programozónak tegnap délután készült a terve (SCH&PCB 3x kezdtem újra mert nem tetszett ) és éjszaka folyt a beültetés. Letöltöttem a forráskódot, beleírtam a 74125 kezelését és még pluszba egy led kezelést ami pilácsol ha belépett programozó módba.
Összekötöttem a fuse doctort és az elhalt mega8at.
Tápot adtam a fuse-nak és már egyből zölden világított. Ha nincs benne a mega8 akkor piros. Még azért nyomtam neki gombot is, és az ISP programozó csak ISP freki problémát ír. Van valami ötleted hogyan tovább?
Az összedrótozott verziónál milyen vezetéket használtál? Sima zománcozott rézhuzalt? Ha nem utóbbi, akkor honnan lehet ilyet szerezni? (Én olyannal szoktam, mint a képen az egy szál piros vezeték. Szenvedés...)
Összekötöttem az FTDI-vel. Megnyitottam a terminalt.
Azt írja hogy OK. Érdekes módon ugyan azt olvasta ki belőle mint amit beleírt, szóval adtam a sz*rnak egy pofont Akkor kifeküdt belőle a bootloader?
Ha zöld akkor megjavult, használd egészséggel(mármint a mega8-at).
A drótot régi TV sorkimenő trafójából szedtem. Szerintem lakkos, de a lényeg hogy a páka hője leégesse, de más, mechanikai behatásra nem sérülhet a szigetelése.
Köszönöm a bootloaderre adott válaszodat!
Én a GSM modul esetében mindkettőt használtam. Egy részlet:
Ha volt benne bootloader, akkor igen.
De annyi féle van belőle, mint égen a csillag... Bascomhoz van pár minta, az Arduino is tartalmaz ilyet készen...
Ha ISP felületen akarom programozni, akkor az AVRben gyárilag benne lévő bootloader segítségével programozom nem? Mert ez a mega8 az ISP programozónak nem válaszol. Szóval Doperrel nem tudom programozni, se fuse bitek kiolvasása se a signature olvasása nem megy. Másrészt ha a fuse bit doctor erase tüskéit zárom akkor a teljes flasht törli? Valószínüleg így szállhatott el, hogy az ISP programozó nem látja. Mivel tudok másik bootloader írni bele? Mármint nem a bootloadert megírni hanem betölteni az AVRbe gyári programozón kívül.
Létezik valami "házi" HVPP párhuzamos programozó ami RS232-őn kommunikál?
Nem. gyárilag csak _néhány_ chip tartalmaz bootloadert. Ez pl. a beépített USB-s AVR család (AT90USB; xxxU2, xxxU4 és xxxU6 calád).
HVPP a teljes flash-t EEPROM-ot törli és a FUSE biteket alaphelyzetbe rakja. Az ISP letiltás módjai: - Disable RESET (resetláb) - ISP disable
Értem. Én azt hittem hogy azért lehet ISP-n programozni mert a bootloader.... rosszul hittem.
Megnéztem mit írt be az Fuse bit doctor és a RSTDISBL nincs pipa, az SPIEN pipa elvileg és doperral nem tudom programozni. Akkor meghalt az AVR?
Doper helyett valami _normális_ programozó mit mond?
STK500, MKII, STK200, Dragon? Az ISP az a programozási felület. Bootloadernél pl. soros kommunikációval rakod a chipbe. Nem kell külső programozó hozzá....
Csak ez a doper és az STK500as programozóm van. A doper nem jött be, pedig ezzel programoztam fel a fuse bit doctort szóval tuti működik. Mindjárt megnézem az STK500assal. Ez a tuxgraphics féle.
|
Bejelentkezés
Hirdetés |