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   46 / 840
(#) digimann válasza TavIR-AVR hozzászólására (») Jan 19, 2008 /
 
Én is "gyedi" csatlakozót használok :schmoll2:
(#) Reggie válasza TavIR-AVR hozzászólására (») Jan 20, 2008 /
 
"A mai alaplapokon az a régi védelem, hogy 700-750 mA áramfelvétel esetén lekapcsol - a múltté. Nálam a régi PII-COMPAQ alaplap még tudja."
Ez nem feltetlen igaz, egy rendesen megtervezett eszkoznel szamolni kell vele, hogy egy usb port legfeljebb 500mA-t tud leadni...
(#) Reggie válasza TavIR-AVR hozzászólására (») Jan 20, 2008 /
 
Lehet kapni PCMCIA-s LPT adaptert. Az be tud ulni a szabvanyos IO portokra...
(#) TavIR-AVR válasza Reggie hozzászólására (») Jan 20, 2008 /
 
Igen, az USB (elvileg) 500 mAre van kitalálva. A Compaq is e felett kezd kiabálni h túlterhelt. De 700 mA-ig még hagyja használni.

Az új laptopokon viszont 300-350mA a limit! Utána is megy, csak a fesz leesik.
Sőt. ha kevés az USB, akkor a kreatív felhasználók USBHUB-ot raknak és azt hiszik, h az is elmegy mindennel... Ezért USBre tervezett mikroelektronikát 100-150 mA fölé nem merek tervezni, vagy a leírásába kis lista: önálló USBre rakható csak....
Jó kis leírás USBről a USB in nutshell leírás. Abban minden benne van (1.0, 1.1, 2.0).
De hogy AVR is legyen:
SoftUSB slave/client emulációs projektek vannak a Obdev oldalon....
(#) Dudus válasza TavIR-AVR hozzászólására (») Jan 20, 2008 /
 
A saját tápos USB HUB - ok ( én is ilyet használok biztonsági okokból) 5V 2A -es táppal tudják minden portjukon az 500mA -t.

Notebook és notebook között nagy különbségek vannak, a normálisan kitalált márkásabb darabok leadják az 500mA / port áramot.
(#) gtk válasza huba hozzászólására (») Jan 20, 2008 /
 
Belso orajelet hasznalsz? Hany MHz-en?Csak 1 MHz-ig pontos es hasznalhato (allitolag) pl. SPI orajelkent.
(#) huba válasza gtk hozzászólására (») Jan 20, 2008 /
 
Külsö kristály 11,059200Hz. Nemtudod hol találok spi-hez függvénykönyvtárat, vagy valami példaprogramot? Külsö fash-el szeretnék kommunikálni.
(#) Topi válasza huba hozzászólására (») Jan 20, 2008 /
 
Használj Procyon libeket. Elég sok időt lehet megspórolni velük, de csínyán kell bánni az idegen LIB-ekkel... csak idő spóroláshoz használd, ne tudás spóroláshoz.

Ha úgy használsz gyári, vagy külső libeket, hogy nem tanulmányoztad ezerrel és értetted meg, akkor nagyon megszívhatod egyszer hibakeresésnél!

Tehát ha használod, előbb tanulmányozd a forráskódot.

Bővebben: Link (Procyon - AVRLib)
(#) huba válasza Topi hozzászólására (») Jan 20, 2008 /
 
Köszönöm jó kis gyüjtemény, de az spi-megoldása nemigazán tetszik. Igaz hogy rugalmas de nem mindig előny. Még utánanézek a dolgoknak.
(#) digimann válasza huba hozzászólására (») Jan 21, 2008 /
 
Hello!

Nekem sikerült működésre bírni az SPI-t 2db tiny2313 között. Én asm-ben írtam a progit, de c-ben is meg lehet oldani. Nem tudom te milyen AVR-t használsz, de gyanítom ugyan olyan az SPI mindegyikben. Az adatlapban szereplő asm példát áttanulmányozva hamar rájöhetsz, hogy nem CSAK az USICLK-t kell "beírkálni" a control regiszterbe.

Más: nálam lefagyott az AVR ha épp nem volt "kivel" kommunikálnia

Megint más: akkor is lefagyott, mikor nem volt beállítva a kimenet data direction bitje.

A "fagyás" végtelen ciklus eredménye, ami az asm példából eredt ---> nem jelent meg az overflow interrupt flag ---> nem történt shiftelés

Üdv!
(#) huba válasza digimann hozzászólására (») Jan 21, 2008 /
 
Attiny2313-at használok most kísérletezéshez. Asm-be elég gyenge vagyok, nyáron tanultam valamenyit de azóta elmult. Létszives kommenteled nekem az adatlapban található asm-kódot?
Szóval ajánlott ha rajtavan a céleszköz akkor megcsinálom neki a 3V-os tápot és az adatvonalak osztását.
(#) sargarigo hozzászólása Jan 21, 2008 /
 
Üdv!

Bascomban szeretnék sztringet kezelni. Olvasgattam a tavir-os dolgokat, de ott eléggé elnagyoltan van kezelve ez a dolog.

Pár előfeltétel:

dim xx1(32) as byte ' soros hw-rutin kezeli
dim ws as string * 32 ' eredmeny string

Az xx1-be kerül egy karakterlánc, amit egy mobiltelefon (siemens c35i) küld át kábelen. Tipikusan így néz ki:

"
RING

+CLIP: +3670telefonszám, 145
"

Ebből kellene kivadásznom a telefonszámot, és áttenni ws-be későbbi összehasonlítás céljából. Nem tudok dűlőre jutni vele, mert mindig valami baja van a fordítónak. Általában az okozza a gondot, hogy az egyik byte-tömb, a másik meg sztring. Már az is győzelem lenne, ha tudnám a sztringet indexelni majd karakteresen összehasonlítani, de eddig nem találtam rá példát. Remélem valami guru megszán!

Krisz
(#) TavIR-AVR válasza sargarigo hozzászólására (») Jan 21, 2008 /
 
Dim xx1(32) as byte az biza egy 32 elemű TÖMB.
XX1-be _nem_ karakterlánc kerül, hanem byte értékek!
Az XX1-ből tessék stringláncot csinálni.

Vázlatosan:
dim string32 as string*32
String32=""
For I=1 to 32
tempstring1=chr(xx1(I))
string32=string32+tempstring1
next I
telefonszam=mid(string32,19,9)

Fontos! xx() nem lehet 0 értékű, mert a sztringlánc vége jel a Bascomban!

A TavIR Bascom oldala a programozásról szól és nem a Basic alapokat taglalja. Az az 1. és második fejezet linkjein érhető el .
(#) digimann válasza huba hozzászólására (») Jan 22, 2008 /
 
Gondolom a master kell...

SPITransfer: ;Szubrutin neve, feje
out USIDR,r16 ;adat az usi data regiszterbe az r16 általános regiszterből
ldi r16,(1< out USISR,r16 ;regisztert a status regiszterbe
ldi r16,(1< SPITransfer_loop: ;egy címke az átvitel ciklus fejeként
out USICR,r16 ;itt megy a control regiszterbe aminek kell...
sbis USISR,USIOIF ;teszteli az usi ovf int flaget, ha 1 lesz a flag, akkor az utána következő parancsot kihagyja
rjmp SPITransfer_loop ;relatív ugrás az SPITransfer_loop címkéhez
in r16,USIDR ;a kapott bájtot r16 reg-be tárolja
ret ;visszatérés a szubrutinból


A control regisztert fejlesztéskor nem árt alaposan áttanulmányozni

Hello!

U.I.: Én asm-et az adatlap "Instrucion Set Summary" részéből tanultam >>>>>>>>>>
(#) huba válasza digimann hozzászólására (») Jan 22, 2008 /
 
A rendszer benyelte a kód egy részét. Kimásoltam az oldal forrásábol hogy legyen teljes, másnak is elérhető.
  1. SPITransfer:     ;Szubrutin neve, feje
  2. out USIDR,r16     ;adat az usi data regiszterbe az r16 általános regiszterből
  3. ldi r16,(1<<USIOIF)     ;betölti az az usi ovf int flag-et a regiszterbe
  4. out USISR,r16     ;regisztert a status regiszterbe
  5. ldi r16,(1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC)     ;ez itt a lényeg számodra, nem fogom felsorolni, de ezt mind betölti az általános regiszterbe, és ezt foja majd minden ciklusnál bepumpálni a control reg-be
  6.  
  7. SPITransfer_loop:     ;egy címke az átvitel ciklus fejeként
  8. out USICR,r16     ;itt megy a control regiszterbe aminek kell...
  9. sbis USISR,USIOIF     ;teszteli az usi ovf int flaget, ha 1 lesz a flag, akkor az utána következő parancsot kihagyja
  10. rjmp SPITransfer_loop     ;relatív ugrás az SPITransfer_loop címkéhez
  11. in r16,USIDR     ;a kapott bájtot r16 reg-be tárolja
  12. ret       ;visszatérés a szubrutinból
(#) sargarigo válasza TavIR-AVR hozzászólására (») Jan 22, 2008 /
 
Köszönöm szépen!

Igazad van, valóban nem a programozás a dolga az oldalnak, de nekem pont ez kellett volna.
Ellenben nagyon örülök, hogy van egy ilyen megoldás! Azt eddig is tudtam hogy mi a baj, csak azt nem, hogy hogyan lehet feloldani. Köszönöm!!!


A linkeket nem nem is láttam.. meg is nézem..
Krisz
(#) digimann válasza huba hozzászólására (») Jan 22, 2008 /
 
Ezt is csak második próbálkozásra sikerült produkálnom

Köszi!
(#) matrix64 hozzászólása Jan 23, 2008 /
 
C-ben programozok,most kaptam rá az avrasm-re.Egy rövid kérdésem lenne:egy macrót ahányszor meghívok annyiszor beépül a kódba ellentétben a subroutine-al,ami ugye egyszer .Mi történik ha macroból meghívok egy subroutint ? Az is annyiszor beépül ahány hívás van ? Kösz !
(#) digimann válasza matrix64 hozzászólására (») Jan 23, 2008 /
 
Hello!

Csak a hívás épül be.

Szubrutin hívásakor bedobja a verembe a visszatérési címet, és odaugrik a szubrutin elejére. Amikor a szubrutin végén megkapja a ret utasítást, gyakorlatilag a veremből kikapja a címet, és odaugrik.

Hali!
(#) matrix64 válasza digimann hozzászólására (») Jan 23, 2008 /
 
Szia ! Kösz ! Így a logikus ,valóban.
(#) deguss hozzászólása Jan 24, 2008 /
 
Sziasztok!

Találkozott már valaki olyan súlyos hibával, hogy AVRStudio 4 érvénytelen címre akar írni? Még hallom is szinte, hogy egy másik merevlemezre nyúl.
Fordításnál (Build+Run) ez jön, többször is.
Google nem segített sokat, még nem volt ezek szerint másoknak ilyen problémája.

Mi lehet szerintetek a baj? Fent van a 4.13-as verzió SP1 és SP2-vel.
Gondolom van AVRStudio Linux alá is, de támogatja az USB-s STK500-as programozót?
(#) MaSTeRFoXX válasza deguss hozzászólására (») Jan 24, 2008 /
 
Még nem találkoztam ilyennel, de létezik service pack az AVR studiohoz, azt felkraktad?
(Én winAVR-rel fejlesztek, a C fordító totál ugyanez, csak az AVR studió megkerülésével, ott még ilyen hiba nem volt...)
(#) matrix64 válasza deguss hozzászólására (») Jan 24, 2008 /
 
Szia ! Nekem gyanus az a C a háttérben.Nem Codevision C-t akarsz fordítani ? Nem hallottam ,hogy linux alá AVR studió létezne,sztem itt az XP-el lehet valami.
(#) MaSTeRFoXX válasza deguss hozzászólására (») Jan 24, 2008 /
 
Bocs, nem figyeltem... fent van az SP1 meg SP2.... Akkor nem tudom.
Linux alá van az AVR-GCC (ugyanaz a fordító mint a winAVR-ben meg AVR studióban). AVR-be programot feltölteni meg az AVR-dude programmal lehet ami meg ismeri az STK500 és STK500v2-es programozót is.

De létezik egy kontrollerlab nevezetű linuxos fejlesztőkörnyezet AVR-re, még nem próbáltam, de asszem nemsoká kipróbálom
(#) deguss válasza matrix64 hozzászólására (») Jan 24, 2008 /
 
Szia!

De, de CodeVision-ban írtam egy LCD kezelő rutint, meg ott ismerkedtem meg a C-vel AVR-re, most akarok áttérni avr-gcc fordítóra illetve használni az AVRStrudiot. A programot átírtam, de nagyon unszimpatikusnak tűnt, hogy a _delay_ms csak 200ms-ot tud maximum, és egy egyszerű saját delay fgv. meg lefagyott, vagy a fene tudja miért nem megy.

Valahogy így nézett ki:
  1. F_CPU = 16000000
  2. void delay_ms(uint ms){
  3. uint n;
  4.  while (ms--){
  5.   n=F_CPU/5000;
  6.   while (n--);
  7.  }
  8. }


De azt mondjátok, hogy WinAVR is tudja kezelni az STK500-as programozót? Mert akkor kipróbálom. Vagy lehet hogy egyből valami Linuxos után nézek. Csak Linuxon még kezdő vagyok, azt kicsit macera, hogy nem tudom olvasni az NTFS-t, meg még van pár ilyen kezdő problémám. Nah, csak lesz valahogy, megpróbálom, ha hazaérek.
(#) gtk válasza deguss hozzászólására (») Jan 24, 2008 /
 
  1. //delay max: 65535us
  2. void
  3. my_delay_us (uint16_t us)
  4. {
  5.   uint16_t i = 0;
  6.   for (; i < us; i++)
  7.     _delay_us (1.0);
  8. }
  9.  
  10. //delay max: 65535ms
  11. my_delay_ms (double ms)
  12. {
  13.   uint16_t t = (10 * ms);
  14.   while (t--)
  15.     my_delay_us (100);
  16. }


Hogy a fv-hivas idoket kikeruljuk erdemes makronak vagy inline-nak deklaralni a fv-eket (utobbi szinten ugy viselkedik mintha makro lenne, behelyettesit a hivas helyere)
(#) matrix64 válasza deguss hozzászólására (») Jan 24, 2008 /
 
Ha arra a C-re adtad ki a build-et ami ott van ,akkor nem csodálom hogy kiakadt a Studio
(#) MaSTeRFoXX válasza deguss hozzászólására (») Jan 24, 2008 /
 
Felraktam Ubuntura a kontrollerlabot. Ígéretesnek tűnik. Elég kultúrált, van benne hétszegmenses, meg pontmátrix lcd karakter tervező. Már sikerült benne fordítani, ismeri az STK500, meg 500v2-t, de nem égettem vele.
(#) deguss válasza MaSTeRFoXX hozzászólására (») Jan 24, 2008 /
 
Nagyon szépen köszönöm a jótanácsokat mindenkinek, most próbálkozok én is, hamarosan beszámolok.
(#) Lucifer válasza MaSTeRFoXX hozzászólására (») Jan 24, 2008 /
 
A kontorllerlab jó cucc, bár lenne rajta mit csiszolni. Füles forráskódböngészés, fájl hozzáadása megnyitás nélkül. Esetleg egy AVRStudio féle fuse égető menü, hogy ne lehessen oly könnyen kizárni magad. Na dehát erre van a nyílt forráskód Ha nem tetszik csináld meg magadnak.
Következő: »»   46 / 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