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
Itt találsz egy példát ATmega8-ra. Ha a timert átírod ATtiny2313-ra, akkor működik azon is. Az adatlapban hasonlítsd össze a regisztereket, lehet hogy nem is kell semmit módosítani.
Szia. Köszönöm szépen,de Érdekes,mert ha proteusban fordítom le akkor hibával kiáll,ha meg avrstudioval,akkor jó.
Proteusban nekem sem mentek az osszetettebb kodok, amik a valosagban hiba nelkul lefutottak.
Ezért kelll élőben tesztelni mindent.
![]()
Üdv, ha jól értem, a pin change interuptot az int0:2 pinek aktiválják, de sajnos nekem 2 csatornát kéne olvasnom és csak a portb0:5 és a porta pinek szabadok, átírhatnám a kódom ahogy te javasoltad hogy overflowoknál növeljem egy változó értékét, de nem vagyok biztos benne hogyan kéne, úgy értem én azt is ugyanúgy csinálnám mint az eredeti kódom, de hát az meg nem működik, vetnél egy pillantást rá hogy mért nem? Az eredeti kérdésem a kóddal kapcsolatos és mindenki átsiklik rajta.
ui.: az overflow részét értem ISR(TIMER0_OVF_vect) { count++; } Azt nem értem hogyan észleljem a raising edge-t és a falling edge-t amikor a pinb0 high-ra vált és amikor low-ra
Ha ennyi a feladat,akkor szerintem felesleges túlbonyolítani prell mentesítéssel:
tiny2313-ra,nem teszteltem.
Hmm, egész elfelejtkeztem róla, hogy itt nem egy ATMega328P-ről van szó. Ott szinte minden láb használható megszakításra is.
Itt kénytelen vagy az INT0-1 jelölésű 2 láb közül választani egyet (ha jól látom az INT2 nem jó, mert csak egyik irányú változásra lehet konfigurálni). Más láb nem tud megszakítást generálni. Őszintén szólva az ATXMEGA-k, amiket mostanában programozok, olyan szinten elkényeztettek, hogy nem sok kedvem van már sima ATMEGA-t programozni. ![]() A hozzászólás módosítva: Szept 16, 2015
sziasztok!!
Sikerült felprogramoznom a töltő Atmega32-es prociját. Szépen elindul a program,a nyomógombokra reagál "csipog a piezo ahogy nyomkodom" ,de a kijelző valamiért nem akar elindulni csak a felső sorban vannak a kis négyzetek. A kérdésem az lenne,hogy olyan létezhet,hogy az Atmega32-es kimenetei rosszak és ezért nem inicializálja a kijelzőt? Sick-Bastard fórumtársunk nagyon sokat segített már nekem ebben a projektben,neki köszönhető,hogy legalább eddig eljutottunk,de sajnos most C vágány van és fogalmam sincs merre tovább.
Ez nem lenne egyszerubb?
A feladata szerint nem kell megszakitast hasznalni. (vagy megis?) A prell meg azert felesleges, mert mindegy jelen esetben hogy az ON vagy az OFF most 1x vagy 100x kattan 10-100ms alatt. Mondjuk ha egy gombos ON/OFF megoldas lenne XOR-al, akkor mar szamitana. Fontosabb hogy meglegyenek a fel/lehuzo elenallasok.
Túltárgyaltuk !
![]()
Köszönöm fiúk.Sokat segítettetek
![]() Hálám kerget titeket ![]() Szólok majd mire jutottam.
Ezzel a kapcsolással. sajna nem működik
![]() Természetesen átírtam a kapcsoló pineket. Egy led sem kapcsol fel.
A kapcsolason a PD4 egy PD5 a levegoben log, a logikai 0 es logikai 1 kozott ingadozik.
R1 egy R10 ne a foldre legyen kotve hanem a tapra (3,3V 5V amit epp hasznalsz). Keszitettem egy gyors kapcsolasi rajzot. R1-R2 a lehuzo ellenallasok. R3 szerepe csupan amper limitalas, ha jol tudom ez itt elhagyhato (javitast kerek ha tevedek).
Üdv!
Van két I2C eszközöm, slave-ek, a címük ugyan az és NEM lehet változtatni. ATMega8A MCU-val használnám őket, de azon csak egy db TWI port port van, és ugye kettő kéne a két eszközhöz, mivel ugyan az a címük. Próbáltam, hogy az 5V-os tápfeszüket rákötöm az AVR két különböző lábára és mindig csak az egyiknek adok áramot, de amikor nem kapott áramot az egyik és rajt "lógott" a TWI buszon a másik áramot kapó mellett, akkor nem működött a busz. Ha kihúztam az áramot nem kapó példány SCL és SDA vezetékeit, akkor működött a busz a másik, áramot kapó darabbal. Tehát valahogy gondolom le kéne választani az I2C buszról a használni nem kívánt példány SDA és SCL lábait. Hogyan lehetne ezt megtenni? Optocsatolóval esetleg? Milyennel? (Egyébként két NXT Ultrahang szenzorról van szó.) Előre is köszönöm a válaszokat! A hozzászólás módosítva: Szept 16, 2015
Az IC adatlapjában kell megkeresni azt amit csatoltam neked. A D, DE, RE lábon 2V-tól H szintet érzékel. Az ICt nem ismerem de első ránézésre a D lábon küldesz neki adatot a mikrokontrollerből. Tehát nem kell szintillesztés csak arra a lábra ahol az IC küld a mikrokontrollernek adatot. Oda jó egy feszosztó. Viszont ne 3,3Vra osszon le, hanem 3,1 max 3,2Vra mert az AVR-ek sem/nem szeretik ha bármelyik lábukra a tápfesznél nagyobb feszültség kerül.
Szia! Talán jó megoldás lehet a demultiplexer. Van digit meg analóg is, árban / tokban CD4016/66 (ha van 2db engedélyező lábad), ha nincs, csak 1db, akkor Cd4051-52-53 valamelyike. persze a "lekapcsolt"busz-t húzd fel külön-külön. Másik, olcsóbb megoldás, hogy csak az SCL-t kapcsolod át (SDA nem számít, max sok-sok Start/stop-ot érzékel a cucc).
Hirtelen ez jött be, biztos van szebb megoldás. Talán 2db FET-el is megoldható a leválasztás. Ha már próbáltad a tápelvételt, lehet, működne, de nem a (+) táp elvételével, hanem a GND megszakításával. (ismerni kellene a parazita diódák hatását). Vagy a legegyszerűbb, megírod SW-ből a kezelést két külön portbitre...azért az I2C alap nem egy nagy dolog (gondolom nincs ütközéses multi-master vacakolás)
Voltage level shifter
A kep amit mellekeltem az egy gyors gondolat eredmenye. Eleg ha csak az SCL-t osztod el 2 fele, es a FET gate-et meg kulon vezerled. Ekkor vagy az egyik fog uzemelni vagy a masik. Eleg lehet 1-1 FET is csak akkor az S-D iranyra figyelni kell.
Valamit nagyon elronthatok
![]() Elkezdtem az alapoktól,az avr-t. Led villogtatás. Na már ez sem meg felíródik a program ami hiba nélkül lefordul. De reakció nincs a HW-n . Ezt építettem meg csak 2313-ra.
Huhh. Egy kis időt kérnék hogy megépíthessem,mert közben a marógépemen cseréltem főorsót.
Amúgy köszönöm szépen ![]() Lefordítottam ez a hiba:c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>" A hozzászólás módosítva: Szept 17, 2015
Na ez a hiba javítva
![]() ![]()
Ha csak most ismerkedsz, az AVR-ekkel, akkor inkabb egy probapanelen gyakorolj.
Sokkal egyszerubb lesz a hibakat kijavitani vagy ha kell akkor modositani a kapcsolason.
Igen most ismerkedek,és igen tervben van a próbapanel vétele is.
Csak az idő és a pénz ![]()
Nem az LV HV a baj. Hanem honnan hova 3,3 v -> 5v vagy 5v ->3,3v vagy 3,3v <-> 5v ?
3,3V <-> 5V mivel ezt I2C-nel is hasznaljak, oda pedig kell a ket iranyu kommunikacio.
Udv!
attika-nak van egy akku tolotje, amit egy AVR vezerel. Kapcsolassal nem szolgalhatok. A tipusa atmega32L-8AU, ez van benne gyarilag. Ami szamomra zavart okkoz, hogy a panelen egy 16MHz-es kristaly van, de az adott AVR hivataolsan csak 8Mhz-ig van hitelesitve. Kepes ez 16Mhzen menni, ha 5Von van megtaplalva? BOD 4Vra van bekapcsolva. Ami meg felmerult bennem, hogy az is lehetseges-e, hogy a program atirja az orajel osztasat DIV2-re, kettovel elosztja, es ezert csak 8MHzen megy? Ami meg fontos info, hogy a kerdeses AVR joparszor ki/be lett forrasztva, ezert egy egyszeru led villagtatos programmal leteszteltuk a kimeneteket, amik megfeleloen villogtak. Ez a teszt eleg-e ahhoz, hogy eletkepesnek minositsuk az AVRt? Es meg egy kerdes, amit attika is feltett, csak nem vagyok100%-igbiztos a valaszban: Az atmega32L lecserelheto e egy sima amtega32-re, vagy egy masik AVR-re, ha igen melyikre? Csak hex file van hozza, a kodot nem lehet ujrairni.
Az ’L’ jelzéssel ellátott működik Alacsony feszültségen is (3.3V, Max 8MHz), vagy (5V, Max 16MHz)
Míg a sima változat csak (5V, Max 16MHz) Ha csak Hex kódotok van nem érdemes AVR típust cserélni! A forrasztgatott AVRt tartsátok meg játszani a gyereknek! A hozzászólás módosítva: Szept 18, 2015
|
Bejelentkezés
Hirdetés |