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
Szerintem ez érdekes lehet számodra: AVR182: Zero Cross Detector
Nagyon egyszeru: A sikolymester altal linkelt ZCD-t ugy alakitod at, hogy az egyik timer input capture labara rakotod es nem egy megszakitas bemenetre. Igy megmered a periodus idot es a kapot ertekbol kiszamolod a PWM-hez szukseges maximum erteket. Az input capture esemenyhez kapcsolodo megszakitas segitsegevel inditod a PWM-es timert, vagy nullazod a timer szamlalojat. Termeszetesen ezt nem eleg egyszer csinalni, hanem minden egyes periodus alkalmaval vegre kell hajtani, igy szinkronban marad a rendszered.
beállítottam de semmi, arra gondoltam hogy mi lenne ha kiszedném az ellenállásokat? Egyébként próbáltam hogy rakok 10K ellenállást a reset lábra, úgy fehér csíkok futnak a képernyőn.
Sziasztok
Buta kérdés, de azért segítsetek, kérlek. Nem ismeri fel az AVR Dopert a feladat kezelőben látom Com8 osztotta ki neki. De az AVR Stúdió 4. nem akarja látni. Mindig ugyan oda ugrik vissza. Hol hibáztam?
Látom Win7-ed van, ott előfordul. Próbáltad már EZT?
Sziasztok
Szeretnék kérni egy kis segítséget Építtettem egy Szilva AVR910 programozott Fel is programoztam már vele Atmega16-ost Szóval működőt is De ma az istenért sem akar működni Segítséget köszönöm ------------------------------------------- Checking programmer type ... Found AVR ISP Entering programming mode... Entering programming mode failed! Programmer did not return CR after 'T'-command. Entering programming mode failed! Programmer did not return CR after 'P'-command. Signature = 0x0D 0x0D 0x3F Leaving programming mode... Leaving programming mode failed! Programmer did not return CR after 'L'-command. --------------------------------------------------------------
Szia
Köszönöm a gyors választ Jelzem, ha jó lett
Az avr910 tudtommal csak com1-com4-ig működhet AVR Studio-ban. Én JTAG ICE feltöltésekor találkozom
ugyanezzel a problémával mivel a bootloader is avr910-es...
Szia
com4 van, de próbáltam másik portón is De a többi információval én még nem tudok mit kezdeni Nem tudom meg próbáltam másik gépen is de ugyan az
Nekem a napokban jutott eszembe hogy az osztót nem kell bitenként kiolvasni, azaz teszem fel van egy
8 bites számlálóm akkor fölösleges a 8 kimenetet az AVR-re kötni, mikor egyet sem kell! Elég ha az osztó bemenetét felül tudod bírálni az AVR-el! Ha már használod az ICP lábat akkor azzal. A mérés/számlálás befejezte után csak léptetni kell az osztó bemenetét a következő fel/lefutó élig! Ezzel a módszerrel nem csak az alsó biteket kapod meg, hanem az osztót is lenullázod! Ráadásul használhatsz egyszerű nagyfrekis osztókat is, például MC12022 IC-t - 1.1GHz, programozható.
Sziasztok!
Megcsináltam életem első AVR programját. Az ötletet és szinte az egész programot Topi-tól szedtem a "8 lábbal AVR" kapcsolás közlekedési lámpájából. Egy kicsit módosítottam és átírtam az a portra mindent mert ezt atmega 644p-vel szeretném megoldani a sok láb és megbízhatóság miatt. Itt a program és az lenne a kérdésem hogy ez működik e? Majd bővítem a többi portra is ha kész lesz azt is felteszem.,
Ui.: Ebből okos ledes villogó lenne amire sok led köthető, és minden kimeneten tranyó lenne.
Szerintem a válasz arra, hogy működik-e a legkönnyebben a szimulátorból szerezhető meg.
Futtasd le szimulátorban, és vagy léptetgessed, vagy tegyél a fontos helyekre breakpointokat.
WinAVR-el csináltam. Vagy azzal is lehet?
Töltsd le a Studio 4 -et és etesd meg a generált .elf filet vele, állítsd be a megfelelő AVR típust. Két szimulátor van, a Simulator és a Simulator 2. Ha az AVR típusod megleled a Simulator 2-ben, akkor azt használd.
Sziasztok!
Szeretnék eepromban tárolni egy 16 bites változót. Hogy csináljam? Ennyit tudok:
Előre is köszi a segítséget!
Hát a válasz az ott van az utolsó kódsorodban, csak éppen fordítva kell most.
A zárójeles (uint8_t) un. typecastolás, nem feltétlen van rá szükség itt és most, de így elegáns a dolog. Javaslom nézd át a kedvenc C könyvedben a bitenkénti műveleteket. Ha meg nem ez volt a kérdés, akkor elnézést, de másra nem tudtam tippelni. Apropó, lehet ám az eepromba 16 bites változókat is írni ám. Nézz itt körül.
Végtelenül egyszerű! Bővebben: Link (program kód második sora) . Természetesen ugyanez igaz a write módra is.
Most ahogy fordítottam a programom ezt írta ki a fordító:
Ez nagy galibát jelent? Ettől függetlenül tökéletesen működik a program.
Nagy hibát jelent.
Az, hogy tökéletesen működik, nos az röviden szólva persze lehetséges. Van fix méretű memória, amiben a stack és a változók vannak. Tegyük fel, hogy 4K a memóriád, deklarálsz 4Kbyte-nyi volatile tömböt, ami teljesen kitölti a memóriát. Ezek után ebbe szépen bele fog mászni a stack a függvény hívásoknál. Ha te persze nem piszkálgatod azt a tömböt, akkor minden működik a maga módján, tökéletesen. Itt egy kis olvasmány: Bővebben: Link
Kérdés az hogy mi foglalja ennyire a DATA memory-t? És hogyan tudnám csökkenteni?
Ha megnyitod a text fajlt, akkor azok a sorok kellenek neked, amelyekben a tipus(Type oszlopban van) OBJECT es a cim(Value oszlopban van) 008xxxxx. Ezek a valtozok vannak fixen a ram-ban. A meretuket a Size oszlopban latod.
Köszönöm! Meg is találtam a hibát.
Byte lcd_buffer[101][64]...... És nem is használtam . Mivel grafikus LCD-t használok, és elég sok a tömböm amiben képeket tárolok, és ha mindre szükségem van akkor hogyan tudom az ebből adódó Memory-t átcsoportosítani vagy optimalizálni? Pl:
Ahogyan az idézett kódodban is van, használd a PROGMEM direktívát. Így nem az SRAMban tárolódik az adat, hanem a FLASH-ben. Részleteket itt találsz: Data in Program Space
Igen, erre gondoltam, így értettem, köszönöm!
Volna mégegy kérdésem. Azt tapasztaltam, hogy programozáskor törlődik az EEPROM tartalma és azt mondta egy ismerősöm, hogy erre van egy fuse bit. Melyik? Illetve melyikkel tudom kiolvashatatlanná tenni a Flash-t? (Mikor elkezdtem AVR-rel foglalkozni annyi "félelmetes" dolgot hallottam a fuse bitekkel kapcsolatban, hogy nem merek kisérletezni vele...) Köszi!
Attól függően, hogy mivel programozol, pl a Jtage Ice ( 1,2,3) illetve Dragon esetén, ha Jtag interface-t használsz, akkor külön lehet ott is állítani az opcióban, hogy törölje az eepromot a felprogramozásnál. Amúgy erre elvileg csakugyan van egy fuse bit. Valahol a debbug settingsben kell keresni.
Amúgy állítom, hogy a fuse biteket nem lehet elszúrni a Studio 4,5,6 -ból. Pony Prog és társai kicsit kuszábban tálalják a dolgokat. Ha mégis pony progban utazol, akkor nézd meg ez az oldalt előtte: fuse calc
Az AVR-rel szeretnék mérni frekvenciát. Motorom Sebességét és fordulatát. Két adatot tudok róla:
Fordulat:33.33 Hz / 1000u/min Sebesség:1120 Hz / 100 km/h Ezt is a neten találtam. Atmega128-al próbálom megvalósítani, de felső tartományban nagyjából 10kHz körül még elfogadható eredményeket ad vissza, alsó tartományban rémeseket. (1s időalap alatt beérkezett jelek számát nézem, AVRGCC) Valami megoldás kellene rá hogy gyors is legyen, értem itt hogy pl 1s körül le kellene mérnie mind a két frekvenciát viszonylag pontosan hogy tudjak áttételt számolni belőle (Fokozatkijelzés). Valami más ötlet?
Fordítsd meg a dolgot. A két beérkezett jel között eltelt időt mérd! Így pontosabban meg tudod határozni a frekvenciát.
Erre kaphatnék egy példát vagy valami leírást? Mekkora tartományban képes így mérni?
|
Bejelentkezés
Hirdetés |