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   449 / 840
(#) kiborg válasza tecsa hozzászólására (») Jún 8, 2012 /
 
Szia!
Ajánlom a 3,2768MHz-es kristályt, 1024-es előosztóval, majd a TIMER1-el (16bit) 3200-al tovább osztani, ekkor garantáltan 1sec-enként lesz egy megszakításod. Procidnak is lesz sebessége, és ez így eléggé pontos is.
Üdv Kiborg
(#) zombee válasza kiborg hozzászólására (») Jún 8, 2012 /
 
Szerintem ugyanúgy tudna mérni 8MHz-es kristállyal is, 256-os előosztóval 31250 jelet kell leszámlálni.
Tehát OCR1A=31249, CTC mód(asszem 3-as?), és minden túlcsordulásnál növelheti a másodperc számlálót.
Az szintén 16 bites legyen mert a fél órához 1800-at kell leszámlálni. Ha interruptból birizgálod a változót
akkor az feltétlenül volatile legyen:
  1. volatile uint16_t masodpercek = 0;
  2. ISR(TIMER1_COMPA_vect)
  3. {
  4.     masodpercek++;
  5. }
(#) tecsa válasza zombee hozzászólására (») Jún 8, 2012 /
 
Köszönöm szépen a segítségeteket.

Tecsa
(#) vanzerr válasza qvasz2 hozzászólására (») Jún 8, 2012 /
 
Köszi a választ, azt hiszem ki fogom próbálni azt is, viszont először még szeretném megpróbálni visszahozni a halálból az előbb belinkelt kapcsolással. Csak nem boldogulok sehogy se.....
(#) Darka hozzászólása Jún 9, 2012 /
 
Sziasztok!
Egy példaprogram után kutatok, ami megszólaltat egy ilyen instrument shield-et. Sajnos minden amit eddig találtam Arduinóra készült nekem viszont olyan nincs, ezért ATmegával (8 vagy 16) szeretném beindítani, mindössze egy akármilyen hang erejéig.
(#) TavIR-AVR válasza Darka hozzászólására (») Jún 9, 2012 /
 
Arduino alatt fordíts ATMega8-ra.
A kapott HEX ATMega8/16MHz-ra készül.
Vagy Pro-ra fordíts, az a belső 8 MHz-ről jár....
(#) Darka válasza TavIR-AVR hozzászólására (») Jún 9, 2012 /
 
Helló!
Köszönöm a gyors választ, az imént belinkelt oldalon található kódot álltam neki átírni (ezt). Valamennyire sikerült megértenem hogyan működik és megszületett a működő példány. Csatolom a kódot hasonló problémába ütközők kedvéért.

m8Shield.txt
    
(#) pogany.tamas hozzászólása Jún 10, 2012 /
 
Sziasztok,

Osztásban szeretném a segítségeteket kérni. Konkrétan Attiny2313 + HC-SR04 ultrahangos távolságmérő. A kód végén van egy int értékem, ezt távolságra így kellene konvertálni: érték / 58, amit LCD-re ki is íratnék. Az a probléma, hogy egy float distance = duration / 58.275 és máris 97 százalékban tele van a 2kB. Az stdlib.h div függvényét nézegettem, ami visszaad egy hányadost, és egy maradékot, de azzal meg vagyok lőve, mert amikor a maradékot tizedes törtté alakítanám, az megintcsak egy osztás. Hogy lehetne ezt megoldani?
(#) Fizikus válasza pogany.tamas hozzászólására (») Jún 10, 2012 / 1
 
Nem kell float valtozokkal szamolni, eleg az int.
A tavolsagot szamold mm-ben, ekkor:
  1. Tavolsag = 10*EchoTime/58; // a celtargy tavolsaganak kiszamitasa (mm-ben)

Reszletesebben lasd itt: Bővebben: Link
(#) TavIR-AVR válasza pogany.tamas hozzászólására (») Jún 10, 2012 /
 
A T2313 zsákucca fejlődési szempontból.
Kb 1 éve jelent meg a T4313. Ebben 4k van és csereszabatos a T2313-l.
(#) zombee válasza TavIR-AVR hozzászólására (») Jún 10, 2012 /
 
Ennyi erővel minden AVR zsákutca, hiszen mindenre van/lesz nagyobb, gyorsabb, szebb alternatíva!
Az ATTiny4313 nagyon újnak számít az ősöreg AT90S1200/AT90S2313/ATTiny2313 vonalhoz képest.

Az AVR-es kapcsolások kb. harmada-negyede rá épít, nem hiszem hogy 1-2 éven belül mindenki váltani fog.
Kivéve, ha az ára lemegy az ATTiny2313 alá. Volt már erre is példa, most az ATMega88 ára ment le rendesen.
persze nem a HESTore-n...
(#) TavIR-AVR válasza TavIR-AVR hozzászólására (») Jún 10, 2012 /
 
A csereszabatosság, ha memóriakinövés esete áll fenn. A T2313 vonalat a Atmel elhanyagolkta. Míg a M8->Mx8 családot és számos másikat növesztette/skálázta, a T2313/90S2313 esetén ez elmaradt...

A régi kiadás miatt persze, hogy sok kapcsolás épül rá...
(#) Hooligan01 válasza TavIR-AVR hozzászólására (») Jún 10, 2012 /
 
Fejlődés szempontjából a Bascom a zsákutca, nem a 2k flash...
(#) TavIR-AVR válasza Hooligan01 hozzászólására (») Jún 10, 2012 /
 
Ezt vitatom .

De ne menjünk bele Linux/Windows hitvitába. Csak itt: ASM, Gcc, Keil, arduino, microbasic, micropascal, bascom, fastavr témák futnak....

Nyáktervező: eagle, proteus, és még 10-15 van....
(#) pogany.tamas válasza Fizikus hozzászólására (») Jún 10, 2012 /
 
Ez jó ötlet volt, köszi

Igen, lehet akármilyen zsákutca vagy nem, 4 biten egy LCD-t vezérelni tökéletes, meg 1-2 szenzort rákötni, és mindezt elérhető áron, és a kódnak is (legalábbis amiket egyelőre írok) bele kellene férnie 2k-ba, nem vágyok komolyabbra
(#) zombee válasza pogany.tamas hozzászólására (») Jún 10, 2012 /
 
De még egy tisztességes AVR programozót is lehet vele építeni, jól mondom?
(#) Reggie válasza TavIR-AVR hozzászólására (») Jún 11, 2012 /
 
Ez egy kicsit zavaros nekem. Ha a 4313 a 2313 tovabbfejlesztese, akkor hogy lehet a 2313 zsakutca?
(#) TavIR-AVR válasza Reggie hozzászólására (») Jún 11, 2012 /
 
Nézd meg a főbb családokat, hogy mennyire skálázható:
- T13-T25-T45-T85 (1...8k/8lábas tok)
- M8-M48-M88-M168-M328 és a Mx8P sorozat (28/32 lábas tok, 4...32k)
- M64-M128-M1281-M2561
És ezek viszonylag régóta elérhetőek


- 90S1200-2313-T2313-T4313 (2 tag (+2 kihalt) és vége)
És az utóbbi 1 évben lett bővítés...
(#) Hooligan01 válasza TavIR-AVR hozzászólására (») Jún 11, 2012 /
 
Robi, te kevered a szezont a fazonnal...

Maga az AVR a család, hiszen azonos magra épülnek, különféle periféria konfiggal.. Innentől azon megy a vita, hogy amibe nem férsz el (különféle okok miatt...), az zsákutca??
Nem, ez nem zsákutca, ez rossz hw választás... ennyi

Ha ezzel nem értesz egyet, akkor világosítsd fel őket, hogy vigyázzanak, mert zsákutcába vezet a fejlesztésük...
Ide írhatsz, egyébként nagyon készségesek : support@atmel.com

(#) Hooligan01 válasza Hooligan01 hozzászólására (») Jún 11, 2012 /
 
Ja és ez a "csereszabatosság" dolog is érdekes...
Már jó ideje abból élek, hogy nyaggatom az AVR-eket, és még sok mást is, de ezzel még nem találkoztam...
Már egy nagyon kis szériás fejlesztésnél is pl.~100db, a fejemet vennék, ha benyögném, hogy: Há' ez már nem fér bele... Magyarul: jól kell választani, ennyi.

Igaz, ez egy hobbival foglalkozó oldal.
Épp ezért nem értem ezt az észosztást...
(#) Reggie válasza TavIR-AVR hozzászólására (») Jún 11, 2012 /
 
Felenk ezt lassan fejlodonek hivjak. Ennek ket oka lehet: nincs ra igeny vagy nagyon eltalaltak ezt a szegmenst es igy nincs szukseg sok variaciora.
(#) TavIR-AVR válasza Hooligan01 hozzászólására (») Jún 11, 2012 /
 
Jogos!
Fáradtan fogalmazni sem tudok

A saját fejlesztés és hobbiprojektek kapcsán zsákutca... A hibás processzorválasztás korlátozza a SW-fejlesztést. És ha az elején félreválasztasz, akkor zsákucca...

A procicsere is lehet megoldás.... ha van miből
(#) mzozo95 hozzászólása Jún 11, 2012 /
 
Sziasztok!
Meg rudná nekem valaki mondani, hogy Atmega8L 8mhz -en külső kristállyal, 3,3v opn stabilan üzemel?
A dokumentáció szerint 2,7V alsó határig üzemképes... Csak nem vagyoik benne biztos, hogy 3,3V on működik e maximális frekvencián...
PDF

Ha esetleg a 3,3V on futó avr 5V-ot kapna adc vagy digitális I/O bemenetén, akkor tönkremenne? Vagy elviseli ekkor is az 5,5V ot, amit a pdf maximális működési feszültségnek ír?

Segítségeteket előre is köszönöm!
(#) TavIR-AVR válasza mzozo95 hozzászólására (») Jún 11, 2012 / 1
 
Igen, 3.3V@8MHz stabil.
A bemenetek Vcc+0.7V lehet. Az 5V határon kívülinek számít.
Ha kicsi az áramerősség, akkor a belső védődióda megfoghatja (de nem szabályos megoldás).
(#) zombee válasza mzozo95 hozzászólására (») Jún 11, 2012 / 1
 
Stabil, működik. Kivéve ha a BODLEVEL 4.0V-ra van állítva és a BODEN bekapcsolva.
Gyári szűz IC-nél szerencsére nincs, így menni fog!

5V/3.3V: az AVR védődiódái megfogják, de nagyobb bemenő áramnál tönkremehet!
1: Használj ellenállást! Nem szabványos, de 5mA-t lazán megeszi a dióda! (5V-3.3V-0.6V)/5mA = 220Ohm
2: használj leválasztó kapcsolást, pl. mint a sparkfun-os FET, vagy NPN tranzisztorosat(JTAG topikba keresd)
(#) mzozo95 válasza zombee hozzászólására (») Jún 11, 2012 /
 
Köszönöm a gyors válaszaitokat, sokat segített!

Igazából egy btm-222 es bluetooth modullal kötöm össze majd a pc vel uart-on keresztül a vezérlőt, a vezérlő perifériáinak (ledek,'RC' szervó) elég a 3,3V, és így akkor a szintillesztéssel nem kell foglalkoznom(mivel ez a modul uarton 3,3V-0 jelszintekkel kommunikál), 1 feszültségstabilizátorról mehet az egész.
Remélem jól gondoltam...
(#) sikolymester válasza mzozo95 hozzászólására (») Jún 12, 2012 / 1
 
Rendben lesz így.
(#) roleeka hozzászólása Jún 13, 2012 /
 
Sziasztok!

Egy kis segítség kellene. egy időzített kikapcsolást szeretnék megoldani Attiny45-el. Annyi lenne a program ha az egyik lábát (PB4) egy kapcsolóval tápra kapcsolom akkor az egyik lábán (PB3) kapcsoljon be egy tranzisztort majd egy idő elteltével (1 perc) kapcsolja ki a tranzisztort.

Ezt a programot C-ben ti hogy írnátok le minél egyszerűbben (lehetőleg timer inicializálás nélkül). Én ezzel próbálkoztam. de nem ment az időzítés sehogy se.

  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3. //-------------------------------------
  4. void m_delay_10ms(unsigned char val) {
  5. //-------------------------------------
  6. //a _delay_ms max 65.535 ms-et képes sleepelni,
  7. // tehát nagyobb időzítést többől lehet "összerakni"
  8.            unsigned char i;
  9.            for(i=0;i<val;i++) {
  10.                _delay_ms(10);
  11.            }
  12. }
  13.  
  14.        
  15.  
  16. int main(void) {
  17.  
  18. uint8_t allapot;
  19.    
  20.            DDRB = 0b00001000;
  21.    allapot=0;
  22.    
  23.  while(1) {
  24.  
  25. if (allapot==0) {
  26. if(PINB & 0b00010000)
  27. allapot=1;
  28. elseallapot=0;
  29. }
  30.  
  31. if (allapot ==1) {
  32. PORTB |= 0b00001000;
  33. allapot=2;
  34. }
  35.  
  36. if (allapot==2){
  37. m_delay_10ms(6000)
  38. allapot=3;
  39. }  
  40.  
  41. if (allapot==3){
  42. PORTB &= 0b00000000;
  43. allapot=0;
  44. }  
  45.  
  46.  }
  47. return 0;
  48. }


a csatolt kapcsolással gondoltam megvalósítani.


Tudtok nekem ebben segíteni?

idozito.PNG
    
(#) TavIR-AVR válasza roleeka hozzászólására (») Jún 13, 2012 /
 
  1. config portb.4=input
  2. portb.4=0'kulso lehuzo kell!
  3. config portb.3=output
  4.  
  5. do
  6. if pinb.4=0 then
  7.  portb.3=1
  8.  wait 1
  9.  portb.3=0
  10. end if
  11. loop


Mondjuk a Bascom-AVR-ben kb. ennyi.
Arról nem szólt a kiírás, hogy a gomb újramegnyomás mit jelent...
(#) roleeka válasza TavIR-AVR hozzászólására (») Jún 13, 2012 /
 
Külső lehúzónál arra gondolsz, hogy az a láb alapból egy ellenállásal földre van húzva és az ellenállás előtti pontot ha magasra húzom a gombbal akkor indítom az időzítést.

A gomb újboli megnyomása most lényegtelen, később az a cél, hogy újrasindítsa az időzítést.

C-be esetleg valaki megoldást?
Következő: »»   449 / 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