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
Úgy néz ki, hogy megúsztam a program írást. Megoldódott a probléma. Ki kellet kapcsolni az optimalizációt a fordítóban és így működik.
kapu48 A hét végén lesz egy kicsi időm és kipróbálom az ötleted. Megpróbálom átírni arra amit tanácsoltál. Mindenkinek köszönöm a segítséget.
Hát ez elég rosszul hangzik.
Csak aztán ki ne jöjjön egy új gcc verzió, mert akkor újra 20 optimalizációt végig kell próbálnod, mire esetleg elindul újra a program. Szóval szerintem kapcsold vissza az optimalizációt és találd meg, hogy mit rontottál el. Puffer túlírás, volatile lehagyása az interruptban, ...
Az ilyen varakozo fuggvenyekkel van a legtobb baj:
while(wait) --wait; Ennyi. Ezt -O2, -Os ugy kiszedi, mint a sicc! Ilyet mar 10 eve sem lett volnta szabad leirni... A hozzászólás módosítva: Jún 10, 2015
Sziasztok!
ATXMega esetén elvileg a bootloader teljesen független a programmemóriától. Az lenne a kérdésem hogy AVR Studio 4 alatt ezt lehet írni-olvasni, esetleg a sorosportos már gyárilag benne van? Illetve valami gyorstalpaló is érdekelne, nem baj ha nem magyar, csak a portok és megszakítások kezelése lenne fontos. Konkrétan xMega32A4 lenne az első "áldozat".
Egy kicsit pang a téma...
Szóval ott tartok hogy van egy ilyen ATXMega32a4 board a ribu.at-ról: Bővebben: Link Ebbe MCS bootloadert tettek ami csak Bascom-ból működik, ezen kívül van egy kis program ami viszont csak .bin fájlokat fogad el. Jó, tudom, létezik hex-->bit átalakítás, de én inkább a "hagyományos" módot választanám, AVR Studio + AVRISP-mkII (klón). Utóbbi egyébként rendesen látja, kommunikál vele, csak a tápon kell még igazítani kicsit mert csak külső táppal megy. El akarom kerülni hogy a bootloadert letöröljem, de ha elveszne akkor nem lenne utolsó dolog a végén valahogy visszatenni... A hozzászólás módosítva: Jún 12, 2015
Beállítható a: Bascom >> Options >> Output >> Binary file pipa
És készít neked *.bin-t A hozzászólás módosítva: Jún 12, 2015
Sziasztok! 4x4-es mátrix billentyűzet bekötése a képen látható. Proteus ISIS-ben tökéletesen működik, hardveresen a kapcsolási rajz szerint van bekötve, ugyanakkor a valóságban megépítettem és semmit nem reagál. (a kiírató függvény működik, és az LCD is).
main.c tartalma: Bővebben: Link keypad.h tartalma: Bővebben: Link A hardveres bekötéssel vagy a programkóddal van a hiba?
Az ellenallasok kozos fele nem foldre, hanem Vcc-re kellene legyen kotve.
Próbáld meg kicserélni a 10k-s lehúzó ellenállásokat 2k - 3k körülire. Mivel a beépített felhúzó ellenállás értéke nem igazán egzakt (talán 30k körül van) a 10k-val való feszültségosztó kihúzhatja a bemenő feszültségek értékeit a javasolt tartományból.
A hozzászólás módosítva: Jún 13, 2015
Az redundáns lenne, azok már most is Vcc-re vannak húzva belül.
Azok a lehuzok egyaltalan minek vannak? Mivel a programkod csak akkor fogad el barmit is, ha a beolvasott ertekben csak egy bit nulla, a tobbi egy. Ha meg kisebb ellenallassal huzza le, akkor meg biztosabb, hogy nem fog mukodni.
Lenne.. Ugyan. A kod eleve redundans, tele felesleges utasitasokkal. Miert pont a HW lenne jo? Egyebkent nem biztos, hogy redundans, mivel a belso felhuzok eleg kis arammal mennek, ha tul hosszu kabelek vannak, elofordulhat, hogy lassan toltik at a kabel kapacitasat. Valamint a zavarerzekenyseg is javul a kisebb impedanciaktol. Szoval a 4.7k..10k teljesen elfogadhato felhuzo lenne ott.
Én is gondolkodtam azokon a lehúzókon, szerintem is meg lehet oldani simán nélkülük (ráadásul jobban is).
Ha gondolkodtal rajta, akkor miert irod azt, hogy csokkenteni kell? Ki kell szedni oket vagy atkotni a Vcc-re. Nezd meg a mellekelt kodot is mielott "jotanacsot" adsz!
A hozzászólás módosítva: Jún 13, 2015
A lényeg lemaradt? Én AVR Studio-ban szeretném írni a programot ami csak HEX-et csinál, BIN-t nem.
Úgy lenne kényelmes ha nem a bootloadert hanem az AVRISP-mkII - t használnám, csak el akarom kerülni a bootloader törlését, illetve később magát a bootloadert szeretném újratölteni.
Igen, tényleg ennyi volt csak. Köszi szépen.
Passz!
Tényleg nem értem a problémád! De szerintem a kétféle módszert nem lehet egyszerre használni. A reset vektoron levő cím vagy a programod kezdetére mutat (Atmel Studio), vagy a bot loaderre (és az dönti el hova kerül a program kezdete) .
Azaz maga a program (hex vagy bin) már tartalmazza, hogy hova kerül a kód?
Sziasztok!
Hogyan lehet mozgóátlagot legegyszerűbben számolni? Gondolok itt arra, hogy pl. ADC-vel mérek, és szép lassan elsímítja a hirtelen váltást? Valami olyaami rémlik, hogy tömbben gyűjtök 10 értéket, és mindig eldobom az utolsót? Hasonló megoldás van, vagy ez korrekt? Köszönöm.
Sziasztok! Látott már valaki olyat, hogy egy 2x16-os LCD megfelelően van bekötve. Mégis megjelenítéskor a szöveget pislákolva írja ki? Rámértem a portokra, teszteltem őket 1db LED-el. Ha magas szintre állítottam, akkor a LED világított és nem villogott. Alacsony szintnél nem világított a LED. Breadboardon van összerakva az áramkör, itt-ott megtűzdeltem zavarszűrő kondival, de ez sem segített. Eddig ugyanazt a Drivert használtam az LCD-hez és eddig működött.
Igen, láttam már. Pl. ha 100mS-ként frissíted a kijelző tartalmát, akkor vibrálni fog, az újraírás lassúsága miatt. Felesleges ugyanazt az adatot kiküldeni rá ilyen sűrűn, bőven elég akkor, ha változás történik. Az LCD kezelése lassú művelet, jobb, ha csak ritkán kell ezzel foglalkozni.
Csatti2: Köszi, megnézem!
Szerintem egyszerűbb dolgot keresel. Ennek csúszóablak a neve, valakik hívják még nulladfokú szűrőnek is. Lényege hogy a legutolsó értéket minden mérés után eldobod(azaz az új értéket oda szúrod be). Ehhez kell egy tömb és egy számláló. A többit a fantáziádra bízom.
Kijelző frissítésnél kb. 320ms az elfogadható határ, annál gyorsabbat nem mindig lehet olvasni, egy lassabb meg idegőrlő lehet. De ekkor is érdemes lenne csak a változó adatokat frissíteni, és nem letörölni a kijelzőt és mindent újraírni mert akkor villog. Gyakori hiba, hogy a "write" függvény minden alkalommal megcímzi az X,Y pozíciót, ami értékes időt vesz el. Ha az egész kijelzőt frissítenéd akkor előbb állítsd össze a sztringet (32+1 karakter nem sok), állítsd 0,0-ba a kijelző pozíciót és egyben írd ki. Akkor törölni (CLS) sem kell, úgyis felülíródik és baromi gyors lesz az egész frissítés.
Sziasztok!
Járt már valaki úgy, hogy túl sokáig melegített egy AVR-t (esetemben kb. 15 percig, mivel összefolyt 3 láb, és sehogy sem akart lejönni), és utána a fogyasztása kicsit megnőtt? A programhibát majdnem kizárhatom, mert volt régebbi verzióm, próbáltam mini programot is, ami elküldi alvóba az AVR-t azonnal. 15-20mA-t eszik folyamatosan, ez felel meg az alvó "üzemmódnak" (előtte 0.001mA volt). A portok megfelelően működnek, mégis valahova folyik az áram. Próbáltam minden PORT-ot tápfeszültségre húzni, és végigmértem, sehol sem veszik el a 3V3, aztán leraktam GND-re, mindenhol 0V volt, kivéve a Reset. Ami még lehetséges, hogy valahol van egy mini átvezetés, de ezt nem találom sehol. IC cserét ne javasoljatok, mert ha csak ez a megoldás, akkor lehet inkább kidobom az egészet, mert akkora szenvedés lenne Van ötletetek? Köszi.
A panelt tisztítsd meg alkohollal/denaturált szesszel/féktisztítóval ha nincs más akkor esetleg nitrohígítóval különös tekintettel az AVR lábaira, kis ecsettel dörzsöld le körülötte a gyantát és ha megszáradt próbáld ki újra. Ha nincs a panelon "nyitott" alkatrész pl buzzer akkor nyugodtan öntsd rá az oldószert, nem kell sajnálni, ami lefolyt tedd el legközelebb jó lesz.
Helló!
Nem igazán tudtam eldönteni hova is illik ez a kérdés de azért remélem kapok válasz mert már nagyon idegesít a probléma . Az van hogy van egy ATtiny45-öm, egy Arduinóm meg egy .hex fájlom.Értelemszerűen az ATtinyre kellene felrakni a.hex fájlt az Arduinóval(más programozóm nem lévén).Találtam is kismillió cikket nagyjából mindegyik ugyanazt írja, de egyik sem működik nekem.Felrakom sz Arduinóra az ArduinoISPt, rákötöm az ATtinyre eszerint. Ezután az Arduinó IDEt bekonfigurálom az ATtinyre (8Mhz belső órajellel) felrakom a bootloadert. Majd parancssorba:
Erre meg ezt írja ki:
Légszíves segítsetek! |
Bejelentkezés
Hirdetés |