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   336 / 840
(#) yoman917 válasza Ricsi89 hozzászólására (») Jún 29, 2011 /
 
Találtam egy oldalt itt fórumon közölték, fusebit doctor a neve. Ezzel szerintem meg lehet oldani.
Fusebit Doctor
(#) Ricsi89 válasza yoman917 hozzászólására (») Jún 29, 2011 /
 
Igen ezzel megoldható, de minden írás után majd ezzel kell törölnöd a kontrollert, hogy ismét programozni tudd.
(#) yoman917 válasza Ricsi89 hozzászólására (») Jún 29, 2011 /
 
Hát igazából nem tudok mit csinálni, próbálom minél helyesebben megírni a programot, és csak akkor ráírni a chipre, ha már biztos vagyok benne, mert nem hiszem hogy ez olyan jót tesz az AVR-nek
(#) AxaGame válasza yoman917 hozzászólására (») Jún 29, 2011 /
 
Hello!
Erre a FuseDoki működésre én is kíváncsi vagyok.
Kérlek, majd írd le, ha kipróbáltad.

Üdv!
(#) edison14 válasza AxaGame hozzászólására (») Jún 29, 2011 /
 
Helló. Én megépítettem és teljesen jól működik. Az egész annyiból áll hogy készítettem kártyákat melyek különböző mikrovezérlő típusokat képesek befogadni majd miután a foglalatba illesztem a vezérlőt csatlakoztatom a kártyát a Dokihoz. Megnyomok egy gombot és kivilágít a zöld led ami azt jelenti hogy a fuse bitek vissza vannak állítva. Kb fél másodperc az egész. Érdemes megépíteni még ha már gyakorlottak vagyunk is mert sosem lehet tudni mikor csúszik be egy kis baki. Amúgy érdemes megépíteni az STK500-as klónt melyben ez megtalálható így nem kell külön építgetni.
(#) AxaGame válasza edison14 hozzászólására (») Jún 29, 2011 /
 
Köszi az infót!
Ha jól értem, akkor a vezérlőt ki kell venni a fejlesztett áramkörből. Viszont így az SMD tokokkal probléma van. Olyan megoldást keresek, amivel beforrasztott prociban tudom törölni a dolgokat.
Azt hiszem, hogy így marad a HV programozás a Dragonnal.
Majd egyszer kipróbálom, addig kerülöm a reset tiltását, megfogadva a rutinos rókák tanácsát.
(#) zombee válasza AxaGame hozzászólására (») Jún 30, 2011 /
 
Hello!

Én már régebben megépítettem, illetve nemrég átterveztem egyoldalasra és kimarattam a panelt(de csak 8,20,28 lábú IC megy bele).
Tökéletesen működik, de a +12V-ra(RESET) kell egy terhelő ellenállás mert a tranzisztorok kollektora lebeg és emiatt nem mindig adja.
(#) edison14 válasza AxaGame hozzászólására (») Jún 30, 2011 /
 
SMD-kre is jó csak kell valamilyen foglalat melybe bele tudod nyomni és tudod benne tartani hogy a lábak érintkezzenek a foglalattal. De amúgy ha van Dragonod és rendelkezik HV programozási móddal akkor felesleges a doctor mivel azzal is vissza tudod állítani a fuse biteket.
(#) AxaGame válasza edison14 hozzászólására (») Jún 30, 2011 /
 
Köszi a válaszokat Edison és Zombee!
Most van egy olyan panelom, amelyen szinte csak a uP van, ha elrontom, akkor csak egy tiny45 fog szomorkodni.
Üdv!
(#) Ricsi89 hozzászólása Jún 30, 2011 /
 
Lenne egy szerintem egyszerű kérdésem, csak már nem bírok gondolkozni.
Adott egy számokból álló sztring. Van ebben a bizonyos sztringben egy . (pont), amit ki kellene venni, hogy a számsort egész számmá tudjam alakítani. Ha a jelenlegi formájában alakítom egész számmá, akkor csak a pontig alakítja át, a vége elveszik.
Példa kedvéért ez a sztring: 5533.9472, és ezzé kellene alakítani: 55339472. Jelenleg csak annyit ír ki az átalakítás után, hogy 5533 és kész.
(#) trudnai válasza Ricsi89 hozzászólására (») Jún 30, 2011 /
 
  1. char str[] = "1234.5678";
  2.   char *pont;
  3.  
  4.   pont = strchr( str, '.' );
  5.   strcpy ( pont, pont+1 );
(#) yoman917 válasza AxaGame hozzászólására (») Jún 30, 2011 /
 
Alátámasztom én is. Tökéletesen működik.
(#) yoman917 hozzászólása Jún 30, 2011 /
 
Annyi problémám van még, hogy egy kijelzőre szeretném tenni az amper és a volt kijelzését. Úgy tudnám megoldani csak, hogy másodpercenként váltsa, de azt nem nagyon tudom megoldani, hogy amig látszik, az eredményt láthatóan tudjam állítani. Magyarul feltekerem a potmétert, és csak egy adott állást jelez ki, egy újabbra várnom kell 2 másodpercet. Segítene valaki ebben?
Üdv,
yoman
(#) Ricsi89 válasza trudnai hozzászólására (») Jún 30, 2011 /
 
Köszönöm, sikerült megcsinálni. Már csak annyi van, hogy lebegőpontos szám lcd-re íratásakor csak egy kérdőjel jelenik meg. Ez mitől lehet?
(#) AxaGame válasza yoman917 hozzászólására (») Júl 1, 2011 /
 
Én ilyenkor különböző jelzőbiteket állítgatok. Az általa jelzett esetben mondjuk 3 bitet használnék. Ezek:
1. Flag_LcdTartalom_U mutatja, ha feszt írsz ki. Pl: akkor H, egyébként L

2. Flag_FrissI mutatja, hogy frissen mért áram érték vár a kijelzése. A mérő rutin H-ra állítja, a kiíró rutinod törli.

3. Flag_FrissU a 2. hez hasonló, csak fesz.-re.

Innentől kezdve mindig tudod, hogy mit kell kiírnod a kijelzéskor.

Bár elvi a válasz, remélem segített!
(#) yoman917 hozzászólása Júl 1, 2011 /
 
Hát, nem sokat segít, már az összes lába foglalt az AVR-nek. Nem lehetne írni egy procedúrát (nem tudom hogy a C-ben van e ilyen) külön a volt kijelzésre, és külön az áramerősség kijelzésre, és a főprogramban ezt hivom meg, először a volt kijelzést, majd egy delay, és utánna az amperkijelzés. Ha létezik ilyen funkció, azt le tudnátok írni nekem?
Üdv,
yoman
(#) Ricsi89 hozzászólása Júl 1, 2011 /
 
Sziasztok!
Fokpercet kellene átváltani fokokba. Eddig nincs is gond. Viszont bizonyos estekben nem jól számol, aminek okát tudom is, de elhárítani annál nehezebb. Itt a jelenlegi kódom.
  1. /*
  2.  * Parse and convert the given string into degrees and minutes.
  3.  * Example: 5333.9472N --> 53 degrees, 33.9472 minutes
  4.  * converted to: 53.565786 degrees
  5.  */
  6. void parse_sajat(char *str, uint8_t *degree, uint16_t *minutes){
  7.         double buff;
  8.         uint16_t buf, pontt, buf1;
  9.         char *pont;
  10.        
  11.         buf1 = atoi(str);
  12.         pont = strchr( str, '.' );
  13.         strcpy ( pont, pont+1 );
  14.        
  15.  
  16.         pontt = atoi(pont)/10;
  17.         buf = (buf1*10000) + pontt;
  18.         *degree = buf1/100;
  19.         buff= ((buf1%100)*1000)+pontt;
  20.         buff *= 16667;
  21.         *minutes = buff / 10000;
  22.  
  23. }


Nos ha a fokperc pl jelenleg 0,2838, akkor kimenetnek 471-et kapok. Viszont kellene a 471 elé még két nulla. Próbáltam lebegőpontos számokkal, akkor viszont lcd-re kiíratáskor egy kérdőjelet kapok.
Vagy ha valaki tudna egy biztosan működő GPS-hez való konverter algoritmust az is jó lenne. Én már kezdek kifogyni az ötletekből.
(#) atideath hozzászólása Júl 1, 2011 /
 
Sziasztok!

Kezdő vagyok AVRekben (PIC-et már programoztam). Bascomban írtam meg a programot de valami nem stimmel és nem tudom miért. Atmega8-al tanulnék.

Bekötések:
1: 1kOhm ellenállással +5V
7: +5V
8-as lábra: GND
20,22 = +5V
22 = GND

Egy led-et szeretnék ki-be kapcsolni de miután beprogramoztam az AVR-t, nem csinál semmit. Kvarcot nem tettem a kapcsolásba mert most egyenlőre bőven elég a belső. De nem tudom hogy az működik-e. BASCOM alatt programozom, de most valami nem stimm.

Valaki ha tud kérem segítsen.
(#) edison14 válasza atideath hozzászólására (») Júl 1, 2011 /
 
Nem zártad véletlenül ki magad az ARV-ből? Programozáskor volt órajel a processzoron? Az első beállítás erejéig kell tenni kristályt és kondikat az XTAL lábakra hogy legyen az AVR-en órajele majd ezután kell a fuse bitekben módosítani az oszcillátor részt belső oszcillátorra ezek után már nem kell a külső oszcillátor. Esetleg a programot csatolhatnád hogy meg tudjuk nézni hátha ott lesz a hiba.
(#) atideath válasza edison14 hozzászólására (») Júl 1, 2011 /
 
A program maga ennyi:
  1. Config Portd = Output
  2.  
  3. Do
  4.    Portd = 255
  5.    Waitms 50
  6.    Portd = 0
  7.    Waitms 50
  8. Loop
  9. End


Nem hiszem hogy bármi nagy hibát is vétettem volna ebben az 5 sorban . A Fuse biteket nézem a Bascom programozójában és az erre vonatkozó rész a következő szerintem:
Fusebits:
Fusebit C: 1: BODLEVEL 2.7V
Fusebit B: 1: BODEN disabled
Fusebit KLA987: 100001: Int. RC Osc. 1Mhz
(#) TavIR-AVR válasza atideath hozzászólására (») Júl 1, 2011 /
 
5V 2 lábra kell: Vcc és VccA-ra is!
gnd: gnd és gndA-ra is...
(#) atideath válasza TavIR-AVR hozzászólására (») Júl 1, 2011 /
 
A következő lábakon vannak:
GND: 8 , 22
+5V: 7, 20 , 21

De így sem indul el.

A programozót mindenképpen le kell húzni ahoz hogy elinduljon az AVR?
(#) zolee1209 válasza atideath hozzászólására (») Júl 1, 2011 /
 
Most akkor a 22-es lábat 5V-ra, vagy GND-re kötötted?

szerk.: A következő oldalt még nem vettem észre...
(#) atideath válasza zolee1209 hozzászólására (») Júl 1, 2011 /
 
GND-re. Vagyis a gyári adatlap ezt írja hogy az kell oda. Túrtam egy 20Mhz és egy 4Mhz-s kvarcot hátha..

Elírtam a másiknál. Ott a +5V : 20,21
(#) edison14 válasza atideath hozzászólására (») Júl 1, 2011 /
 
Az első programozáskor volt rajta órajel?
(#) atideath válasza edison14 hozzászólására (») Júl 1, 2011 /
 
Nem nem volt. Csak szimplán betettem az AVR-t felprogramoztam és kész. Most túrtam egy 4Mhz-s Kvarcot azt próbálom bekötni.
(#) edison14 válasza atideath hozzászólására (») Júl 1, 2011 /
 
A programozó nem ordibált?
(#) atideath válasza edison14 hozzászólására (») Júl 1, 2011 /
 
Semmi baja nem volt. Sőtt még vissza is ellenőriztem hogy beírta-e és beírta. Úgyhogy lövésem sincs. Tudtom szerint az Atmega8-akban alapból 1Mhz-ra van állítva hogy azt használja.
(#) edison14 válasza atideath hozzászólására (») Júl 1, 2011 /
 
Velem már egy kétszer megesett hogy külsőre volt állítva. Ezért is ha programozok mindig teszek oda órajelet nehogy valami baj legyen. A fuse bitek programozás előtt hogyan voltak beállítva? Ha ott az oszcillátornál a belső 1MHz-es oszci volt beállítva akkor nincs gond azzal.
(#) atideath válasza edison14 hozzászólására (») Júl 1, 2011 /
 
Az volt beállítva. Szóval ezért nem értem.
Következő: »»   336 / 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