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
Ezt a kérdést már feltetted egyszer.
Megadtam neked az adatlapját az lcd kontrollernek. Ha alaposan átnézed, akkor ráakadsz arra a részre, ahol írja, hogy milyen parancsokat lehet neki adni, és arra mik történnek benne. Nincsen más dolgod, mint függvényeket írni arra, hogy ezeket a parancsokat elküldje. Először is inicializálod, majd küldesz neki dolgokat, amiket ki kell írjon. Ha valamiben elakadsz, akkor kérdezz. Van egy olyan sanda gyanúm, hogy ez a sürgős feladat valamiféle iskolai házi feladat, amit lusta vagy magad megcsinálni, ezért szeretnéd, ha az öledbe pottyanna a kész program. Ha nem iskolai feladat lenne, hanem munkahelyi feladat, akkor már rég repültél volna, ha lusta lennél átnézni egy adatlapot. Ezt a jövőre vonatkozóan sem árt fejbe vésni.
Eleg bunkon reagalsz, ahhoz kepest, hogy en probalok meg neked segiteni, ugyhogy inkabb radhagyom az egeszet. De lasd milyen jofej vagyok, annak ellenere, hogy nem mondom meg a megoldast, annyit azert elarulok, hogy a C-ben labelt csak a fuggvenyekben lehet elhelyezni, adatstrukturaban nem. Sok sikert!
Igazából meg sem lepődök ezen. Annyiféle fajta kommuniukáció van a mikrokontroller és a programozó/debuggoló eszköz között, hogy eddig a feléről nem tudtam, amíg most utána nem néztem. De legalább lehetővé tették, hogy egy közzel többféle módon is csatlakozhassunk.
Ennél már csak a PIC háromezer féle programozója/debuggolója tud megzavarni. Nekem elég a programozó része, amikor anno volt lehetőségem, akkor sem igazán használtam ki az online debuggolás lehetőségét. De ha esetleg kellene, akkor is sorosporton hasonlót el lehet érni, ha az ember jól írja meg a progarmot. Lényeg, hogy tisztába kerültek a dolgok .
Az adatlapok osszehasonlitasa alapjan szerintem neked CPHA=1, CPOL=1 kene.
Az utolso blokk 5. soraban:
helyett
kell.
Inkább ne "segítsél", hiszen három mail után sem értetted meg a lényeget.
Szia!
Megnéztem, amit te javasoltál, ott te csak a másik regiszter címét mondtad. 4hex címet 2 byte-s módban. Nézd meg a command byte-t és ott pontosan le van írva, hogy miként kell elküldeni a címet. MSB: 0 mindig, 6.bit r/W -nálam 1 mert olvasom, 3 bit a regiszter cím, 011bin ->3hex, ami az ID regiszter címe, 2.bit szintén 0, mert csak 1 byte-t kérek tőle, 0-1 bit pedig 0,mert annak kell lenni. Ezt elküldöm neki a mellékelt kódrészlettel és nem ad rá választ Csak nem tudom, hogy miért. A többit átfutottad és működnie kellene? Üdv Kiborg
Sorry, túlléptem az időkeretet.
Szóval 010bin az 2hex, azaz a hőmérséklet regiszter címe. Ez ok, tudom, hogy onnan kell kiolvasni, de én kezdésnek csak az ID regisztert szerettem volna kiolvasni, aminek Cx hex adatot kellene visszaadnia. De nem az jön, hanem csak egy 0 Amúgy ha azt használtam, amit te is javasoltál, akkor is szintén 0-t olvasok ki a SPDR-ből. Kiborg
Folyamatos olvasast csak a homersekleti regiszternel lehet engedelyezni (adatlap 18. oldal, utolso bekezdeseben irja.)
A CPOL=1, CPHA=1 modban probaltad? (Raadasul a homerseklet olvasasanal 16 bites olvasast kell vegrehajtani.)
SZia!
Nem akarok folyamatos olvasást(még), egyszer szeretném kiolvasni a 03hex ID reg tartalmát. Aminek Cx hex értéket kellene visszaadnia eredményképpen. Minden CPOL és CPHA variációt (4féle) kipróbáltam, de nem hajlandó Cx hex értéket visszaadni egyik sem. 0A hex vagy 15 hex értéket kapok, de nem tudom miért. Kiborg
Igen, ertem en, csak azert irtam, hogy lasd olvastam az adatlapot
Amugy ha a VFD-vel latod a megfelelo kimeno jelet es viszont a MISO-n nem latod a valaszt, az egyertelmuen azt jelenti, hogy az IC nem vette a parancsot, tehat ha a kikuldott adat jo, akkor csak az idozitesekkel lehet gond. (Vagy a MISO labat kimenetnek allitottad esetleg, bar a veges kimeno ellenallasok miatt egy nagyon kis amplitudoju valtozast ekkor is latsz szkopon.) Esetleg a VFD outputjat nem tudod mellekelni? (Amugy a 0xA majdnem 0xC, csak lehet hogy rossz idopillanatban mintavetelez.)
A VFD outputja alatt mit értesz ?
( az SPI inicializálása végén beállítom a portot is a harmadik részben) Bemenetnek van állítva és felhúzóellenállás nincs aktiválva. (A 0A az 0x0A akart lenni.)
Átírtam az olvasási kódot, hogy a 0x02címról olvasson és folyamatos olvasásra.
Az első válasznak a t_h-ban kellene lennie, a másodiknak pedig a t_l-ben. De nem Megpróbálok egy kicsit szórakozni az időzítésekkel, bár nemtudom, hogy hol és mit lehetne neki csinálni.
Szkoppal kene megnezni a jeleket. Amugy 99% biztos vagyok, hogy CPOL=1, CPHA=1 kell neked.
De amit mindenkeppen meg lehet probalni: Bekapcsolas utan varakozzal nehany ms ideig, majd reseteld a homero soros interfeszet ugy, hogy kikuldesz 32 db 1-est. Ezutan varjal 1ms ideig, majd utana probald meg kiolvasni az ID regisztert. (Mivel nem lattam az egesz kodot, ezert nem tudom, hogy bekapcsolas utan mennyi ideig varsz vagy mit csinalsz.)
Bekapcsolás után (mindig be van kapcsolva, csak töltöm le az új progit, ezalatt minden feszültség alatt van) a proci lábait beállítom, változókat töltök fel, majd várok 10ms-t, kimegy a SPI reset (4szer 0xff) majd ójra várok 10ms-t és után olvasok regisztert, majd 1 mp múlva újra olvasok. Ezzel a kóddal:
Az SPI beállítása:
Ami furcsa az egészben, hogy 0x03-as regisztert olvasok és pár érték van ami cserélgeti egymást a 0x80 és a 0x78 és a 0x70. Ha hozzáérek a chiphez, akkor meg teljesen vad értékek jönnek ki belőle. Kiborg
Soros programozast hasznalsz? Ha igen, akkor nem lehet, hogy a programozas zavarja meg az IC-t, vagy a csatlakoztatott programozo a kommunikaciot? Probald meg lehuzni a programozot es csinalni egy tap elvetelt, majd visszaadast.
Félsiker, már kitudom olvasni a temp reg. értékét (és az ID-t is), de csak ha olvasás után resetelem az IC-t SPI buszon keresztül. Lehet, hogy túl gyorsan akarom kiolvasni belőle az értéket és még nincs kész vele a chip ?
Ezen dolgozom tovább. Kiborg mod: JTAG-on programozok. Elkzdtem csak a hőmérő tápját megszüntetni, utána az első olvasás jó volt, ezután már nem. Ha újra elvettem akkor első olvasás megint jó volt. És ezután jött az ötlet, hogy resetelem, de nem értem, hogy miért kell resetelni, hiszen folyamatos mód-ban van.
Akkor a letolto nem lehet.
240ms egy konverzio, tehat ket olvasas kozott celszeru legalabb ennyit varni. Mondjuk en ezekben a software resetekben sosem biztam igazan, lehet, hogy akar programozaskor vagy a uC indulasakor(amikor a port iranyait allitod) kijut valami olyan jelalak az SPI buszra, amitol megzavarodik. Ezert is celszeru a labak iranyat az SPI inicializacoja utan elvegezni.
NEM !!!
Megvan, hogy mi volt a gond. Ha először kiküldöm neki, hogy 0x02-ről olvasson folyamatos módban, akkor végrehajtja (és 2 bytet küld vissza(tehát összesen 3 byte kommunikáció 24 órajel alatt), viszont amikor másodjára fordulok hozzá, hogy kérem a 0x02-ről az aktuális értéket, akkor mialatt kiküldöm a 0x02 címet, ő már átadja a hőmérséklet felső byteját, ad adatlappal ellentétben !!! (3 byte kommunikáció 16 órajel alatt). Emiatt volt nagyon fals értékem és ha reseteltem a buszon keresztül, akkor alaphelyzetbe állt és minden olvasás elsőnek bizonyult (24 órajel kellett hozzá). Imádom a pontos adatlapokat.... azt hittem, hogy ezeknek lehet hinni.... de mégsem Úgyhogy a témát lezártnak minősíthetjük Kiborg ui:még egy kérdésem lenne: ehhez az RCT-hez milyen beállításokat használjak ? CPOL és CPHA ?
Gratula. Rossz belegondolni, hogy szkoppal v analizatorral ez negyed ennyi ido sem lett volna
Amugy ez jol van dokumentalva, a folyamatos modbol kulon paranccsal kell kilepni, es ebben a modban te mindegy mit kuldesz, o 16 orajel alatt kuldi az adatot. 11 szinten.
Nagyon szépen köszönöm a segítséget.
Remélem az RTC már nem lesz számomra ilyen trükkös. Üdv Kiborg
sziasztok
azt szeretném kérdezni tőletek hogy ez a AVRDragon jó e AVR programozásra és tud e majd valaki segíteni hogy hogyan használjam ? Ha esetleg nem jó akkor mit ajánlotok kezdő vagyok de profi szintig akarok fejlödni ebben a témában szoval balami olyan progzamozó kéne ami sok fajta AVR-hez jó. Eddig még csak PIC -eztem arra találtam egy jó programozot de az AVR máshogy müködik.
Sziasztok!
Egy olyan kérdésem lenne hogy ATtiny45 be beégettem a programot, egy darabig azt is csinálta amit kellett, (1 led villog) aztán abbamaradt. Megnéztem és a program nem látja az IC-t. Lehet hogy tönkretettem? AVR910-es programozót használok! Előre is köszönöm a segítséget!
Sziasztok!
Egy Quectel GSM modullal küzdök éppen. Az inicializálás rendben lezajlik, de a Call ready kiírása után még a végtelen ciklus sem hajtódik végre. Mi lehet ennek az oka? Köszönöm előre is a segítséget!
Tovább megyek, a nem végtelen ciklus sem hajtódik végre.
A GSM_init() után kiadtam egy AT-parancsot, de már az sem kell neki.
Technical Library DVD 2011.10-es kiadása. Csak eléggé lassan jön.
Szerk: jön csak néha be lassul 90kB/s-ra. |
Bejelentkezés
Hirdetés |