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   89 / 840
(#) Steven19 válasza Topi hozzászólására (») Dec 31, 2008 /
 
tudnál nekem eggy HEX fájlt mellékelni ami szerinted jó? És a 3 fajta 9.6MHz közül melyiket állitsam be? (AVR Studio 4.15 Build 623) Belső RC-n van És ha berakom a CLKDIV8-at akkor lassabban villog, de ugyanúgy össze-vissza.Köszi a válaszod előre is.
(#) kavkar válasza kiborg hozzászólására (») Dec 31, 2008 /
 
Arra figyeltél hogy előbb a magasabb helyiértékű byte-t küldi, aztán meg az alacsonyabbat?
nemtom asm-ben hogy van, de úgy látom h kb úgy mint c-be szal ha TWCR-be (1 < TWINT) (1 < TWEN) (1 < TWEA) -et raksz akkor fog ack-t küldeni ha csak (1 A masterség onnantól fogva hogy te indítod a küldés/fogadást már el van döntve.>>>>>
(#) kavkar válasza kavkar hozzászólására (») Dec 31, 2008 /
 
nah megbolondítja a fórumot a 1< jel,eh..
szal ha csak (1 < TWINT) (1 < TWEN) -t raksz be akkor meg NACK lesz, a NACK csak annyi hogy nem küld ACK-t.>>>
(#) Topi válasza Steven19 hozzászólására (») Dec 31, 2008 /
 
Vedd ki a CLKDIV8-at, azt írtam, nem hogy betedd. 9,6MHz-ből a legnagyobbat. Legnagyobb Start-up Time stb.
HEX fájlt úgy fordítsd le, ahogy az első részben van. Procit pontosan beállítva, optimalizációt Os-re vagy O1-re téve, F_CPU-t beírva!
(#) kiborg válasza kavkar hozzászólására (») Dec 31, 2008 /
 
Szia!

Köszi a NACK-ot.
Persze hogy tudom, hogy a felső byte-ot küldi először
Módosítottam is ennek megfelelően a progit.
Illetve beletettem egy STOP funkciót is, de az nem működik valamiért. (20as kóddal tér vissza, hogy nem kapott acknowledge-t)
Két kérdés még:
Ha elindítom a konverziót, akkor is ki lehet olvasni ugye ? (tehát nem kell megállítanom)
Másrészt, ha küldök start v. stop feltételt, ahhoz nem kell először hozzáférnem a config registerhez ?
Elég csak simán a start jel (EE hex) ? és annyi ?

Ja meg jut eszembe: a felső byte: 91h, az alsó byte: 0Fh.

Vélemény ?

Üdv Kiborg (jut eszembe: BUÉK!!! )

homero.txt
    
(#) Steven19 válasza Topi hozzászólására (») Dec 31, 2008 /
 
Mind1. Lehet az XP-t kéne újratelepitenem. Legmagasabb alatt ezt érted : "Int. RC Osc. 9.6 MHz; Start-up time: 14 CK + 64 ms" ? Másrészt forditani már tudom a forráskódot nem is azzal van a gondom. Hanem a fuse bitekkel van gondom, mivel AVR studioban mutattad be akkor legalább az ATtiny13-nak is mutasd be a beállitását ne csak az ATtiny45-nek akkor legalább tudnám hogy merre induljak el hogy hol lehet a gond mert a fényerőszabályozós LED már működik az sem volt eggy darabig tökéletes mivel a videóhoz képest nállam gyorsabban futott le a PWM.Na helló.
(#) gerry hozzászólása Dec 31, 2008 /
 
Az lenne a kérdésem, hogy léteznek e alternativ ISP lábkiosztások?
Találtam egy ISP csatlakozást egy kapcsoláson, előszedve a Topi féle USB-ISP programozó lábkiosztását, kiméregettem, hátha ugyanaz, de nem is hasonlit.
Az lenne a kérdésem, hogy tönkre mehet e a proci, ha nem a megfelelő lábakat kötöm össze az ISP és a kapcsolás között. A proci tipusa lényegtelen, egy digitális beltéri az áldozat
(#) kavkar válasza kiborg hozzászólására (») Jan 1, 2009 /
 
Elképzelhető hogy kell már ms neki hogy az első konvezrió végrehajtódjon, a szenzor adatlapjában kéne megnézni, mindenesetre ha beleraksz pár ms-t abból baj nem származik.
Aztán futhat persze folyamatosan, abból baj nem származik, max többet fogyaszt, de az csak elemes eszközöknél kell figyelembevenni.
A másofik részt nem telj. értem, tehát a szenzornak van egy config registryje? Akkor hasonló ahhoz amit én használtam (LM75, LM73). Ha igen akkor elvileg úgy kell csinálni hogy start jel, aztán egy írás, amivel kiválasztod a regisztert, utána ismételt startjel, és kiolvasni a temp. datát (már ha a temp regisztert választottad ki). De ahogy elnézem a így csináltad, de a nack nem úgy működik ahogy gondoltad, most nézem a kódod. Tehát még mielőtt kiolvasod a byte-t már úgy kell a twcr-be mozgatni az értékeket hogy ezt most kell majd akz-zni vagy nem kell mejd,tehát azt nem te adod ki közbetlenül hanem azt mondod az atmega-nak hogy olvass ki egy bytet és ack-zd is, és akkor azt csinálja kövi körbe vagy azt hogy olvass ki egyet és nack-old. szal az ott biztos nem jó.
(#) guest001 hozzászólása Jan 1, 2009 /
 
Üdv!

Az első atmeles fejlesztésem legelején egy problémába ütköztem, ebben kérnék egy kis segítséget.
A problémám az lenne, hogy nem látom debugolás közben a lokális változók értékeit, csak a globálisakat tudom követni watch-ban (AVR studiót, winavr-t használok).
Az alábbi rövid kódban csak az 'a' változó értékét látom watchban (a többi 0):

  1. int a=0;
  2.  
  3. int main(void)
  4.    {
  5.    int b=5;
  6.       while (1)
  7.          {
  8.          int c=10;
  9.          if (b==5)
  10.             asm("nop");
  11.           else
  12.              asm("nop");
  13.          ++a;
  14.          ++b;
  15.          ++c;
  16.          asm("nop");
  17.          }
  18.    return 0;
  19.    }


Valószínűnek tartom, hogy a .bss section környkén van a jelenség oka, de bármit is próbáltam a Project/Configuration options/Memory settings ablakban megadni, a helyzet nem változott...
Milyen segment beállításokat alkalmazzak, illetve mit tegyek, hogy a fenti probléma megoldódjon?
Válaszokat előre is köszönöm!
(#) Topi válasza Steven19 hozzászólására (») Jan 1, 2009 /
 
Idézet:
„AVR studioban mutattad be akkor legalább az ATtiny13-nak is mutasd be a beállitását ne csak az ATtiny45-nek akkor legalább tudnám hogy merre induljak el”


Elmondtam, hogy 9600000 az F_CPU és ATtiny13 a processzor. Más beállítás nincs az AVRStuidóban.

"Bemutathattad volna" stílus: A Cikk nem arra van, hogy én mindent az illető szájába rágjak. Nem érzem úgy - ellentétben hogy te komolyan ezt állítod - hogy az én hibám, hogy neked most nem működik, és én hibáztam mert nem mutattam be egy totál evidens dolgot. Sőt... Itt hozzászólásban is leírtam, mit kell tenned.

Ezzel a nyájas, kedves stílusoddal igencsak el tudod venni az ember kedvét attól, hogy ilyen cikkeket írjon és segítsen másokon. Gondolkodj már hallod mielőtt leírsz valamit.

Idézem:
Idézet:
„Na helló.”

Hánynom kell a stílusodtól. Drágám, nem a te hátsódból jön a napfény.
(#) san398 válasza guest001 hozzászólására (») Jan 1, 2009 /
 
Ennek itt a helye szerintem: Bővebben: Link Itt biztos segítenek.
(#) Lucifer válasza gerry hozzászólására (») Jan 1, 2009 /
 
Az ISP és a JTAG nem ugyanaz. Az ISP elsősorban programozásra lett kitalálva, a JTAG meg sokminden másra. Lehet vele gyártótól függően regisztereket olvasni, átírni az adott proceszorban. A JTAG-nak van egy halom ipari szabvány által meghatározott lábkiosztása.
Guglizz rá, és valószínűleg a táp, GND kimérése után be lehet lőni vajon melyik a neked megfelelő.
(#) kiborg válasza kavkar hozzászólására (») Jan 1, 2009 /
 
Szia!

Az idővel nem valsz, hogy gond lenne, mert lépésenként hajtom végre a programot, tehát a pár ms várakozás megvan.

Csatoltam a ds1624 datasheet-jet, abból megérted, hogy miért írtam config byte-ot.
Viszont amit az (LM75,LM73) után írtál, azt egyáltalán nem értem.
Mit kell a twcr-be mozgatni ? Mit kell mondani, hogy ACK vagy NACK legyen automatán ? SZóval a második bekezdésed nekem sötét.

Légyszíves nekem kicsit érthetőbben.

Köszi: Kiborg

A két hexa érték a hozzászólás végén az, hogy ezt a két értéket olvasom ki a chip-ből.
Felső: 91h, alsó 0Fh vagy kézrátétel után felső:91h, alsó 10h.
A datasheetben az áll, hogy az alsó byte 3 legkisebb helyiértéke mindig 0, akkor nekem hogy a fenébe lett ott 1-esem ???

DS1624.pdf
    
(#) zsuscsinyo hozzászólása Jan 1, 2009 /
 
Sziasztok! Az a kérdésem lenne, hogy megoldható-e a WinAvr vagy más fordítónak a az Include mappában található Header fájlok, CodeVision fordítóba való átmásolása? Mert vannak gondjaim a meglévőkkel, az EEPROM-ot mégcsak véletlenül sem tudom kezelni a beépített rutinnal. Az LCD érdekes dolgokat művel, viszont szimpatikus a Codevision és nem szeretnék még elpártolni tőle A válaszokat, tanácsokat előre is köszönöm!

Üdv!
(#) kavkar válasza kiborg hozzászólására (») Jan 1, 2009 /
 
Aham, értem.
szal úgy van ugye hogy van az atmegába a twcr aminek mondod hogy mit is akarsz, most a read_temp-et nézve: első lépésként a TWCR-be berakod a TWINTet a TWSTA-t meg a TWEN-t aminek következtébe kiadja a start jelet amit utána leellenőrizel.

Aztán jön a szenzornak a control byte-ja (magyarán a címe aminek a vége 1 vagy 0 attól függően hogy írsz vagy olvasol)
berakod a WTDR-be az adatot aztán TWCR-be megmondod neki hogy küldje el.

Aztán a command protocol ami megint jó...

Aztán küldessz egy új start jelet, ok.

Újra elküldöd a control byte-ot , ok.

Viszont mikor fogadni akarsz az már nem jó, ott is hasonlóan kell eljárni mint eddig (vagy pont nem hasonlóan), szal TWCR-be megmondod hogy most akarsz fogadni egy byteot és hogy ha fogadta akkor küldjön ack-t
tehát a 165. sorba először TWCR- be be kell rakni a TWINT, TWEN, TWEA biteket, aztán wait-elni hogy meglegyen a vétel, a TWDR-ből kiolvasni a beérkezett adatot.

utána kell jönni az alsó byte-nak ami hasonlóan megy csak itt már a TWCR-be csak TWINT, TWEN bit-ek kellenek ezzel jelezve hogy ne küldjön ack-t tehát nack legyen.
utána megint várni, és utána kivenni a TWDR-ből kivenni az adatot,

utána küldeni kell még egy stop jelet ami csak annyi hogy TWCR be TWINT,TWEN,TWSTO bitek kellenek.


Szerintem a mit kiolvastál annak az 1. byte-ja az vmi random, a 2. byte-ja meg a felső.
(#) kavkar hozzászólása Jan 1, 2009 /
 
sőt az 1. byte a control byte, ami érthető is, hiszen nem raktál semmit a twcr-be és úgy olvastál ki, tehár a twdr nem változott.
(#) kiborg válasza kavkar hozzászólására (») Jan 2, 2009 /
 
WOW ! :worship:

Működik. köszönöm szépen a segítséget.
Olyan kérdésem lenne még, hogy amikor elküldöm a STOP jelet a buszon, akkor miért nem működik az a várakozási ciklus, mint ami előtte van ?( pl: a wait3)
Nem áll vissza TWINT 1-be, hogy kilépjen a ciklusból. De miért ?

Kiborg

ui: hogy lehet pontot adni ???
(#) kavkar válasza kiborg hozzászólására (») Jan 2, 2009 /
 
örülök hogy megy, szívesen
stop jel után a TWSTO bitet kell nézni a TWCR -be, amíg 1 addig még nem jó ha 0-ra vált akkor kész.
(#) kiborg válasza kavkar hozzászólására (») Jan 2, 2009 /
 
Hát ez is jó :worship:
Még egyszer köszi a segítséget.

Következő lépés az lesz, hogy felfűzök több eszközt a buszra és máris kész a kinti-benti-vízhőfok-kazánhőfok figyelő rendszerem.

Maximálisan milyen hosszú lehet egy i2c busz ?

Kiborg
(#) kavkar válasza kiborg hozzászólására (») Jan 2, 2009 /
 
Mármint kábelhossz? vagy db eszközre?
(#) kiborg válasza kavkar hozzászólására (») Jan 2, 2009 /
 
A kábelhosszra gondoltam.

Azt tudom hogy elvileg max 127 db eszköz pakolható fel a buszra, de az nekem nagyon sok.

Kiborg
(#) kavkar válasza kiborg hozzászólására (») Jan 2, 2009 /
 
Hm ezt nemtudom, ha más jobbat nem mond, ki kéne próbálni hogy sda meg scl elé bepakolsz vmi próbaellenállást (pl 0.5, vagy 1 ohm) és hogy úgy megy e, aztán ha megvan hogy meddig jó, akkor a réz fajlagos ellenállásából a vezeték átmérőjéből már meg lehetne mondani a maximális hosszat.
(#) trudnai válasza kavkar hozzászólására (») Jan 2, 2009 /
 
Bocsanat, hogy bele kotnyeleskedem, de az I2C nem nagytavolsagu halozatokra lett kitalalva - es hat nemcsak a vezetek ellenallasa all vagy bukik a dolog. Vagy RS482 vagy CAN bus-t alkalmaznek.
(#) kiborg válasza kavkar hozzászólására (») Jan 2, 2009 /
 
A leírásokban 400pF szerepel, mint maximális buszra pakolható IC kapacitás.
Ezzel nem sokat tudok tudok kezdeni az a baj.
Mindegy, majd próbálgatom.

Üdv Kiborg
(#) Babó22 hozzászólása Jan 2, 2009 /
 
Üdv mindenkinek! A kérdésem az lenne, hogy Linux kompatibilis-e a HEstore-ban kapható AVR-ISP programozó KIT? ( Ubuntu Linux 8.10-re kellene). Ha igen, milyen csomagot kellene felpakolni?
(#) Sir-Nyeteg hozzászólása Jan 3, 2009 /
 
Üdv!
A HEStore-os AVR-ISP programozóhoz fell kell telepíteni a libusb drivert? Ha fel kellene, és nem teszem fel, akkor mi lesz a hátrányom?
(#) vzoole válasza Sir-Nyeteg hozzászólására (») Jan 3, 2009 /
 
Csak AVRStudio (ami alapból felteszi az usb cuccokat is) és winAVR kell.
(#) sprofan hozzászólása Jan 3, 2009 /
 
Sziasztok!
Full kezdő vagyok, ezért merek megkérdezni olyat hogy ATMEGA8-at mivel lehet felprogramozni (hardwer - nem usb)? Illetve ha van egy kész .hex fájlom akkor azt milyen progival lehet írni?
(#) TavIR-AVR válasza sprofan hozzászólására (») Jan 3, 2009 /
 
LPT portos STK200 a HW.

SW-ből:
AVRDuDe,
PonyProg,
Bascom...
(#) sprofan válasza TavIR-AVR hozzászólására (») Jan 3, 2009 /
 
Tehát itt a felső ugye?
Bővebben: Link
(Eddig nem találtam meg, csak most ahogy a program nevekre rákerestem)
Következő: »»   89 / 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