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   21 / 840
(#) DRKonor hozzászólása Ápr 18, 2007 /
 
Sziasztok! Pangás van!
Itt egy megoldandó feladat:
ATmega16 ->16MHz, áram mérése ADC1 és ADC0 között belső ref.-ről 10x erősítéssel.
Nos nekem nem műkszik. ADC7- en mérek 0-2,5V ig hibátlanul, majd átváltok a "9"-es csatornára árammérésre, de mindig csak 1020-at kapok vagyis 3FC-t ami minusz néhány. ADC0 a földre kötve ADC1 a bemenet!
10mV-30mV-ig adok feszt rá de semmi változás. Akármelyik dif. csatornára kapcsolok ugyan ez a jelenség.
Valaki használta már dif mérésre az Atmegát????
(Free running, és mindig leállítom majd ujraindítom az AD-t)
(#) zeusz7 hozzászólása Ápr 19, 2007 /
 
Hello!

Teljesen kezdő vagyok az AVR-ekhez, eddig PIC-kel foglalkoztam, de azzal se magas szinten.

Egy AT90S2313-am van és egy olyan mintaprogit szeretnék kérni, ami annyit csinál, hogy minden I/O lábát kimenetre állítja és 1-et adjanak ki.

köszi
(#) zeusz7 hozzászólása Ápr 19, 2007 /
 
ja és lehetőleg Assemblyben
(#) potyo válasza zeusz7 hozzászólására (») Ápr 19, 2007 /
 
Adatlapban benne van minden, de szerintem mondj le az assemblyről. Ezeknek túl sok utasításuk van ahhoz, hogy érdemes legyen assemblyben foglalkozni velük.
(#) zeusz7 válasza potyo hozzászólására (») Ápr 19, 2007 /
 
aham, köszi... csak gondoltam kiindulási alapnak jó lenne valami
(#) Dudus válasza potyo hozzászólására (») Ápr 20, 2007 /
 
Z80-at programoztál már? Annak tényleg sok van )))
(#) Hurka válasza Dudus hozzászólására (») Ápr 21, 2007 /
 
Hellosztok! Gorsan szükségem lenne egy rögtönzött szkópa. Arra gondoltam, hogy van egy ATMEGA8-asom és azt kéne vhogy rátenni sorosportra. hangfrekihez kell... Rajz és megjelenítő szoftver érdekel!
Jah, a belső adc-t szeretném felhasználni...

Segítségeteket előre is köszi: Hurka
(#) vegyészmérnök válasza Hurka hozzászólására (») Ápr 21, 2007 /
 
Én Attiny13-mal csináltam ilyen szkópszerűséget. A mért ADC értéket soros porton küldte a PC-be és az Excel egyből ábrázolta az adatokat. A soros kommunikációt szofrveresen kellett megoldani, így másodpercenként 80 mérést tudott végezni. Atmega8-on talán gyorsabb a hardveres soros kommunikáció miatt, de hangfrekvenciás mérésekhez szerintem így is kevés lesz.
(#) szabi_o válasza Dudus hozzászólására (») Ápr 24, 2007 /
 
Minél több utasítása van, annál jobb. Amúgy a Z80-ak van még ráadásul több mint 100 nem dokumentált utasítása is. :circling:
(#) Dudus válasza szabi_o hozzászólására (») Ápr 24, 2007 /
 
SZerintem a Z80-nak több mint 20 évvel a megjelenése után már nincsenek titkai
(#) szabi_o válasza Dudus hozzászólására (») Ápr 26, 2007 /
 
Igen, én a gyártó (Zilog) által nem publikált utasításokról beszéltem, a proci megjelenésekór.
Amúgy utánanéztem, 696 deklarált, és 458 rejtett (később az utasításkészlet hiányosságait alapúl véve kistudírozott - pont mint a periódusos rendszer esetében ) utasítása létezik.
(#) Ripley hozzászólása Ápr 28, 2007 /
 
Sziasztok!

Nyolcbites mikrokontrollerben szeretném számolni hogy hányszor ment ki a portra az adat, lényegében végtelenszer lefutó ciklus ciklusszámát akarom mérni.
A kérdésem az lenne ha egy szamlalo++ utasítást használok akkor ez mennyit tud számolni, összefüggésben van-e a változó típusával?
(Ha csak nyolc bitnyit, azaz 0-255-ig, akkor több számlálót kell használnom, mivel 100E-es nagyságrendű értékeket kell számolni. (Kb 2^18 a nagyságrend.))
Vagy elég ha longként adom meg a típusát a változónak, és C fordító majd elintézi a többit (csinál egy 32 bites számlálót)?
Válaszokat előre i köszi!
(#) Gory válasza Ripley hozzászólására (») Ápr 28, 2007 /
 
Igen elég egy unsigned long integer változtót deklarálni. Utána a ++ -al mehet a növelés.
(#) Ripley válasza Gory hozzászólására (») Ápr 28, 2007 /
 
Köszönöm a választ!
(#) gtk hozzászólása Ápr 29, 2007 /
 
Sziasztok!

ATmega8 -nal a PORTC-t sehogy sem tudom hasznalni.Azaz hiaba irok ki barmit ra nem jelenik meg a kimeneten.

Az AVCC is tapon van.

Van valakinek otlete?
(#) Gory válasza gtk hozzászólására (») Ápr 29, 2007 /
 
Azon van JTAG? Esetleg az még bekavarhat, mert az ATmega16-nál a C porton van a JTAG, és ha azt akarod használni akkor a fuse bitet ki kell szedni. De ez csak arra a 4 lábra vonatkozik.
(#) gtk válasza Gory hozzászólására (») Ápr 30, 2007 /
 
Megoldodott.
Azt hittem irok ki ra valamit ,kozben nem irtam ki ra semmit: OVF rutinban kapott egy valtozo erteket,es elfelejtettem volatile-nak deklaralni.
Nincs JTAG.ADC port,meg I2C.
(#) davidov hozzászólása Máj 6, 2007 /
 
Sziasztok!

Egy elég furcsa problémam van.
Valami miatt ha engedélyezem az interruptokat a sei() utasítással, a programom újraindul.
Pontosabban attól, hogy beírom ezt a parancsot nem, csak ha a timereket inicializálom, még akkor is, ha pwm módra állítom be.
Egyébként egy olyan résznél indul újra, ami már korábban ment rendesen, szóval biztos nem azzal van a gond.
Először a WDT-re gondoltam, hogy az csinál valami hülyeséget, de ebben a uC-ben nincs ilyen (ATmega16).

Van valakinek ötlete, hogy mi lehet a baj, mert timer IT nélkül nem sokra megyek.

Előre is köszi a segítséget!


(#) gtk válasza davidov hozzászólására (») Máj 6, 2007 /
 
Lehet hogy a Timer IT -ben valami hibas kod van?
(Es mikor beallitod/engedelyezed a Timert akkor fut le)
Idézet:
„Először a WDT-re gondoltam, hogy az csinál valami hülyeséget, de ebben a uC-ben nincs ilyen”

Hogy hogy nincs?ezt hogy erted?Az van amit irsz
(#) davidov válasza gtk hozzászólására (») Máj 7, 2007 /
 
Ha a timer IT rutin üres, akkor is újraindul, abban az esetben is, ha pwmnek állítom be.

Egyébként tényleg van benne WDT, én kérek élnézést, valamiért azt hittem, hogy az csak a nagyobbakban van (persze nem nyúltam hozzá, így elvileg nem az indítja újra).
(#) szucs_g hozzászólása Máj 7, 2007 /
 
Sziasztok! Rendkívül amatőr vagyok, a szakmám sem vág a témához, de kényszerűségből bele kellett vágnom egy USBről parallellre való átalakítóba. Találtam egy német oldalt, ez alapján lassan elkészül az átalakító. Állítólag firmwaret kell programozni, hogy a PCB-n csücsülő Atmega 8 procit működésre bírjuk és azt is csinálja, ami nagyon muszáj neki (ti. az egész kütyü a rendszer alatt mint LPT akárhány jelenjék meg). Bocs, hogy ilyen lamma kérdéssel fordulok hozzátok, de nem tudom hol kezdjem el...
(#) Norberto válasza szucs_g hozzászólására (») Máj 7, 2007 /
 
Huhhh...akkor azt hiszem, rossz hírt kell közölnöm

Ugyanis USB és LPT átalakításra már kifejlesztettek egy speciális áramkört, aminek kizárólag ez a feladata, és még csak programozni sem kell! Tehát az Atmega 8-assal bajlódni szerintem fölösleges...

FT245 a típusa, nézz utána! Ha minden igaz, itt az oldalon is volt már róla szó pár helyen...
(#) szucs_g válasza Norberto hozzászólására (») Máj 7, 2007 /
 
ok-ok. Láttam. Na, de mégis. Ugyanis beszívtam, megvettem az alkatrészeket és itt fityeg az összes.
A német fickó igéri, hogy majd valaha megírja a firmwaret, de mikor lesz az. Ez a feladat persze arra is jó lett volna, hogy megismerkedjek (orvosként) a chippel. Persze, ha nem hát nem.
(#) Norberto válasza szucs_g hozzászólására (») Máj 7, 2007 /
 
Én nem azt mondtam, hogy tegyél le az Atmega felhasználásáról, de ha te is azt mondod, hogy ki tudja, mikor lesz kész a német emberke a firmware-rel, akkor lehet jobban jársz (időben), ha az FTDI gyártónak az IC-jét használod fel...

Ha viszont abszolut az a cél, hogy ezen a projekten keresztül megismerkedj az Atmegákkal, és ez (határ)időtől és felhasználástól is teljesen független, akkor viszont szerintem nyugodt szívvel belevághatsz a témába! Csak győzd kivárni azt a német ürgét :yes:
(#) gemo válasza szucs_g hozzászólására (») Máj 7, 2007 /
 
Ajanlanam neked ezt az oldalt, itt megvan minden az USB - soros, USB - parhuzamos atalakitashoz
http://www.recursion.jp/avrcdc/
(#) szucs_g válasza gemo hozzászólására (») Máj 7, 2007 /
 
Köszönöm. Szerintem még lesz kérdésem, de először a kütyüt össze kell rakjam.
(#) Gory válasza davidov hozzászólására (») Máj 7, 2007 /
 
Az nem lehet hogy az interrupt vektoraid valahogy rossz helyen vannak. És a timer It helyett a Resetre ugrik? Vagy rossz sorrendben írtad oda őket vagy nem tudom...
(#) davidov válasza Gory hozzászólására (») Máj 7, 2007 /
 
Megvan a hiba!!

A programot C-ben írtam , így nem foglalkoztam az interrupt vektorokkal, de mikor írtad, hogy lehet, hogy rossz a sorrend, egyből eszembe jutott, hogy régebben is volt már egy ilyen problémám.
Ezért azt csináltam, hogy elővettem egy régi műküdő programot, amiben a timer1-et és a timer0-t (nagyjából) ugyanolyan funkcióra használtam (pwm, és timer megszakítás), majd szépen el kezdtem a régit átalakítani úgy, ahogy most szeretném használni a programot.
Minden változtatásra szépen futott a progi (persze nem csinált semmi értelmes dolgot), egészen addig, amíg az utolsó különbséget is kijavítottam. Ez az volt, hogy a timer1_init() fgv-t a régi programban előbb hívtam meg mint a timer0_init()-et, majd amikor ezeket megcseréltem egyből újra indult.
Igazából nem sikerült rájönnöm, hogy ez miért van, de ha előbb a timer1-et, majd a timer0-t inicializálom, akkor gond nélkül fut.

Van erre valami magyarázat??
(#) gtk válasza davidov hozzászólására (») Máj 8, 2007 /
 
Mintha kozos osztojuk van..Lehet ebben valami ...
(#) davidov válasza gtk hozzászólására (») Máj 8, 2007 /
 
Nem teljesen értem, hogy ez mit jelent...
Következő: »»   21 / 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