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   313 / 840
(#) gabi20 válasza Reggie hozzászólására (») Márc 5, 2011 /
 
Köszi már sikerült megoldani a problémát
(#) zsozsoX hozzászólása Márc 5, 2011 /
 
Sziasztok
Segítség kellene SPI-vel szeretnék meghajtani egy kijelzőt akinek már volt dolga SPI-vel legyenszíves nézze meg nekem ezt a kódot, hogy működik-e
  1. #define F_CPU 3640800UL
  2. #include <avr/io.h>
  3. #include <util/delay.h>
  4.  
  5. #define DD_MOSI     PINB5
  6. #define DD_SCK     PINB7
  7. #define DDR_SPI    DDRB
  8.  
  9. void SPI_MasterInit(void)
  10. {
  11.        DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);
  12.        SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1)|(1<<CPOL)|(1<<CPHA);
  13. }
  14.  
  15. void SPI_MasterTransmit(char cData)
  16. {
  17.        SPDR = cData;
  18.        while(!(SPSR & (1<<SPIF)));
  19. }
  20.  
  21. int main(void)
  22. {
  23.        SPI_MasterInit();
  24.       SPI_MasterTransmit(0xAF);
  25.  
  26.       while(1)
  27.      {
  28.      }
  29.      return 0;
  30. }

Segítséget előre is köszönöm
(#) Axel hozzászólása Márc 5, 2011 /
 
Sziasztok!

AVR Studioban a külső kristályhoz tartozó fuse bitek beállításánál tehát arra kell figyelni, hogy a beállítást megelőzően már rá legyen kötve a kristály a procira ha nem akarjuk "kizárni" magunkat belőle?
(#) zsozsoX válasza Axel hozzászólására (») Márc 5, 2011 / 1
 
Hali
Igen
(#) Axel hozzászólása Márc 7, 2011 /
 
Sziasztok!

12 MHz-es kristályról hajtom az Atmega8-ast melyen egy egyszerű ADC program fut 3x7 szegmenses kijelzőn megjelenítve a mért értékeket. A problémám, hogy miután átállítottam kvarcra az órajelet a konverter kicsit megkergült. 0.01-nél van az alaphelyzet és csak 4.86-ig jelenít meg értéket a kijelző. Azelőtt 0-5 V-ig hibátlanul működött (amikor még belső oszcillátorról ment). A programon semmit sem módosítottam. Mi lehet a gond? Esetleg a kristály okozna valamilyen interferenciát? Bár ez kétséges...
(#) zolee1209 válasza Axel hozzászólására (») Márc 7, 2011 /
 
Szia!

Az adatlapon meg van adva, hogy mekkora a maximális mintavételezési frekvencia. (talán 15kSPS) E fölé nem érdemes menni mert fals értéket fogsz kapni. Az ADC prescaler bitjeivel tudod csökkenteni a mintavételezési frekvenciát.
(#) Reggie válasza Axel hozzászólására (») Márc 7, 2011 /
 
Kicsit nehezen ertheto. A kristaly az kvarc, ezert is szokas kvarckristalynak hivni. A kerdes inkabb az, hogy a frekvencia valtozott-e vagy csak a forrasod?
(#) Axel válasza Reggie hozzászólására (») Márc 7, 2011 /
 
Hello!

Igen valóban össze lehet keverni, konzekvensebben kellett volna használnom a kvarc megnevezést. A lényeg először belső oszcillátorról hajtottam a procit 8MHz-en majd után áttértem 12MHz-es kvarcra. Ekkor kezdődött a probléma.

zolee1209-nek: Én is valami hasonlóra gondoltam amit írtál de visszaállítva belső oszcillátorra a fuse-t is produkálta ugyanezt. Minden esetre ki fogom próbálni amit mondtál!
(#) Reggie válasza Axel hozzászólására (») Márc 8, 2011 / 1
 
Ha visszaallitottad es ugyan ugy jelentkezik a problema, akkor inkabb egy rejtett hibara gyanakodnek, amely most jott elo. Igy az aramkort nem ismerve, eloszor leellenoriznem a helyedben, hogy az I/O labra valoban 5V jut el es mondjuk nem egy vedo zener dioda fogja meg a feszultseget, ugyanis ezek nyitofeszultsege homersekletfuggo is. Ha az I/O labon 5V van, es megis 4.83V-ot mer, akkor mar erdekesebb. Ebben az esetben az ADC atalakitas nyers 10 bites eredmenyet irasd ki HEX-ben(vagy binarisan), hogy meg lehessen allapitani, hogy a kodban hol lehet hiba.
(#) Axel hozzászólása Márc 9, 2011 /
 
Sziasztok!

Tesztelgetném az Atmega8 TWI (I2C) modulját egy 24LC01B EEPROM-mal. Nem nagyon akar összejönni a dolog, "paraszt-debug" módszerrel vizsgálva úgy látszik megakad az adatbájt átvitelénél, onnantól már nem kap ACK bitet a proci az EEPROM-tól.
Kérdésem elsőként az, hogy legális-e ha a következőképpen kérdezem le a TWSR regiszter értékét?

  1. if(TWSR==0x18){további byte-ok küldése;}//Slave cím elküldésének és ACK bit meglétének ellenőrzése

Vagy megvárom polling-gal míg be nem áll az elvárt értékre így:
  1. while(!(TWCR&(1<<TWINT))){};


(Az SCL előosztó bitek nullára vannak állítva)

Köszi szépen!
(#) szabo.tivadar hozzászólása Márc 10, 2011 /
 
Sziasztok!

Esetleg valaki meg tudna szánni egy AT32UC3A1128, -256 vagy -512-vel? Kifizetném szívesen, csak nincs kinek, mert sehol se lehet ezeket most beszerezni, nekem meg nagyon kellene egy

Előre is köszönettel!
(#) Reggie válasza szabo.tivadar hozzászólására (») Márc 10, 2011 /
 
Csak AT32UC3A0512-vel tudnalak kisegiteni. (LQFP144)
(#) bencsik1906 hozzászólása Márc 10, 2011 /
 
Tiszteletem!
A robotika kezdőknek cikkben a szervos vezérlést hogy kell átírni (elég ha csak a főbb címzés változások megadására/megmutatásásra) egy atmega168-20pu-ra?
Előre is köszönöm!
(#) Reggie válasza lukit hozzászólására (») Márc 10, 2011 /
 
Az kar. Mondjuk en az AT32UC3C0xxx szeriat varom mar nagyon, de boltokban meg sehol sincs.
Viszont amit te keresel a farnell-nel van. Kb 2-3 nap alatt kezhez kaphatod toluk.
(#) Reggie válasza szabo.tivadar hozzászólására (») Márc 10, 2011 /
 
Ha esetleg rendelsz a farnell-tol es csokkenteni szeretned a koltsegeket, akkor szolj mert nekem AT32UC3B1128(3db) kene.
(#) szabo.tivadar válasza Reggie hozzászólására (») Márc 10, 2011 /
 
Sajnos a Farnell leghamarabb 47 nap múlva tud szállítani, azt se a 256-osból, ami kellene, de most az lenne a legkisebb gond.
(#) Békabácsi hozzászólása Márc 10, 2011 /
 
Sziasztok!

Van egy Topi-féle HEKIT-301 (AVR-ISP) programozóm, amelyhez építettem egy "igen bonyolult" áramkört (ami a Topi-féle leírásban is található).

Már három különböző időpontban ellenőriztem a vezetékezést, NYÁK-tervet, csatlakozókat, mert hiszen "az első dolgod mindig az legyen, hogy táp-föld és MOSI-MISO-SCK-RESET lábak helyesen vannak-e csatlakoztatva". Mérni nem tudom, mert ugyebár mindenféle ellenállások vannak jobbra-balra, néztem már processzorok nélkül is, de nincs se változás, se eredmény

Elakadtam és ehhez kérnék valamiféle ötletet, hogyan tudnék innen elmozdulni

Köszönettel:

BB
(#) lukit válasza Reggie hozzászólására (») Márc 10, 2011 /
 
A C-s sorozat tényleg jól néz kis spec alapján, majd valószínűleg áttérek én is arra. Farnell-nél szivesen szólok, csak én legtöbbet Fejér megyében vagyok.
(#) blaci válasza szabo.tivadar hozzászólására (») Márc 10, 2011 /
 
Az alábbi helyen nézted már? A múltkor vásároltam náluk, igazán rendesek, és az atmega88 még olcsó is volt.
Bővebben: Link
(#) szabo.tivadar válasza blaci hozzászólására (») Márc 10, 2011 /
 
Köszi, néztem, nekik sincs sajnos. Írtam még a többi cégnek is, amik az Atmel oldalán voltak, mint viszonteladók, csak azok nem válaszoltak. Mondjuk az Atmel se, amikor mintát kértem.
(#) Steven19 válasza Békabácsi hozzászólására (») Márc 10, 2011 /
 
És mi a kérdés?
(#) kovacsj hozzászólása Márc 11, 2011 /
 
Sziasztok!

A HEStore-ban kapható GSM modulok esetében SMS-t AT-parancsokkal kell küldeni?

Meg lehet csinálni ezt egy Atmega2561-el?

Köszönöm előre is!
(#) flathead hozzászólása Márc 11, 2011 /
 
Sziasztok!

Van egy problémám, amire nem tudom, hogy hogy keressek rá a he fórumban, úgyhogy leírom, hátha tud valaki megoldást:

Codevision AVR- ben programozok, a hardware egy atmega128. Sajnos csak az USART1 van kivezetve a panelrea (nem én terveztem).

A probléma: Egy LM35 hőmérséklet szenzor megy a 0-ás ADC-re, ennek a 10 bites értékét szeretném küldeni soros portra, két byte-ban. Az itoa() függvény valamiért nem működik rendesen, próbáltam úgy is, hogy egy for ciklusban 0-tól 1000-ig adok be egy integert az itoa() függvénynek, majd az itoa()-ban megadott két byte-os char array-t küldöm egymás után a soros portra,de nagyon furcsa értékek érkeznek, erről csatoltam a forráskódot, a include-okat és hasonlókat nem másoltam be.

[code=c]
int val;
unsigned char chval[5];

void main(void)
{

while (1)
{

for(val=0;val<=1000;val++)
{
itoa(val,chval);
putchar1(chval[0]);
putchar1(chval[1]);

delay_ms(500);
}



};
}
}

És itt vannak a PC soros portján fogadott adatok:

Data received: 048 000
Data received: 049 000
Data received: 050 000
Data received: 051 000
Data received: 052 000
Data received: 053 000
Data received: 054 000
Data received: 055 000
Data received: 056 000
Data received: 057 000
Data received: 049 048
Data received: 049 049
Data received: 049 050
Data received: 049 051
Data received: 049 052
Data received: 049 053
Data received: 049 054
Data received: 049 055
Data received: 049 056
Data received: 049 057
Data received: 050 048
Data received: 050 049
Data received: 050 050
Data received: 050 051
Data received: 050 052
Data received: 050 053
Data received: 050 054
Data received: 050 055
Data received: 050 056
Data received: 050 057
Data received: 051 048
Data received: 051 049
Data received: 051 050
Data received: 051 051

Ezek az értékek az első néhány érték, 0-ról indul elvileg a for ciklus.

Kérem aki tud, segítsen!
Köszönöm!>
(#) Reggie válasza flathead hozzászólására (») Márc 11, 2011 /
 
Nem a karaktereket kuldi ki neked a putchar, hanem a hexa kodjat a karakternek. A 000 a string lezaro, a 048=0, 049=1, 050=2, es igy rendre.
(#) Reggie válasza kovacsj hozzászólására (») Márc 11, 2011 /
 
1. A SIM300C-t megneztem neked, az AT paranccsal megy. De nezegesd meg az adatlapokat, kb az elso oldalon irjak.
2. Igen.
(#) kovacsj válasza flathead hozzászólására (») Márc 11, 2011 /
 
Az itoa()-nak nem kellene egy harmadik paraméter?
(#) kovacsj válasza Reggie hozzászólására (») Márc 11, 2011 /
 
Köszönöm, mindenképpen megnézem, mert támadt egy ötletem.
SMS-sel kapcsolom a villanyt. De 300 km-re.
(#) Reggie válasza kovacsj hozzászólására (») Márc 12, 2011 /
 
Hajra. (De szerintem meg 6000km-rol is menne)
(#) Massawa válasza Reggie hozzászólására (») Márc 12, 2011 /
 
Söt SMS sem kell hozzá - akár ingyen is megy....
(#) kovacsj válasza Massawa hozzászólására (») Márc 12, 2011 /
 
Nekem SMS kell, mert több funkciót szeretnék! De ezeket majd később.
Következő: »»   313 / 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