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
Ez remekül hangzik. Köszönöm a segítségeteket! Utána olvasok akkor ennek az iránynak rendesen és nekiülök.. Köszi!
Sziasztok!
Multkor vettem egy AVR STK 500-as programozót. Működött is rendesen, de most valamiért nem ismeri fel a gép. Lehet hogy a gépem rossz mert már ráférne egy újratelepítés, de akkor sem értem hogy miért nem jön a hardvervarázsló. Amikor összekötöm a géppel , az ad 3-szor egy gyors hangot és annyi. Tehát még a drivereket sem tudom feltelepíteni. Mi lehet a hiba?
Programozó _pontos_ típusa?
A gyári soros porti . Az nem csipog... Ha FTDI driveres: FTClean-nal pucold le a drivert. Ha másféle, akkor pl. a USBDeView programmal...
USB eszköznél a 3 pittyegés arra utal hogy:
1: driver hiba, pl. le lett tiltva, megsérült, stb. 2: nem ismerhető fel a cucc - elromlott Hogy megtudd mi a baj, az eszközkezelőt(start->futtatás->devmgmt.msc) kell elindítani. A kihúzás/bedugás alkalmával frissül a lista, azt kell megnézni hogy ami eltűnik/megjelenik arra mit ír ki. Ha FTDI, AVR-Doper, MCP2200, "Virtual Serial Port" vagy más értelmes szöveg akkor driverrel van gond. Ha "ismeretlen eszköz" akkor az USB résszel van gond, pl. megtörhetett a kábel, vagy a vezérlő IC hibás.
Még mindig nem sikerült megoldani megszakítással a led ki és bekapcsolását. Az igazság az hogy a kapcsolásban sem vagyok biztos hogy jó amit csináltam. A egy AtTiny45-ön a PB4es lábra egy ledet tettem a PB2-esre/INT0 miatt/ egy nyomógombot melynek a másik lábát GND-re kötöttem. Ehhez az alábbi kódot írtam:
Tudnátok segíteni mit rontottam el. Köszi!
100 Ohm-al is ugrál. Szerintem a szenzor lesz a ludas, ha testre kötöttem a bemenetet akkor is ugrált, csak pozitívra kötésnél állt be nullára. Megpróbálok keresni rendes digitális kimenetű hall IC-t, mert ez csak egy nyitott-kollektoros IC.
A PCMSK a PCINT-es megaszakítást engedélyezi így ha nincs a programodban benne a megszakítás kezelő, akkor "lefagyhat" az avr:
vagy nem kell a PCMSK regiszter beállítani. A másik ami gondot okozhat, ha nincs felhúzó ellenállás a nyomogombon, akkor a belső ellenálást kellene bekapcsolni:
Main-ban a while előtt engedélyezni kell a megszakításokat a sei(); paranccsal.
Hello! A kapcsolás milyen? Egy nyomógomb? Kapcsoló?
Ez alapján inkább kapcsoló, mert "Any logical change on INT0 generates an interrupt request." Neked inkább ez kell, ami lefutó élre hívja meg az interruptot:
Na ez nem tudom hogy mire kell, de ha a GIMSK-ban a PCIE nincs engedélyezve akkor hatástalan:
Tehát ettől nem fog lefagyni az AVR ha nincs lekezelve, de nem is fog semmi se történni! Te az INT0-t akarod használni, ez eddig OK. Ezeket pedig kihagytad az inicializálásnál:
Kompletten:
Megnéztem hogy mi a hiba. Amikor bedugtam a kábelt jött a COM3 portnál a felkiáltójel és azt írta hogy 0. hely AVR Doper. Tehát akkor csak driver hiba.
Most honnan tölthetek le drivert?
A programozó használati útmutatója és drivere innen tölthető le: Bővebben: Link
Win7 alatt vagy az aláírásellenőrzést kell kikapcsolni, vagy az alábbi kiegészítést kell elolvasni és végigcsinálni: Bővebben: Link
Köszönöm a drivert!
Most már felismeri a programozót a gépem!
Köszönöm a sok segítséget! Most már működik és elég jól megértettem a kódban a hibáimat, most próbálkozok a pergés mentesítéssel. Viszont olyan kérdésem van, hogy ebből
Úgy néz ki a pergés mentesítés már működik. De még egy kérdés merült fel bennem. Mi a különbség a két utasítás között: ^= és &= ?
Sziasztok!
Miért van az hogy az AVR Studioban nem tudom lefordítani a programot ha a build gombra kattintok? Az üzenetablakban megjelenik a lefordítás dátuma és kész. Valamiért nem megy továb.
bitenkénti "ÉS" (AND) operátor (igaz ha mindkét bit igaz):
a &= b; -> a = a & b; bitenkénti "VAGY" (OR) operátor (igaz ha bármelyik bit igaz): a |= b; -> a = a | b; bitenkénti "kizáró VAGY" (XOR) operátor (igaz ha a két bit eltér): a ^= b; -> a = a ^ b;
Idézet: „hogy derűl ki hogy a felhúzó ellenállás be van kapcsolva és hogy néz ki a kód ha nincs?” Ez csak beallitja a portot:
Lekerdezni igy lehet:
De van aki igy jobban szereti (ugyanazt csinalja):
Vagy a WinAVR/Toolchain nincs telepítve, vagy az AVR Studio telepítőt kell újra lefuttatni!
Találtam itthon egy ATmel csippet és van egy avr programozóm csak nem tudom hogy melyik vezeték hova megy ? Mert ami a programozóra van írva az nem egyezik pedig ezzel a programozóval álítólag lehet programozni ezt a chipet!
AT29C010A http://www.gme.cz/dokumentace/944/944-033/dsh.944-033.1.pdf A programozómon lábai : MISO ; SCK ; RST ; MOSI ; GND ; VTG Nem tudom melyiket hova kössem ? Előre köszönöm a válaszotok
Ez egy flash memória(128KBájt), más funkció, más filozófia, más interfész.
Ha nagyon programozni szeretnéd, 28 vezetéket kell bekötnöd mivel csak párhuzamosan programozható. Egy 40 lábú AVR ideális megoldás, shift regiszteres megoldásokat kerülném mert iszonyú lassú...
Sziasztok!
Több AVR-t kellene használnom és ezek kell, hogy kommunikáljanak egymással. Alapvetően UART vagy I2C lenne a kegoldás, de ezek az AVR-ek messze vannak egymástól. 10-100-200 méter. Ekkora távolságon hogyan tudnának biztonságosan kommunikálni egymással? RS485 jó lehet? Hogyan kell ezt megvalósítani? Persze utána olvasok közben, de jó lenne egy kis iránymutatás és ötletek.
AZ RS485 tökéletes lehet a számodra. Arra azért érdemes figyelni, hogy az RS485 -ös szabvány nem definiálja a protokollt csak az elektromos paramétereket. Javaslom, hogy ne találd fel a spanyol viaszt és egy kipróbált és jól működő protokollt használjál. Pl. BenBus -t Kábelnek felhasználható sima olcsó UTP kábel. Csatlakozóknak meg ugyancsak olcsó és könnyen beszerezhető UTP csatlakozók.
Szia!
Néztem a BenBus-t és tetszene is, de basic-ben van nekem C kellene. Egyébként amit készülük megvalósítani: Lenne 1db Master és max. 4db Slave AVR. A Slave-nek az lesz a dolga, hogy két ponton hőmérsékletet mér és ezeket elküldi a Mater vezérlőnek 30 másodpercenkét. A Master tárolná az értékeket és az aktuálisat kiírja az LCD-n. A másik feladata a Slave-nek, hogy lesz 8db digitális bemenet és 12db relé kimenet. Ha bármelyik bemenet magas szintre kerül akkor a Slave megérdezné a Master-t, hogy mit csináljon? Melyik relét vagy reléket huzza be. Ezt a Master egy előre definiált logika alapján mondja meg a Slave egységnek. Lenne még némi logolás is a Slave egységek munkájáról. Szerintetek ez az elgondolás egyébként megvalósítható?
Nem jó. A 485-s kezelése 1 master alapúan használható!
Azaz a master kérdezgesse végig a SLAVE-ket, avgy utasítsa őket. Pl: M: #1-XXXX S1: V1YYYYY M: #2-XXXX S2: V2ZZZZ szóval valami ilyesmi protokoll....
Ezt kifejted bővebben mert nem értem vagy fogalmi zavarban vagyok.
Számomra a Master jelentése: - Loggolás, adat/állapot megjelenítás LCD-n, Slave kérdésére válasz Slave jelenése: - Adatküldés a Master részére, állapot küldés és paracs kérés.
A slave magától nem kezdeményezhet adatküldést, csak parancsra. A parancsot a masternek kell kiadnia, hogy utána válaszoljon rá a slave. Tehát kérdezz-felelek folyik a master és slave eszközök között.
Ez olyan, mint az iskolában a felelés. A tanár kérdez(master), a diák válaszol(slave). De a diáknak hozzá intézett kérdés nélkül csöndben kell ülnie.
Akkor én lényegében kifordítottam a zoknit.
Ezek szerint akkor jó a dolog, ha folyamatosan nézegetem a Slave AVR-ek állapotát vagyis megkérdezem "na most, hogy vagy?" és a kapott válasz alapján válaszolok neki, hogy mit tegyen és a kapott választ logolom.
Igen. A Slave (szolga) neve hallgass. csak akkor beszélj, ha előtte kérdeztek.
Mert mi van ha 3-4 szolga egszerre beszél? Mondjuk osztályterem .
Tud valaki egy C-ben íródott szabadon használható protokoll-t RS485-re? A BenBus-t nem tudom átírni és ahogyan olvasgatok a témában saját protokol fejlesztés nagy meló lenne. Master-Slave megoldásra van szükségem relékártyák (ezek a Slave) vezérlésére.
Ha csak MASTER->SLAVEx irányban megy a koimmunikáció, szerintem a DMX-et lehetne használni.
Bár meg sose volt dolgom vele, ha jól tudom akkor ez annyiból áll, hogy egy fix felépítésű csomagot kiküld a buszra, ami minden slavehez tartozó adatot tartalmaz, keretet, CRC, stb..., és a slave-ek a címük által meghatározott "szeletet" szedik ki az adathalmazból. Ezt nem lehet annyira bonyolult leprogramozni. |
Bejelentkezés
Hirdetés |