Fórum témák
» Több friss téma |
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
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)
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
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.
aham, köszi... csak gondoltam kiindulási alapnak jó lenne valami
Z80-at programoztál már? Annak tényleg sok van )))
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
É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.
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:
SZerintem a Z80-nak több mint 20 évvel a megjelenése után már nincsenek titkai
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.
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!
Igen elég egy unsigned long integer változtót deklarálni. Utána a ++ -al mehet a növelés.
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?
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.
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.
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!
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
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).
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...
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...
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.
É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:
Ajanlanam neked ezt az oldalt, itt megvan minden az USB - soros, USB - parhuzamos atalakitashoz
http://www.recursion.jp/avrcdc/
Köszönöm. Szerintem még lesz kérdésem, de először a kütyüt össze kell rakjam.
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...
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??
Mintha kozos osztojuk van..Lehet ebben valami ...
|
Bejelentkezés
Hirdetés |