Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
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
Lapozás: OK   117 / 840
(#) Sir-Nyeteg hozzászólása Ápr 4, 2009 /
 
Köszönöm Topi!
Adatlapot megnéztem, ugyanerre jutottam, végül kiderült, hogy logikai hibát ejtettem, emiatt nem működött a leállítás, és emiatt kérdeztem itt.
Új kérdésem:
Sok szó esett a megszakításokról, nekem is erre lenne szükségem. Nem Timer, hanem külső megszakításra. Lényegében csak annyi kellene, hogy egy gombnyomásra azonnal reagáljon, ne pedig lekérdezgetve, lassan. Timer indítás felesleges ekkor. (INT0, INT1, Atmega8)
Megoldható lenne, hogy mellékeltek egy kódot hozzá?
Nem fog összeakadni a Timerekkel?
Örök hálám!
(#) vzoole válasza Sir-Nyeteg hozzászólására (») Ápr 4, 2009 / 4
 
  1. // INT0 INT1 Megszakítás példa
  2. // PIND0 kimenet (LED)
  3. // PIND2 PIND3 bemenet (kapcsolóval testre kötve)
  4.  
  5. #include <avr/io.h>
  6. #include <avr/interrupt.h>
  7.  
  8. #define LED_on          PORTD |=  (1<<PIND0)
  9. #define LED_off         PORTD &= ~(1<<PIND0)
  10.  
  11. //-------------------------------------
  12. ISR(INT0_vect) {
  13.         LED_on;
  14. }
  15.  
  16. //-------------------------------------
  17. ISR(INT1_vect) {
  18.         LED_off;
  19. }
  20.  
  21. //-------------------------------------
  22. void init(void) {
  23. //-------------------------------------
  24.  
  25.         //       76543210 (PIND0 kimenet, többi bemenet)
  26.         DDRD = 0b00000001;
  27.         //       76543210 (INT0, INT1 felhúzó ellenállás)
  28.         PORTD= 0b00001100;
  29.  
  30.         // INT0 és INT1 lefutó élre érzékeny
  31.         MCUCR = (1<<ISC01) | (1<<ISC00) | (1<<ISC11) | (1<<ISC10);
  32.  
  33.         // megszakítás maszkolás
  34.         GIMSK  |= (1<<INT0) | (1<<INT1);
  35.        
  36.         //megszakítás bekapcsolás  
  37.         sei();    
  38.  
  39. }
  40. //-------------------------------------
  41. int main(void) {
  42. //-------------------------------------
  43.  
  44.         init();
  45.  
  46.         for(;;) {
  47.                
  48.                 // itt fut a főprogram
  49.                
  50.         } //for
  51. } //main


Elméletileg nem akad össze más megszakításokkal, van valami olyan, hogy megszakítás prioritási vektor, és elsőnek a nagyobb prioritású fut le, és utánna a másik.
(#) Sir-Nyeteg válasza vzoole hozzászólására (») Ápr 5, 2009 /
 
Köszönöm e kései segítséget!
Ez az egyetlen bajom az adatlapokkal... most már tudom, hogy mit keressek bennük (ISR, MCUCR)
De az az igazság, hogy GIMSK nem is szerepel a doksiban.
Köszönöm, tesztelem!
(#) matrix64 hozzászólása Ápr 6, 2009 /
 
Sziasztok !
Elnézést,nem pont avr a kérdésem ,csak azzal szeretném használni.3 db 74HC589-el (ami sorba van kötve )szeretnék párhuzamosan beírt adatokat venni sorosan
az AVR-el. Nem a programra ,hanem a hc589-esek vezérlésére ill.összekötésére lennék kiváncsi ebben az esetben,ha tudnátok valami app.note-ot vagy linket.
Kösz !
(#) Topi válasza matrix64 hozzászólására (») Ápr 6, 2009 /
 
Például egy ic adatlap? Valószínű hogy benne van még a kaszkádolása is.
Próbálj meg kicsit önállóbbnak lenni, nem egyből farkast kiáltani.
(#) matrix64 válasza Topi hozzászólására (») Ápr 6, 2009 /
 
Nincsen példa az adatlapon,különben nem kérdeztem volna... (onsemi)
(#) matrix64 válasza matrix64 hozzászólására (») Ápr 6, 2009 /
 
Van tervem csak meg szeretném erősíteni a program írása előtt,nehogy újra kelljen kezdeni (asm)
(#) szilva válasza matrix64 hozzászólására (») Ápr 6, 2009 /
 
Szerintem:

- A-H a 8 bites párhuzamos bemenet
- az RCK láb felfutó élére a bemeneti lábakon lévő pillanatnyi értékek a bemeneti tárolókba íródnak
- az SLOAD láb alacsony szintje engedélyezi, hogy a bemeneti tárolókban lévő értékek a shift regiszterbe íródjanak át
- az SCK lábon megjelenő felfutó él lépteti a léptetőregiszterben a biteket
- az OE láb alacsony szintje enngedélyezi a QH láb kimenetként való működését
- a QH lábon az épp kilépő, utolsó bit jelenik meg
- a SER lábon lévő érték lép be léptetéskor a léptetőregiszter legelső bitjébe

Ez alapján én úgy kaszkádolnám őket, hogy az összes OE-t alacsonyra kötném, az első egység QH-ját a második egység SER-jével, a második egység QH-ját a harmadik egység SER-jével kötném össze. Ezen kívül mindegyik egység RCK, SCK és SLOAD lábait összekötném, így kialakítva egy RCK*, egy SCK* és egy SLOAD* vezetéket. Az első egység SER-jét érdemes fixre szintre kötni, pl. GND-re.

Az AVR felől vezérelned kell az RCK*, SCK* és SLOAD* vezetékeket, ezek az AVR szempontjából kimenetek, továbbá a sorosan kiléptetett adatot a harmadik egység QH kimenetéről, az AVR szempontjából egy bemeneti vezetéken keresztül kell leolvasni.

Remélem, semmit nem hagytam ki.
(#) matrix64 válasza szilva hozzászólására (») Ápr 6, 2009 /
 
Kösz a segítséget ! Az SLOAD-ban nem voltam biztos hogy fix-e vagy vezérelni kell..
(#) dB_Thunder hozzászólása Ápr 6, 2009 /
 
Helló mindenki!

Megépítettem a Topi-féle Doper-t, az elsőt sikerült felprogiznom párhuzamos porton keresztül. Most született még 2 Doper, ezeket már a meglévővel szeretném felprogizni, ami sikerül is, de mégsem megy egyik sem. Gondolom megint azokkal a fuse bitekkel lehet a gond. Tehát az lenne a kérdésem, hogy kell beállítani az AVR Studióban ezeket a biteket??
(#) Topi válasza dB_Thunder hozzászólására (») Ápr 6, 2009 /
 
Bővebben: Link

"Fuse bitek:" szekció.
(#) Steven19 válasza Topi hozzászólására (») Ápr 6, 2009 /
 
Helló. A belinkelt oldalon nem látható kép arról hogyan kell beállitani ponyprog2000-ben, illetve AVR Studioban.
Nem kérdeznék meg ezt újra meg újra ha raknál képet rolla.
üdv.
(#) dB_Thunder válasza Steven19 hozzászólására (») Ápr 6, 2009 /
 
Igen egy kicsit másként néz ki a fuse bitek beállítása a két programba. Az Avr Studióban legördülő menüben lehet választani a kvarcot, a Ponyban csak pipálni lehet(ha jól emléxem).
Illett volna megtalálnom a leírásban a fuse beállításokat, de így estefele már azt sem látom ami kiszúrja a szemem

A BOD gondolom a BODEN akar lenni a Stúdióban.
Ezt a SUT-ot tegyük helyre mert nem világos nekem
Az AVR Studióban "egybe" van a SUT és a CKSEL, SUT_CKSEL néven

Egyébként már működik mind3 programozó, de abban még mindig nem vagyok biztos, hogy a legjobbra állítottam a fuse biteket.

Ha valaki tudna nekem valami jó leírást(lehetőleg magyarul) ahol az AVR-ekről lehetne alapfokon tanulni, (mert nagyon láma vagyok ezen a téren) kérem ossza meg velem!
(#) Steven19 válasza dB_Thunder hozzászólására (») Ápr 6, 2009 /
 
Helló. Jól emlékszel. Másrészt a cikk irójának meg képet illett volna ezekről a beállitásokról feltenni amivel illusztrálni tudta volna ja és mind a két programban megmutathatta volna. Nekem privátban csak annyit irt hogy ezt ő már annyiszor leirta már a fórumba. De könyörgöm az ehhez kapcsolódó fontos információknak hol a helye? Szerintem a hozzátartozó cikkben ha jól tudom kép is van erről a témában, de a kép nincs a cikkben és annak ott lenne a helye.
(#) Topi válasza Steven19 hozzászólására (») Ápr 6, 2009 /
 
Ha valaki mellékel nekem PonyProg-ot akkor szívesen felteszem.
De eddig kétszer próbáltam használni és vagy a HW vagy a SW miatt teljesen képtelen volt kommunikálni.

Ui: Ezt a szemrehányós stílust nem nézem jó szemmel. Nem kötelességem semmit tenni, és hogy "illett volna" meg "mind a két programban megmutathatta volna" ezt kétlem. Nem kötelességem cikket írni, nem kötelességem semmi. Nem tűröm ezt a stílust, amit ha tovább folytatsz, díjazni is fogok.
(#) dB_Thunder válasza Topi hozzászólására (») Ápr 7, 2009 /
 
Topi ! Valóban nem kötelességed ezeket megtenni, mindenesetre sok kezdőnek hirtelen kevés az az infó.
És sem a programozó cikkében taglalnám e beállítások mikéntjét ! Erről szerintem lehetne (kellene )írni egy külön cikket !
Így utólag már leesett, hogy kell beállítani a fuse biteket, de mivel nem értem pontosan mi micsoda, valószínűleg 1 hét múlva megint gondolkodhatnék rajta

A Pony-t letöltheted innen.

A mellékletben pedig a "kábel" amivel programoztam.
(#) szilva válasza dB_Thunder hozzászólására (») Ápr 7, 2009 /
 
Én nemrég építettem egy AVRdoper-féle cuccot. Gyakorlatilag az USBasp hardver kicsit átformálva és kibővítve, az AVRdoper firmware pedig lefordítható az USBasp hardverre. Mondjuk a kibővítés miatt kicsit bele is nyúltam a firmware-be, majd megpróbálom egy leírásocskába összeszedni a dolgokat. A linkelt képen felül látható az eredeti USBasp egyik megvalósítása, alul az általam átalakított. Jelenleg mindkettőn AVRdoper fut, az egyikben mega88, a másikban mega8 dolgozik.

A mellékletekben csatolom a mega8 és a mega88 fuse bitjeit is, amivel nálam tökéletesen működnek a programozók.
(#) dB_Thunder hozzászólása Ápr 7, 2009 /
 
Megint helló mindenki!

Most vagyok ott hogy ..
Mert pucoltam a Doksik mappában, és azóta nem fordít az AVR Súdióm !
hibaüzi ez:
make: Makefile: No such file or directory
make: *** No rule to make target `Makefile'. Stop.
Build failed with 2 errors and 0 warnings...

Elolvastam a masterfox leírását a WinAWR-ről, és az csak feltette az i-re a pontot.
Mert:
1; a libusb-nél melyiket kel letölteni és azt hogy kell telepíteni ? ?
"; C:\WinAVR....\bin könytárban még véletlenül sincs giveio.bat helyette találtam install_giveio.bat file-t de ez sem oldotta meg a gondomat.

Leginkább a libusb telepítése érdekelne, ha egyáltalán kell nekem az a "progi", mert nem hinném hogy fel lett volna telepítve... Illetve hogy tudnám megoldani hogy ne dobjon ilyen hibaüzit?

(már mindent leszedtem és újratelepítettem az sem segített )
(#) szilva válasza dB_Thunder hozzászólására (») Ápr 7, 2009 /
 
A projektkönyvtárat, amiben dolgoznál, nem törölted le? Szerintem ez nem giveio-s probléma, egyszerűen nem talál valami file-t, amit keresne.
(#) dB_Thunder válasza szilva hozzászólására (») Ápr 7, 2009 /
 
Közbe megoldottam!
Mivel új project-ek keztem (törölgetés után) ezért az biztos megvolt.
A gond a winavr-ben volt. uninstall után még rákerestem hagyott e valami "szemetet" maga után, persze igen, ezeket is száműztem a winyóról. Majd újratelapítettem és most megy..
(#) Slope válasza Steven19 hozzászólására (») Ápr 7, 2009 /
 

Nem hiszem, hogy a cikk írójának bármi is kötelessége lenne. Pláne nem minden létező programban megmutatnia a beállításokat. Ha nem megy, akkor azt a programot kell használni, amit a cikk írója javasol, vagy bemutat. Minden különc elgondolást egy cikkbe sem lehet összegyűjteni.
Mellesleg nem óvoda... mindennek utána lehet nézni, pláne ha az illető önállónak érzi magát.
Túl nagy lett az arc itt mostanában...
(#) rigidus hozzászólása Ápr 7, 2009 /
 
Sziasztok,

Egyszeru impulzusgeneratort vagy tetszoleges mintakat ado jelgeneratort szeretnek epiteni kb. 1mHz es 50MHz koze. Terveim szerint AVR mikrokontrollerrel szeretnem megvalositani mivel leginkabb ehhez vagyok felszerelkezve valamint az hogy impulzus- vagy jelgenerator lesz-e az igazabol azon mulik mit lehet kihozni az AVR-bol.

A kerdesem az volna, hogy milyen (beszerezheto) AVR-t javasolnatok erre a celra?

A valaszokat es a segito szandekot elore is koszonom.
(#) ATtiny válasza rigidus hozzászólására (») Ápr 7, 2009 /
 
Az 50Mhz felejtős. Csak nagy trükkökkel lehetne ezt AVR-ből kihozni. Ahoz, hogy 50Mhz -es kimeneti jelet kapjál az AVR-nek minimum 100Mhz -en kell mennie, mivel 1 utasítás = 1 órajel. Bármilyen kimeneti digitális jel egy felfutó és 1 lefutó élből áll. Ami minimálisan 2 parancs. A komolyabb AVR-ekben lehet gondolkodni az SPI dupla sebességü módján. De ez is igen mesze van az általad elérni kivánt frekitől. Szerintem ehez sokkal jobb egy FPGA.
(#) rigidus válasza ATtiny hozzászólására (») Ápr 7, 2009 /
 
Koszonom, meggyoztel. Milyen FPGA-t javasolnal aminek a programozasahoz minimalis hardver kell es C vagy C++ nyelvek hasznalata megoldott?

Koszi ismet.
(#) rigidus hozzászólása Ápr 7, 2009 /
 
Ok, beleneztem az FPGA-k vilagaba. Azt hiszem, hogy ez az MCU-ktol vagy DSP-ktol picit messze eso dolog. Sajnos nem nagyon van ra idom, hogy beleassam magamat mivel "eletmento" lenne, ugyhogy valszeg valamilyen DSP-vel fogom megoldani.
(#) ATtiny válasza rigidus hozzászólására (») Ápr 7, 2009 /
 
FPGA vonalon Altera vagy Xilinx jöhet számításba, izlés dolga, kinek melyik tetszik. Mind a 2 gyártónak van ingyenes IDE-je. A fejlesztő panel már nem lesz ingyenes... sőt Xilinx -nél kimondottan drága egy normális fejlesztői készlet. A C-t nyugodtan elfelejtheted. Az nem FPGA tervezésére való. Nézz körül neten van bőven anyag FPGA témában pl. kiindulásnak Bővebben: Link
(#) wg_kezdo hozzászólása Ápr 8, 2009 /
 
AtMega88
Ennek az adatlapján találtam ilyet:
- Real Time Counter with Separate Oscillator

Ez mit jelent valójában? (lefordítottam, lehet, hogy olyan pontos lenne, hogy külső kristály nélkül is lehet órát üzemeltetni vele?)
Éppen egy olyan vezérlőhöz kell ami este hét után becsuk egy ajtót, ha a lakó (egy nyúúúúúúl) bent van a ketrecben.
Namármost, minden készen áll csak az óra része nem így már azon gondolkodtam, hogy sötétedéshez kötöm.....
(#) Slope válasza wg_kezdo hozzászólására (») Ápr 8, 2009 1 /
 
Kristály nélkül szerinted mégis mitől lenne pontos? Csinálhatsz akármilyen timert, ha az órajele sántít akkor megette a fene. A timer csak annyira pontos, mint az azt meghajtó órajel.

Szóval szerintem ezt fordítsd:
"The Asynchronous Timer clock allows the Asynchronous Timer/Counter to be clocked directly
from an external clock or an external 32 kHz clock crystal. The dedicated clock domain allows
using this Timer/Counter as a real-time counter even when the device is in sleep mode."

Üdv!
(#) gtk válasza wg_kezdo hozzászólására (») Ápr 8, 2009 /
 
Kulso kvarc nelkul Timer CTC-vel tudod megoldani az 1mp alapot, de ez a belso oszci pontossagatol fog fuggeni.
Itt van ket lehetseges megoldas, egyik kulso kvarccal, masik nem.
  1. #375512 #375502
(#) wg_kezdo válasza Slope hozzászólására (») Ápr 8, 2009 /
 
Mondjuk attól, hogy beépítenek egy kvarot ami pontos? Mit tudom én, ha tudnám akkor nem kérdeztem volna nem? (LOGIKA)
[Komolyan úgy leszólják már az embert mintha szakember lennék nem hobbi szinten érdeklődő]
Ami nektek evidens az nekünk kezdőknek talán nem az.........

Szóval:
Vettem külső kristályt, de mivel kevés a helyem jól jött volna, ha nincs rá szükség, de akkor ezek szerint ez mást jelent és nem azt, hogy valós idejű időzítő vagy hasonlót.

Köszönöm a választ.
Következő: »»   117 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem