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   566 / 840
(#) killbill válasza csabeszq hozzászólására (») Szept 25, 2013 /
 
Idézet:
„Hát, sokunknak új volt ez az stdbool.h-s valami.”

Nekem is uj volt, de nem jelentettem volna ki, hogy nincs boolean tipus. Arra emlekeztem, hogy van valmi boolean, de a reszleteket nem tudtam, mert sosem volt ra szuksegem. Amikor 1992-ben C forditot irtam HD64180-as gepre, akkor meg nem letezett ez a tipus
Idézet:
„Leellenőriztem és ha uint8_t használsz bool helyett, akkor is ugyanazt kapod fordítási eredménynek, tehát lehet használni. Jobban olvasható lesz tőle a kód, de semmi pluszt nem rak hozzá”

Nem mindig ugyanazt forditja belole. A _Bool tipus, ahogy a neve is mondja, ketallapotu. Egy _Bool valtozo erteke csak 0 vagy 1 lehet. Pl. egy _Bool valtozoba barmit toltesz, ami nullatol kulonbozo, akkor 1 lesz a valtozo erteke. Nezd meg, hogy ebbol mit fordit: _Bool bb; bb = 10;
De eppen errol beszelek, hogy nem ez a modja a nyelv megtanulasanak, hogy hallasz valamit, akkor csinalsz egy gyors tesztet, es ezek alapjan kijelenetesz valamit. Azert irjak ezeket le, hogy ne kelljen tesztelgetni, probalgatni, aminek a vegen gyakran (mint most is) hamis eredmenyt kapsz.
(#) killbill válasza killbill hozzászólására (») Szept 25, 2013 /
 
Jo nagy butasagokat beszeltem. Szepen megvan az 5V a kondin (10mV szinusz van rajta), mikozben a terheleoaram a szimulaciomban 10 es 14mA kozott ugral 1MHz-cel, a betap oldalon meg szep egyenes az aram. Viszont az aggaszto, hogy bekapcsolas utan 16kHz-cen beleng az egesz. 0-10V kozott hintazik az elejen, es 5 ms alatt megnyugszik, mindezt egy 500 Ohm terheles mellett. Mondjuk ez a belenges nincs, ha eleve lassan all be az 5V az LC tag elott.
(#) gtk válasza killbill hozzászólására (») Szept 25, 2013 /
 
Jol beleelted magad. Gondolom az 500 ohm-ot u/i-bol (5v/10mA) vetted Lehet hogy a pillanatnyi aramfelvetel ennel nagyobb ?. Nehany 10..100µF meg hozzaadva szinte biztosan nem rezonal 16kHz-en.
(#) killbill válasza gtk hozzászólására (») Szept 25, 2013 /
 
Ugy szimulaltam, hogy a bekapcsolastol szamitott elso 5ms-ban 500 Ohm a terheles, utana meg 10mA/14mA valtakozik 1 MHz-cel kapcsolva. (En irtam a szimulacios programot.)
Ha 100mA es 10mA kozott ugral az aram, akkor mar 450mV szinusz lesz a tapon, az mondjuk eleg sok. De ennyi idore nem folyik 100mA. Ha csak kicsi (50ns) 100mA tuskek vannak, akkor csak +/-70mV a mozgas a tapon.
(#) Szabi1 válasza killbill hozzászólására (») Szept 25, 2013 /
 
Elnézéset, hogy megint írok, teljesen mindent deklaráltam lcd.h, lcd.c és csak hibát ír ki.
Idegességből csináltam egy új projectet, és ami a site-on van azt irtam bele, és include-oltam a "lcd.c"-t Bővebben: Link

A következő a hiba mind a 2 programnál amelyik ezt a lcd.c-t használta: (lcd.c-ben van a hiba)
error: 'PORTA' undeclared (first use in this function)
lcd.c:120: error: (Each undeclared identifier is reported only once
lcd.c:120: error: for each function it appears in.)

Azt nem értem, hogyha valaki ír valamilyen projektről a neten akkor miért nem tudja helyesen a kódot is megadni......
A hozzászólás módosítva: Szept 25, 2013
(#) Szabi1 válasza Szabi1 hozzászólására (») Szept 25, 2013 /
 
Letöltöttem egy másik lcd.h javított fájlt, most csak egy warining van: warning: large integer implicitly truncated to unsigned type
és egy 16ms os delay függvény miatt irja ki,
lebontottam két 8 ms os delayra és nincs warining
A hozzászólás módosítva: Szept 25, 2013

lcd.h
    
(#) kapu48 válasza Szabi1 hozzászólására (») Szept 25, 2013 /
 
Rákeresel itt a fórumon: WinAVR telepítése és használata

És az útmutatás szerint telepíted.
Open Project: Software\MyLCD.pnproj

És az eredeti forráskódod elsőre hibátlanul lefordul!
(#) gacserus hozzászólása Szept 25, 2013 /
 
Sziasztok,
Attiny25-t használok egy servo vezérlésre. A 3-as lábon (PB4) megy ki a OC1B vezérlő jel. Ugyanakkor a 2-es lábat (PB3) más kimenetre használnám DE azon megjelenik a OC1B negáltja.

HOgy lehet ezt feloldani, hogy lehet függetleníteni a PB3-t a PB4-től?

Gacserus
(#) TavIR-AVR válasza gacserus hozzászólására (») Szept 26, 2013 /
 
Kód?
Tipp:
- PB3 kimenetre állít (I/O)
- hibás a kódod
A hozzászólás módosítva: Szept 26, 2013
(#) killbill válasza gacserus hozzászólására (») Szept 26, 2013 /
 
Hello!
Ahogy en nezem az adatlapban, a GTCCR regiszter ket bitje hatarozza meg: COM1B1=1, COM1B0=1/0
Ebben az esetben az OC1B negaltat nem hajtja meg, csak az OC1B-t. Nezd meg az adatlapon, mert a COM1B0 bittol fuggoen negalja vagy nem az OC1B kimenetet.
(#) Sanyi87 hozzászólása Szept 26, 2013 /
 
Üdv ki olvassa soraim!
A problémám: Addig piszkáltam egy ATmega324P WDT-jét, míg odáig jutottam vele, hogy a RESET láb nem funkcionál. (Szóval nem sikerült belőnöm a WDT-t) Tehát nem tudom újra programozni. (Nem kontaktus hiba) Van ilyen? Van rá megoldás?
Köszönöm.
(#) Sanyi87 válasza Sanyi87 hozzászólására (») Szept 26, 2013 /
 
Bocsánat, kontaktus hiba volt. Gáz...
(#) norbigal hozzászólása Szept 27, 2013 /
 
Sziasztok,
Van egy kitshop.eu-s atmega128-as beépített JTAG-es panelem. Jó ideje nem használtam, viszont mikor legutóbb használtam még működött. AVR Studio 4.17-est használok, és használtam anno is.
A mellékelt képen látszik, hogy mikor debugolni akarom, akkor STK500-ként ismeri fel, és memória olvasási hibákat ír ki.
Próbáltam F11-gyel léptetni, de nem ugyan abban a helyben áll a debugger.
Tudom, a fuse bitek idézhetnének elő ilyen hibát, de egyáltalán nem nyúltam hozzájuk.

Próbáltam a programot egy T-Bird-ön is, ott viszont ugyan ez a program a lépésenkénti futtatásban úgy jelent meg, hogy csak a while(1) ciklusban lehet break point-ot elhelyezni.

Tudnátok segíteni, hogy mi lehet a baj?!?!

jtag.jpg
    
(#) Panhard hozzászólása Szept 28, 2013 /
 
Sziasztok! Használja valaki EZT a programozót 64 bites rendszerben?
A hozzászólás módosítva: Szept 28, 2013
(#) Panhard válasza Panhard hozzászólására (») Szept 28, 2013 /
 
Csak azért kérdem, mert képtelen vagyok drivert találni hozzá, ami működik az Atmel Studióval
(#) TavIR-AVR válasza Panhard hozzászólására (») Szept 28, 2013 /
 
Ki kell kapcsolni a driver aláírás ellenőrzést.
A hozzászólás módosítva: Szept 28, 2013
(#) Panhard válasza TavIR-AVR hozzászólására (») Szept 28, 2013 /
 
Köszi, így működik. Viszont ezt minden windows indításkor el kell játszani, ha használni akarom a programozót.
(#) vzoole válasza Panhard hozzászólására (») Szept 28, 2013 /
 
Sajnos igen...
Neten találtam egy leírást amivel végleg ki lehetne kapcsolni, de azzal nem működött.
Ha találsz rá megoldást írd már meg légyszíves.
(#) szalaisanyi hozzászólása Szept 28, 2013 /
 
Sziasztok!
WINAVR-el csinálom a programomat és egy változót akarok késeltetési időnek, de a "_delay_ms(valtozo)" nem működik!
Hogy lehet ezt működésre bírni?
(#) vzoole válasza szalaisanyi hozzászólására (») Szept 28, 2013 /
 
Kicsit részleteznéd a "nem működik" részét?
(#) szalaisanyi hozzászólása Szept 28, 2013 /
 
Egyik bemeneten figyelek 2 jelet.
A két jel közötti időt mérem és eltárolom egy változóba.
Ez eddig működik!
De amikor a két jel közötti időt akarnám késleltetési időnek beállítani, akkor a következő hibába futok:

_delay_ms(time);

  1. main.c:150: error: 'time' undeclared (first use in this function)
  2. main.c:150: error: (Each undeclared identifier is reported only once
  3. main.c:150: error: for each function it appears in.)
(#) szalaisanyi hozzászólása Szept 28, 2013 /
 
Sikerült!
Kutakodtam egy kicsit és kiderült hogy csak számot lehet megadni!
De egy függvénnyel megoldódott!

  1. for (int i=0; i<time; i++)
  2.  {
  3.  _delay_ms(1000);
  4.  }


Azért kösz!
Üdv Sanyi!
(#) killbill válasza szalaisanyi hozzászólására (») Szept 29, 2013 /
 
Mindegy, hogy szamot vagy valtozot irsz, annak ugyanugy mukodnie kell. A hiba az, hogy nincs "time" nevu valtozod. Ezt irja ki a fordito is:

"time" nincs deklaralva. A nem deklaralt azonositokert csak egyszer szol minden fuggvenyben...
(#) adamtui_93 hozzászólása Szept 29, 2013 /
 
Sziasztok kb 1 órája sikerült az az ATtiny13A avremet elállítani a beső oscilátort 128khz re levettem hogy megnézzem úgy menyire lassú. Azóta a programom szépen fut de nem tudom sehogy sem átprogramozni. Levettem az ISP órajelét 1.21khzre de így se működik. hogyan bírnám visszaállítani az órajelet?
(#) zombee válasza adamtui_93 hozzászólására (») Szept 29, 2013 /
 
Gondolom a CKDIV8 is be volt kapcsolva. Nem reménytelen, programozótól függ! Doper és tuxgraphics-os STK500 nem viszi, mk2 (klón is) és STK500 (ill. javított tuxgraphics-os) már igen.
(#) adamtui_93 válasza zombee hozzászólására (») Szept 29, 2013 /
 
Köszi a segítséget. A CKDIV8 nem volt bepipálva viszont akkor a topi féle Doperemmel nem fog működni vagy esetleg nincs hozzá valami ujj FW ami már tudja azt is ?
(#) zombee válasza adamtui_93 hozzászólására (») Szept 29, 2013 /
 
A Doper alapból kb. 23kHz-es ISP frekit alkalmaz(megmértem!), de sajnos ez csak egy átlag.
Amikor programoz, kb. 50-60kHz, ezért nem viszi a 128-asat.
Elvileg van egy "SLOW_SCK" jumper is rajta, az leviszi pár kHz-re a frekit.
(#) zsuscsinyo válasza adamtui_93 hozzászólására (») Szept 30, 2013 /
 
Egyszer ugyanígy jártam, már majdnem kész volt a projektem, erre véletlenül rálököm az alacsony órajelre a fuse biteket, Topi féle HEstore-os STK500-as programozóm volt, esélytelen erre a feladatra. Viszont volt másik próbapanelre feltűzött AVR-em, odalapoztam az adatlapban a programozás részhez, és arra gyorsan egy fuse bit programozót megírtam SPI-re, épp hogy csak annyit, törölje a Fuse beállítást, állítsa az eredetire. Sok macerától mentett meg.
(#) adamtui_93 válasza zsuscsinyo hozzászólására (») Szept 30, 2013 /
 
Van egy mega32 meg egy mega48-asom tesztpanelon de spi-t még sose programoztam csak uartot esetleg megvan még a forrásód? Tanulmányozom az spi használata avr-el de nem szeretném teljesen tönkrevágni az avr-t.
(#) adamtui_93 válasza adamtui_93 hozzászólására (») Szept 30, 2013 /
 
  1. #include <avr/io.h>
  2. int main (void)
  3. {
  4.     char data;
  5.  
  6.     DDRB |= (1<<3)|(1<<5);    // SCK és mosi ki
  7.     DDRB &= ~(1<<4);                 // MISO be
  8.  
  9.     SPCR |= (1<<MSTR);               // mester mód
  10.     SPCR |= (1<<SPR0)|(1<<SPR1);     // 128 előosztás
  11.     SPCR |= (1<<SPE);                // spi aktiv
  12.    
  13.     while(1)
  14.     {
  15.         SPDR = data;                 // adat küldés
  16.         while(!(SPSR & (1<<SPIF)));  // vár amíg nem küldi el
  17.  
  18.     }
  19. }
Eddig eljutottam hogy elvileg amit a data helyébe beírok azt küldi ki, viszon nem tudom hogy mit kéne kiküldeni illetve milyen sorrendbe.
Következő: »»   566 / 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