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   172 / 840
(#) Krisz03 válasza kendre256 hozzászólására (») Dec 16, 2009 /
 
Lehet, hogy túlbonyolított, de ne engem okolj, ilyenekkel van tele a vízköves topik, ahonnan szedtem. Megrajzoltam magamnak, és kicseréltem benne pár ellenállás, hogy a nekem megfelelő frekvenciákon sugározzon.

Ahogy janyjozsef is írja, a KI1 és a KI2 pontokra kerül a piezo. Én csak egyszerű jumperrel jelöltem, nem rajtam a panelra a piezot.

A csatolt elképzelésedet még azért kipróbálom, ha ezt így rá szabad kötni az AVR-re. Az ellenállások értéke maradjon az eredeti, tehát a bázisnál 10k, a kollektornál pedig 470 Ohm?
(#) Krisz03 válasza Krisz03 hozzászólására (») Dec 16, 2009 /
 
Kipróbáltam. Így is pattog.

Ja, és az előbb lehet, hogy félreérthető volt: KI1 és KI2 két külön piezohoz tartozik.
(#) kendre256 válasza Krisz03 hozzászólására (») Dec 16, 2009 /
 
Szerintem nem kellene pattognia, de egy oszcilloszkóp mutatná meg, hogy mi is történik valójában.
(#) janyjozsef válasza Krisz03 hozzászólására (») Dec 16, 2009 /
 
Szia!

Akkor szerintem lassan egyértelmű, hogy a program a hibás.
Az okozza a pattanó hangot.
(#) icserny válasza janyjozsef hozzászólására (») Dec 17, 2009 /
 
Folyamatosan kellene kelteni a hangot, hogy ne legyen közben szünet, s kvázi folyamatosan kellene hangolni - valahány periódusonként egy egységgel növelve vagy csökkentve a periódusidőt.

(#) Topi válasza icserny hozzászólására (») Dec 17, 2009 /
 
Ezért mondtam a CTC-t. Direkt erre való. Továbbá kettős pufferelt minden változója a timernek ebben a módban (kivéve ICRx) így ha új értéket írsz bele, akkor teljesen periódus helyesen a következő periódusban fog csak update-elődni. Így nem lesz pattanás!

Több oldallal ezelőtt mondtam, hogy amit akartok, arra CTC-t kell használni. Ami a cikkemben volt csipogó, az max arra jó. Többre nem. Arra, hogy bármelyik lábon csipogni lehessen.
(#) niches hozzászólása Dec 18, 2009 /
 
Helló mindenki!

Segítségeteket szeretném kérni! ATmega164P mikrovezérlővel egy RS422a szabvány szerint kommunikáló jeladó jelét kellene kezelnem. A uc-en lévő usart képes erre vagy azzal direktbe csak rs232 valósítható meg?
Egyelőre nem sikerült használható infókat találnom a neten a kérdéshez, a szabvány meg nincs meg nekem...

niches
(#) tibi0531 hozzászólása Dec 18, 2009 /
 
Ha nem tévedek, az RS422-es szabvány csak a fizikai réteget definiálja (a kábel és az elektromos jelek milyenségét írja le). Így gyakorlatilag lehet használni az MCU USART-ját megfelelő illesztő IC beiktatásával.

A neten egy csomó infó van az RS422/EIA422 ről. Az 'a' jelölés viszont nem tudom, hogy mit jelent.
(#) vzoole hozzászólása Dec 18, 2009 /
 
Sziasztok!

ATtiny 26-ba szeretném használni az ADC-t.

Az ACD7/XTAL1/PB4 lábra van kötve a bemenet amit mérni kéne.

A gond az, hogy a PB4 valamiért "lehúzza", leterheli a jelet. Tehát a műveleti erősítő kimenetén 3Volt van, de ha rákötöm a PB4 lábra akkor lecsökken 0,6V-ra.

Nincs semmi más rákötve a lábra, panelen minden rendben van.

Mitől lehet ez?
(#) vzoole válasza vzoole hozzászólására (») Dec 18, 2009 /
 
Egy sima potméteres feszosztóval is ugyanezt csinálja, tehát a proci/program oldalon van a gond.

És elég nagy az áramfelvétele is.
Ha közel tápra kötöm 70mA-ig is felmegy.
(#) Topi válasza vzoole hozzászólására (») Dec 18, 2009 / 1
 
InitPORT() fgv:

  1. DDRB = 0b0011111; // 0-bemenet, 1-kimeent

Eszerint kimenetnek állítod a PB4-et. Így persze hogy "lehúzza" a kimeneted.
(#) vzoole válasza Topi hozzászólására (») Dec 18, 2009 /
 
Köszi!

Ez volt a gond... a "legjobb", hogy ezt néztem át elsőnek, de rendben találtam
(#) manneken hozzászólása Dec 19, 2009 /
 
Sziasztok!
Azzal kapcsolítban írok, hogy nem találok sehol egy teljes, mindenre kiterjedő leírást az AVR-ek működéséről, vagy könyv is jó lenne a témával kapcsolatban.

Még új vagyok itt, és nem találtam korábbi cikkeket:S
Remélem ti megleptek: )

Előre is köszi srácok: )
(#) vzoole válasza manneken hozzászólására (») Dec 19, 2009 /
 
Hát ez nem terjed ki mindenre, mert akkor kb 1000000 oldalas lenne, de nem rossz könyv:
avrC programming

ui.:
és pár itteni cikk:
AVR cikkek
(#) manneken hozzászólása Dec 19, 2009 /
 
Köszi szépen vzoole
(#) manneken hozzászólása Dec 20, 2009 /
 
És véletlenül valami magyar leírás a működési elvéről van vajon?
: $
(#) ixel hozzászólása Dec 23, 2009 /
 
Hi mindenki!

Van egy régi TTL IC-kel működő NIXIE csöves órám, nagyon megtetszett a csövek kék fénnyel való megvilágítása ezért elterveztem, hogy átépítem de akkor már mikroprocesszorosra szeretném.
Nekem a pascal jön be és ahogy olvasgatom a cikkeket az AVR tetszik jobban a PIC-el szemben.
A MIKROPASCAL for AVR rokonszenvesnek tűnik.
Szóval nincs valakinek PASCAL-os óra progija?
(#) edison14 hozzászólása Dec 23, 2009 /
 
HELLO !

Tudtok valamilyen megbízható letöltőprogramot AVR chipekhez ?

A PonyProgot húztam le, csináltam egy soros portos programozót és olyan egy éve is ilyet használtam és jó volt most meg csak olvasni lehet vele a chipeket írni és törölni már nem. Százszor átnéztem a progizót de semmi hibát nem találtam. 3 db ATmega8-as chipet próbáltam de egyikkel sem ment. Lehet hogy a chipek mentek tönkre ?

A választ előre is kössz.
(#) TavIR-AVR válasza edison14 hozzászólására (») Dec 23, 2009 /
 
Tápfeszültséget kap az IC külön?
Gépcsere nem volt? Az újabb sorosportok +/-5Vról mennek, a régiek +/-9Vról...
(#) edison14 válasza TavIR-AVR hozzászólására (») Dec 23, 2009 /
 
Nem volt gépcsere. Külső 5V-os táplálást használok az IC-re és az áramkörre is. Gondolod, hogy meg kéne mérni a tápfeszt a sors porton és ha 9V-os akkor egy 78L05-ös stab IC-t betenni ?
(#) labu01wx hozzászólása Dec 24, 2009 /
 
Sziasztok!
Van egy AVR Dragonom, az AVR Studio első indításkor frissítette a szoftverét. Ha megpróbálok kapcsolódni nem sikerül, a log. így néz ki:
  1. Detecting on 'USB'...
  2. AVR Dragon found on USB
  3. Getting ISP frequency parameters.. FAILED!
.
Egy ATiny45 van ISP-n rácsatlakoztatva. Az isp kábel hossza 25cm.
Bármilyen segítséget megköszönök.
(#) albinolynx hozzászólása Dec 25, 2009 /
 
Helló,

avr-doper-hez programoznék fel egy atmega8-t bascommal és stk200 (bufferes) lpt programozóval.

Látszatra sikerül is a mutatvány, de a doper-t gépre dugva nem ismert eszközként tartja nyilván a windows. Próbáltam driverekkel, stb, semmi.

Igazából fogalmam sincs, hogy pl. a fuse biteket hogyan kellene beállítanom, ezeket defaulton hagytam. Olvastam viszont, hogy nagy AVR-ek esetén (pl.: atmega8) ezeket változtatni kell. De hogyan? Milyen logika szerint?
Másik, hogy stk200-nál ugye 16MHz-es a kvarc, doper-ben pedig 12MHz-es. Nem fog ez problémát okozni?

Bascomban a kvarcot állítottam 16MHz-re, sebességet 57600Baud-ra, chipet atmega8-ra, programozót stk200-ra. Mást nem piszkáltam. Programozó amúgy felismeri a chipet, írni, törölni is tudom, csak ahogy már írtam, nem jó.

Tudnátok segíteni, hogy konkrétan mit állítsak be a fuse bit oldalon?
Köszönöm!
(#) labu01wx hozzászólása Dec 26, 2009 /
 
Sziasztok!
Egy olyan kapcsolást szeretnék csinálni ATtiny45 segítségével, ami bekpcsol egy ledet, ha egy gombot 3 mp-ig nyomva tartok* és kikapcsolja az ha ugyanezt a gombot 5 mp-ig tartom nyomva.
*A kódból látszik, hogy a nyomva tartást nem figyeli, csak azt, hogy az első nyomástól számítva 3/5 mp múlva is le van-e nyomva a gomb.
Az általam írt(nem működő) program így néz ki:
  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3.  
  4. #define GOMB_ALL PINB  & (1<<PB4)
  5. #define LED_ALL  PORTB & (1<<PB3)
  6.  
  7. #define LED_ON   PORTB |=  (1<<PB3)
  8. #define LED_OFF  PORTB &= ~(1<<PB3)
  9.  
  10. void m_delay_10ms(unsigned short val) {
  11.   unsigned short i;
  12.   for(i=0;i<val;i++) _delay_ms(10);
  13. }
  14.  
  15. int main(void) {
  16.   DDRB=(1<<PB3)|(0<<PB4);
  17.   while(1) {
  18.     if ((GOMB_ALL) & (-(LED_ALL))) {
  19.       m_delay_10ms(300);
  20.       if (GOMB_ALL) LED_ON;
  21.     }
  22.     if ((GOMB_ALL) & (LED_ALL))  {
  23.       m_delay_10ms(500);
  24.       if (GOMB_ALL) LED_OFF;
  25.     }
  26.   }
  27.   return 0;
  28. }

Valaki legyen szíves megmondani, hogy mi benne a hiba.
(#) janyjozsef válasza labu01wx hozzászólására (») Dec 26, 2009 /
 
Szia.

Először is.
  1. PORTB |= (1<<PB4)


És szerintem a
(-(LED_ALL)) -nál a - nem kell.
(#) zsuscsinyo válasza janyjozsef hozzászólására (») Dec 26, 2009 /
 
Valószínű, hogy a komplemensét akarta képezni (ellentettjét), viszont az valóban nem a "-" jel hanem a "~", ami így nézne ki:

  1. (~(LED_ALL))
(#) gallz hozzászólása Dec 26, 2009 /
 
Nemrég kísérletezek AVR-ekkel. Most az RS232 kommunikációval birkózok, ehhez egy ATtiny2313 mikrovezérlőt használok + MAX232 IC-t soros kábelen. (LED be-ki kapcsolás PC-ről).
Működik is szépen, de szeretném vezeték nélkül is megcsinálni.
A kérdéseim:
1: Ha egy BTM-112 vagy BTM-222 bluetooth modult használnék, akkor kell-e a MAX232 IC vagy az már benne van a modulban?
2: A programozás ugyan az mint kábeles esetben, csak most egy virtuális COM porton zajlik az adatforgalom.
(#) bandee88 hozzászólása Dec 26, 2009 /
 
Hello!
Segítség kellene elakadtam
A problémám az lenne hogy megrendeltem a topi féle USB-s AVR-doper ISP-s programozót. Össze is raktam fel is ismeri a gép COM portként. De amikor megnyitom az AVRStudio-t és rákattintok a Display the 'Connect' dialog-ra és feljön a párbeszéd ablak kiválasztom az STK500 or AVRISP-t éss rákattintok a connectra nem csinál semmit.
Ez miért van? Mit kellene mér beállítanom vagy telepítenem hogy működjön? Fontos lenne! Segítségeteket előre is köszönöm.
(#) mcganyer hozzászólása Dec 26, 2009 /
 
Üdv!
Furcsa problémám akadt az egyik cikkben leírt ni-mh töltővel. Látszólag rendesen működig 6mp tölt aztán sönt és mér, de a végén nem óhajtja lekapcsolni a töltést amikor az aksik már elérték az 1.41V-ot pedig a mérő lába megkapja az osztott feszt(ami kel neki ahhoz hogy átkapcsoljon). Próbáltam másik avr-el ugyanez a helyzet.

Mi lehet a gond? ( tápra tippelnék, bár usb-ről jár az avr)

Köszönöm!
(#) labu01wx válasza janyjozsef hozzászólására (») Dec 26, 2009 /
 
Amit írtál azt hol kellene kijavítanom?
A - jelet átírtam ~-ra, így bekapcsol, de nem ki még nem.
(#) zsuscsinyo válasza labu01wx hozzászólására (») Dec 26, 2009 /
 
A nyomógombra tettél felhúzó ellenállást? Mert a programban nem látok, így viszont lóg a levegőben és instabil állapotot vesz fel. Ha viszont belső felhúzóellenállást akarod bekapcsolni akkor ezt még tedd hozzá a 15. sor után:
  1. PORTB |=(1<<PB4);



Célszerű a definiciókat zárójelbe tenni, mivel én már találkoztam olyan esettel, hogy WinAVR lefordította viszont hibásan, vagy egyáltalán nem is működött.
Például így:
[code=c]#define LED_ON (PORTB |= (1< #define LED_OFF (PORTB &= ~(1<
Következő: »»   172 / 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