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
Most viszont én is elakadtam. Attiny24 és DS32C35-ös RTC IC van összekötve(adatlap mellékelve). A gond ott van, hogy nem tudok dátumot beleírni és visszaolvasni. Az időt azt simán bele tudom írni, és olvassa is szépen, de a dátumra semmit nem csinál. VFD kijelző van bekötve, a dátumot kiolvasom és 255-öt ad vissza. Az RTC tápjával sorban van egy led, mivel az attiny 5V-ról jár, az RTC pedig 3,3V-ról. Így a led villan, amikor kommunikál a két eszköz, egyébként éppen hogy nagyon halványan világít. Ez az idő olvasásnál szépen látszik is, de a dátumnál semmi nincs. Mintha a proci nem is akarna kommunikálni. Itt a kódrészlet is ,amivel kiolvasom a dátumot.
Mi lehet a gond? Tegnap akartam megcsinálni, hogy magától átálljon az óra az átálláskor, de nem jött össze.
A PINB akkor is irhato, ha kimenetre van allitva az adott lab. Amelyik bit helyere egyest irsz, azon a biten meginvertalja a kimeneti erteket.
Igen, de a kimenetek állítására akkor is a PORTB-t szokás használni általában.
Ertem mar. En a kommentet sosem olvasom el, mivel a mikrokontroller sem azt ertelmezi De valoban a komment es a kod nem all pariban.
Idézet: „En a kommentet sosem olvasom el, mivel a mikrokontroller sem azt ertelmezi” Noha ebben tokeletesen igazad van, a kommenteknek megis fontos szerepuk van a szoftver fejlesztesben. Egy orok veszekedes a szoftver minoseg ellenorok es a kodolok kozott, hogy mi a kommentek szerepe, de ime egy tipp: A kommeteknek kell leirniuk, hogy a kodnak mit kellene csinalnia. A kod pedig ha nem azt csinalja, akkor hibas! Tehat a komment a mervado
Teny, de en ezt a fuggveny ele irom, soronkent semmi ertelme sincs a kommentnek, mivel egy sort mindenki tud ertelmezni. A soronkenti kommenteles szuksegessege egyfajta osszenepi teveszme a kezdo programozott kozott es ezenfelul oriasi pazarlas, mert ahanyszor atirod a sort irhatod at a kommentet is, vagy egy ido utan a kommentnek nem lesz koze az adott sorhoz, igy talalgathatsz, hogy melyik a rossz.
Igen, a teveszme az, hogy le kell irni mit csinal az utasitas -- az valoban csak a kezdoknek szol. Abban is igazad van, hogy ha a forras kellokeppen tagolt, akkor egy fugveny csak kis dolgot muvel, igy csak a fuggvenyt kell kommentezni. Ha azonban ez nem igy tortenik akkor vagy a tagolason kell valtoztatni vagy sorok koze szurt megjegyzesekkel kell feloldani a problemat.
Sziasztok
Most kezdtem az AVR foglalkozni A programozom meg is, van AVR910 (Szilva) A PIC-nél tudom, hogy melyik lábra mennek a programozó ICSP vezetékei, de az AVR nél nem Eben szeretnék segítséget kérni Mondjuk egy rajz vagy valami ilyesmi
Valakinek lenne valami ötlete, hogy Bascom-ban íródott programban arra, hogy kikapcsolás után is megtartsa a program egy változó értékét?
Please!
Csak nem tudom azt hogyan kell....
Adatlapban van példa olvasásra és írásra is. Épp pár napja foglalkoztam ilyennel. Nézz bele a vezérlő adatlapjába, ott is az eeprom részhez. Ott lesz benne a kész kód, amit csak be kell másolnod a programodba és azt és akkor írsz és olvasol, amit csak akarsz.
Köszi csak sajna annyi a baj, hogy én csak Basic nyelven "beszélek"
Akkor egy link. Gondolom Bascomban programozol. Itt van leírás az eeprom használatáról basicben. Bővebben: Link
Sajnos az oldalnak csak a tárolt verziója van meg.
Sziasztok
Elkészült az AVR910 programozom fel is, programoztam az ATTiny2313-mat Az első indításnál már világítót halványan az LED6 a sárga Ez valami zárlat vagy rosszabb?
Üdvözletem.
A következő problémába ütköztem, építenék egy motorvezérlőt 3 funkcióval, elsőnél a motor áll, másodiknál a motor forog folyamatos, míg a harmadiknál a motor forog míg egy résoptótól jelet nem kap, ekkor megáll egy potival megadott, adc1-en beolvasott értékig és aztán továbbmegy az optó következő jeléig. A HW késsz, ellenőrizve milliószor, a programmal viszont elakadtam: [code=c] $regfile = "m8def.dat" $crystal = 1000000 Config Portb.1 = Output 'Motor Config Pinc.5 = Input 'Optikai kapú Config Pinc.4 = Input '3 állású 1 állás OFF Config Pinc.3 = Input '3 állású 2 állás FOLYAMATOS SCROLL Config Pinc.2 = Input '3 állású 2 állás Képekig Scroll Config Portc.0 = input 'poti 1 idő 'Config Adc = Single , Prescaler = Auto , Reference = Avcc 'adc 'Start Adc 'Dim Q As Word , Channel As Byte 'adc változója 'Channel = 1 Do ' Q = Getadc(channel) If Pinc.4 = 1 Then Portb.1 = 1 If Pinc.2 = 1 Then Wait 1 While Pinc.5 = 1 Waitms 100 Wend Portb.1 = 0 'Wait Q Wait 5 End If End If Loop Az q-hoz érve kifagy az egész, ezért q helyett fix 5mp-et adtam meg és csodák csodája, hibátlanul lefut. Illetve majdnem de ez másodlagos. Kiollózva az adc-s részeket készült egy kis tesztprogi: $regfile = "m8def.dat" $crystal = 1000000 Config Portb.1 = Output 'Motor Config Pinc.5 = Input 'Optikai kapú Config Pinc.4 = Input '3 állású 1 állás OFF Config Pinc.3 = Input '3 állású 2 állás FOLYAMATOS SCROLL Config Pinc.2 = Input '3 állású 2 állás Képekig Scroll Config Portc.0 = input 'poti 1 idő Config Adc = Single , Prescaler = Auto , Reference = Avcc 'adc Start Adc Dim Q As Word , Channel As Byte 'adc változója Channel = 1 'adc csatorna megadása Do Q = Getadc(channel) Portb.1 = 1 Waitms Q Portb.1 = 0 Waitms Q Loop ez is működik tökéletesen, együtt a kettő viszont nem hajlandó lefutni. Vajon mi lehet a probléma?
Az IC-hez tartozo adatlap "Memory Programming" fejezet "Serial Downloading" alfejezeteben van leirva.
Probaltad ugy is, hogy normal 3.3V-os tapot adsz neki? (Amugy mekkora a LED nyitofeszultsege?)
Egy kicsit pontosabban is leirhatnad, hogy mi tortent, es milyen aramkorben van az ATtiny2313, mert igy tul keves az informacio ahhoz hogy barki segiteni tudjon.
Sziasztok,
A melléklet kód egy kicsit kusza, (a hibakeresés miatt már mindenféleképpen átvariáltam.) de amit csinálna az igen egyszerű, lábakat kellene szépen 5V-ra húzni. Az első fele az irányregiszter beállítással nincs is gond, a gond a második résszel van. Ha nem látom szimulátorban, akkor nem hiszem el. Amíg adott porton belül beállítom a megfelelő lábat nincs is semmi gond, de amikor elkezdek egy másik portot írni, AZ ELŐZŐ PORT LÁBAIT LENULLÁZZA! A mások portba történő átlépéskor "elfelejti" a beállítást? Milyen beállítás van elrontva??? A bosszantó, hogy a program többi RS232-es része ADC-vel megy dalolva, egy lábat meg nem tudok beállítani?
Van remény??? Előre is köszi!
Hogy erted, hogy az elozo port labait lenullazza? Mibol latod ezt?
Az a vicc, hogy az időt simán tudom állítani, meg azt egyébként is mindig olvassa és eddig még nem volt gondom vele, de azért megtáplálom majd 3,3V-ról.
Sosem tudhatod hogy az IC melyik resze erzekenyebb a tapfeszultsegre... De a led utan legalabb rakjal hidegito es lehetoleg egy nagyobb (1uF) koruli kondit az RTC tapjara, hogy az adatatvitel es muvelet vegrehajtas miatti megnovekedett aramfelvetel ne okozzon olyan nagy zajt. Ha az AVR-t 5V-rol taplalod, akkor a komparalasi szint a magas bemeneti ertekhez min. 3V, ugyhogy hataron vagy erosen. Egy nagyobb tapzaj eseten mar atviteli hibak keletkezhetnek.
Ja bocs, néhány fontos infó lemaradt a hajtépés közben...
AVR Studio 4 -el nézem lépésről lépésre ATMEGA8 Már kiirtottam mindent az eredeti kódból, és ez maradt. Ezt léptetem a képernyőn. A DDRx regiszterek négyzetei szépen feketednek lépésről lépésre, és úgy is maradnak. A PINx regisztereknél jön elő, hogy pl az Első PINB-t beírja, majd amikor beírja a PIND elsőjét a PINB-t letörli. Amikor a második PIND-t is beírom, és átlépek a PINCre, na akkor a két PIND veszik el, és így a többi-vel. A végén a két PINB marad "állva" mert utánuk már nrm írok mást. ???
A PINx regiszterek ATmega8-ban csak olvashatoak (nincs toggle funkcio) es igy mindig az I/O lab aktualis allapota olvashato ki belole. Ha a kimenet allapotat meg szeretned valtoztatni, akkor a PORTx-et kell irnod. Mivel PINx-et irtal, igy nem valtozik a kimenet, ezert nem valtozik az ertek.
Köszi ott a pont...
Viszont pofátlan a kérdés, de ez hol van az adatlapban? Most nézem egy ideje, de nem találom..
Köszi meg van.
Bár ha apró betűs, akkor jobban észre vettem volna Idézet: „The Port Input Pins I/O location is read only, while the Data Register and the Data Direction Register are read/write.” Az érdekes, hogy így semmi értelme sincs (írni), még sincs kitiltva. ez kell a kezdőknek...
Hat semmilyen iras/olvasas sincs kitiltva. Amelyik cim befer a cimtartomanyba, azt meg is lehet cimezni. Ehhez mar MPU/MMU kellene. Ha ilyen igenyeid vannak ajanlom az AVR32 architekturat. Mondjuk amugy is ajanlom, mert kb ugyan ennyibe kerul AT32UC3L szeria, cserebe sokkal tobbet tud, es gyorsabb is. Valamint Neumann architekturaju, ami sok mindent leegyszerusit.
|
Bejelentkezés
Hirdetés |