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
Nem ragaszkodom a Flowcode-hoz, csak mint említettem a C nekem kissé kínai, ezért gondoltam egy folyamatábrát viszonylag könnyen össze tudok állítani és ezzel a feladat meg is van oldva, de tévedtem.
A nyelv és a környezet majdnem mindegy. Elő kell venned az eszköz adatlapját, és meg kell nézned, hogy miként tud PWM-et generálni, majd be kell állítanod a megfelelő regisztereket. Lásd adatlap 11. fejezet, 8-bit Timer/Counter0 with PWM.
Az Arduino például elrejtni ugyan előled a részleteket, cserében egy olyan kész megoldást kapsz, ami feleslegesen nagy kódméretű, nem hatékony, és egyáltalán nem biztos, hogy neked a legjobb. Nem tudod állítani a PWM módot, frekvenciát, stb. Ráadásul gyárilag az ATTiny13 nincs is benne. Kiegészítés: Ha nagyon gyorsan, kevés programozó tudással akarod csinálni, akkor szerencséd van, mert már létezik kiegészítő Arduinohoz ATTiny13-hoz: MicroCore. Itt annyi lesz a feladatod, hogy analogWrite(kimenet, kitöltési tényező), és már kész is. ![]() Idézet: „nem sikerült a PWM létrehozása” Kérdés maradt még, hogy milyen PWM-t szeretnél: -Frekvencia -Fast / phase correct -Kitöltési tényező stb
Ez a szimulátor szerint már csinál valamit. Ebből és az adatlapból már el tudsz indulni. PWM mód még nincs beállítva, csak a timer és az output.
Köszi, hogy érdemben foglalkoztál a problémámmal.
Kitöltési tényezős PWM-re van szükségem, a frekvencia PWM-et az emlékeim szerint FM (frekvencia moduláció)-nek hívják, mert ott a periódus idő is változik. (Természetesen nem kötekedni akarok, csak eltartott egy ideig, mire rájöttem ![]() Mint írtam az AVR assembly-vel, még csak most ismerkedem( eddig csak a MOS 6510 és az intel 8048, 8051 és ezek származékait programoztam assembly-ben). Még sok minden nem világos számomra, pl. mi célt szolgálnak a fuse bitek, valamint melyik regisztereket kell feltétlenül beállítani a program elején. Valamint eléggé zavarba ejt az előzőekhez képest az AVR-ek sokféle címzési módja. Ezért szerettem volna egy egyszerűbb programozási módszert (nyelvet?) használni, de ez a folyamatábrás lehetőség kibabrált velem. Az általad írt kódrészlet számomra némi magyarázatra szorul, mert nem ismerem a C nyelvet. Milyen szimulátort használtál? Ha jól értem ez a főprogram, ami egy végtelen ciklusban van és le vannak tiltva a megszakítások. A 20-as sortól nem értem a többit ![]() Megkérhetlek rá, hogy megírd C-ben a teljes programot? (Félreértés ne essék, nem lustaságból nem foglalkozom a C-vel, természetesen szeretném megtanulni a használatát, de nem túl sok szabadidővel rendelkezem és szorít a határidő, ezért is volt nagy pofára esés a Flowcode.)
Szia!
Köszönöm a segítségedet! Megoldódott a problémám, igaz nem C-ben, de sikerült összeállítani a programot. További szép napot kívánok! Idézet: „Megoldódott a problémám” Érdekel, hogy miként. Hátha más is tanul belőle. ![]()
Jogos a kérdés!
A feladatot Bascom-AVR-ben sikerült megoldani, bár nem minden része lett profi módon megoldva, de működik. A bekapcsolás utáni időzítést csak FOR-NEXT ciklussal tudtam megvalósítani, ezért az időzítést egy kicsit nehéz beállítani. Lehet, hogy van ennél elegánsabb módszer is, de ehhez nincs elég ismeretem sem AVR-ben, sem Bascom-os programozásban.
Wait, Waitms, Waitus utasítások vannak. A Timer0 8 bites, az ADC meg 10 (W: word), csak nehogy megtréfáljon, hogy négyszer kapsz 0-255 PWM-et az ADC értékétől függően.
A flash-ből nem a programot kapod vissza, hanem csak zagyvaságot. Le van védve az AVR. Vagy megírod a programot magad, vagy más, vagy felkeresed a gyártót, hogy küldjenek másik AVR-t. A programot szinte biztosan nem kapod meg.
Sziasztok!
Kezdő arduinosként kérdezném, hogy mi az a minimum áramkör, amit meg kell építenem, ha csak egy Atmega IC-m van? Lehet én vagyok a béna, de nem találtam meg ezt egyértelműen. Nem drága a fejlesztő board, de esetenként kultúráltabban nézne ki csak egy ic.... A másik kérdésem: Ha van egy programom, hogyan tudom kiolvasás ellen védeni? Lehetséges ez valahogy?
ATMega IC + 10 kOhm felhúzó a resetre + 100 nF kondenzátor a tápra.
Ha belső oszcillátoros, akkor ennyi. Ha nem, akkor kvarc és 2db kondi kell a kvarc lábai és a GND közé pluszban.
Igen, bár az AREF-et nem kötném össze a VCC-vel. Mindössze tennék egy 1nF/10nF-os kondit a GND és az AREF közé, az IC a programtól függően összeköti majd az AREF-et az AVCC-vel vagy a belső referenciafesszel. Ja igen, javasolt minden VCC-nek külön adni 100nF-os kondit.
A hozzászólás módosítva: Aug 28, 2018
Ok. Köszi!
A kérdés második részével mi a helyzet? Létezik bármilyen védelem?
Igen létezik. A fuse bitekkel tudod beállítani (lock bits).
Na ez viszont jó hír! A linkelt szimulátor felületét elnézve ez IDE alól nem megy, hanem valamilyen külső szoftware/programozó kell hozzá jól gondolom? Van erről bővebb infó valahol? (ha lehet magyarul...)
Bocs a sok kérdésért, de most vágtam bele komolyabban a dologba, a programozgatás áramkörépítésben már nem mai darab vagyok, de még soha nem kellett a megírt szoft. védelmével foglalkoznom...
Ez az ablak az IDE egyik dialógusa, nem külső program.
Atmel Studio 7
Tools / Device Programming A hozzászólás módosítva: Aug 29, 2018
Sziasztok! Egy olyan kérdésem lenne, hogy valakinek van-e tapasztalata első kézből a régi, és az Új (mondjuk Atmega128A ) gyártástechnológiával készült chip-ek különbségéről. Ami konkrétan érdekelne: ADC pontosság változott-e, zajérzékenység..? Megéri a régit venni (500Ft-tal drágábban) mondjuk a HESTORE-ból (feltéve, hgoy tényleg a régi szériát árulják)?
A hozzászólás módosítva: Szept 4, 2018
Nem, nem éri meg.
A váltás (sima helyett A): - a belső felhúzók értéke 10..20k helyett 80...120k lett - a reset felhúzója szintén - kisebb csíkszélesség a lapkán - kisebb áramfelvétel Bővebben: A vagy nem A? (TavIR)
Köszi szépen. Zajérzékenységről tudni lehet valamit? Esetleg IO portok robosztussága, vagy egy kis overclocking 1-2 MHz-vel?
Zajérzékenység? Tapasztalat: nem lett nagyobb (kivéve ha csak a belső felhúzót használod. Ott minden vacakot össze képes szedni (gyege felhúzóellenállás lett: 10k helyett 100k-val számolhastz/modellzhetsz))
Overclock: nem javasolt. Nálam 20 MHz-val simán mennek (adatlapi határ ![]() DE vannak kísérletező kedvűek: Bővebben: Link
Az Arduino bootloadere a kiolvasást is támogatja!
Azaz a fusebitekkel hiába véded! Megoldás: 1, fusebitekkel védeni _és_ külső programozóval égetni a chipet - bootloader nélkül. 2, fusebitekkel védeni, és a bootloadert olyanra kicserélni, ami _nem_ támogatja a visszaolvasását.
Sziasztok!
Nem olyan régen írtam AVR uC-s RS485 busz rendszerrel kapcsolatban. A kommunikáció már egész jól megy. Viszont van egy olyan gondom, hogy; be/ki-kapcsolási tranziens. Ha egy node-ot, lekapcsolok a buszról, resetelnem kell a mestert, hogy helyre álljon a kommunikáció. Max485 ict használok jelenleg. 120 Ohm lezárás. Gnd közös. Gondolkodom az adm2483 leválasztott busz meghajtón. Érdemes megvenni az adm-et vagy van tanácsotok számomra? Köszi, Dani.
A két szétfeszítő 680 ohm ellenállás hiányzik!
Ha mindenki vételen van, e nélkül nincs a busznak fix potenciálja! |
Bejelentkezés
Hirdetés |