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
Egy APB mini PLC. Megmondom őszintén kontrollerrel még nem kötöttem direktbe össze, de a TTL ic-kkel csak úgy működött, ha az 555-ös triggerelőt közéjük raktam. (viszont például a 4017-esnek jó volt simán a plc jele) Sőt ez igaz volt pár tíz centiig, de mikor 10 méterre elkerültek egymástól, az 1Khz-nél nagyobb jelet (most 20Khz-es) még egy opto-n keresztül kellett az 555-ösnek adni, hogy működjön. Szóval kevés tudás de sok-sok próbálkozás van már ebben a fűtésben de legalább azt csinálja amit én szeretnék
![]()
Sziasztok!
Egy olyan eszközön dolgozok ami UART-al kommunikálna, viszont az vele a problémám hogy amikor strcmp-vel összehasonlítom a kapott parancsot akkor hibaüzenetet dob hogy nem egyezik. A kapott parancsot vissza is küldöm a számítógép felé és látom hogy az amit elküldtem és el kéne fogadnia. Mi lehet a hiba?
A hozzászólás módosítva: Aug 24, 2015
Te is "szoveg/n/r" küldesz, szerintem ahhoz kellene hasonlítanod!
Igen, mert azzal záram le az adatot, viszont úgy másolom át hogy azt lehagyom. De meg megpróbálom anélkül.
Szia! Sietek, úgyhogy nem tudtam végignézni az egészet, viszont egy szembeötlő baki: ha a receive_cmd-be vársz 5 karakteres stringet ( CONN!), akkor abba nem fér bele a lezáró nulla (6 eleműnek kéne lennie). Szerintem ha ezt kijavítod jó lesz.
+Ha strncpynél a forrásstringből átmásolt n bájtban nincs benne a lezáró nulla, akkor azt manuálisan kell utána hozzáaadnod (ha nincs már alapból benne a tömbben).
Köszönöm szépen jó lett
![]()
Tovább akartam fejleszteni, hogy 2 kontrollert kötök össze RS485-ös buszra. Úgy már nem megy át adat. Csak a küldés engedélyező lábát vezérlem, a fogadás az állandó. 115200 BAUDRATE és
MAX 487 és kb. 20cm vezeték. Mit ronthattam el? A hozzászólás módosítva: Aug 27, 2015
A ferriten kívül mindent megcsináltam, de így is csak 10-15 percig bírja.
Mit lehet még tenni vele? Az 50pF-os kondik a 27Ohm-os ellenállások melyik oldalára mennek? (PC felőli, vagy az mcp2200 felőli oldal)
Megnéztem egy referecia áramkört a microchip oldalán, ott nem használtak ehhez az IChez külön soros ellenállást és kondikat (valószinűleg tehát ennél az IC-nél nem szükségesek).
Egyébként a te oldaladon kellenének. Még mindig három méteres kábelt használsz? Próbáltad rövidebbel? A ferrit a nagyfrekvenciás zajok csökkentésért felelős. Elég hasznos tud lenni. Tudnál feltenni egy fotót az áramkörödről?
Prototípus, szóval felesleges leszólni a kinézetet, nem ilyen lesz a végső.
nem volt kis méretű ellenállásom 27Ohm-osból, csak nagydarab 5-10W-osak, így 2x2db 15Ohm-osat használtam. A kábel kb. 3 méter, de már árnyékolt. Ha a képből nem látszana, a "104" feliratú 100nF-es kondi a fekete és piros kábelek között van (nem a UART kábelek, hanem az USB + és - feszek között). A hozzászólás módosítva: Aug 27, 2015
Hmm, ez rosszabbul néz ki mint amire számítottam.
![]() Építsd át az USB részt úgy, hogy lehetőleg minnél közelebb legyen a D- és D+ csatlakozás az IC lábához. Vedd ki az ellenállásokat és kondikat a D- D+ vonalból (az árnyékolásét ne bántsd). Vagy vegyél egy kész USB-USART átalakítót, a prototípushoz elég lesz az is.
Ha nem ilyen lesz a végső megoldás, akkor lehet, hogy érdemes lenne elgondolkodni azon, hogy olyan AVR-t veszel, amiben van beépített USB. Idén nyáron szereztem be egy Atmega32U4-es modellt (pontosabban egy Pololu A-Star Mini LV-t, de a gyári bootloadert nem használom), tökéletesen működik az USB kommunikáció is, és nem kell plusz IC.
Sziasztok, vettem egy USBasp programozót és összekötöttem egy ATtiny2313-al. Egy villogtató programmal akartam kipróbálni amit bascom alatt írtam és azzal is próbáltam beletölteni a programot de azt írta hogy nem találja a villogó.eep fájlt. Igaza van mert én sem találtam. Mit csináltam rosszul?
"Mit ronthattam el?"
Mindkét vonalat Vcc-re húztad. Az egyiket Vcc-re a másikat GND kell húzni. Ha jól emlékszem az A-t Vcc-re a B-t pedig GND-re (de lehet, hogy fordítva). A lényeg, hogy a MAX kimenetén olyan szint legyen, ha nincs adó a buszon, mint a kontrollel soros kimenete, ha nem ad semmit. Az RS485 úgy működik, A-B vonalon egymással ellentétes jelnek kell lennie. Hasonlóan mint az RS232-nél, ahol emlékeim szerint a 0=+12V az 1=-12V körül kellene lennie (ennél lehet alacsonyabb is). Az RS232-nél a 0V körüli érték nem értelmezett, itt pedig az A-B különbsége nem lehet 0V körül (pl.: A=5V;B=0V, akkor A-B=5V fordítva: A=0V;B=5V, akkor A-B=-5V).
Nem bír többet így sem. Most az árnyékolást leszámítva ott tartok, ahonnan elindultam. Csatolok képeket (a hátoldalát nem változtattam).
A hozzászólás módosítva: Aug 27, 2015
Na most már alakul. 160 bytes written to FLASH. Viszont a led nem villog akkor sem ha külön tápra kötöm
Az AVR összes lábán 1.8 és 2.4V közötti feszültség van, ez normális? A led nem villog. Kicseréltem másikra a kontrollert de ugyanaz. Lehetséges hogy mindkettő rossz? Újak mind.
Egy fényképet, az összekötésekről légy-szíves.
Fényképet sajnos nem tölti fel nekem valamiért pedig korábban is akartam. Egyedül csak az 5V táp van bekötve meg a portd.0-ra egy led soros 1K ellenállással a föld felé. Kristály sincs rajta, az talán hiba lehet de szerintem magától be kellett volna indulni a belső oszcillátornak. Vagy nem? Próbálta 10K ellenállással a reset lábát felhúzni +5V-ra is és földre is de egyikre sem reagált.
A fénykép JPG és pár száz K-s legyen. A Bascom programot feltennéd?
Megpróbálok kisebb felbontású képet mindjárt. Ha sikerült akkor a bascom programot is úgy mert telefonról írok.
Nem engedi feltölteni így sem
![]() De beírom a bascom programot. Config portd = Output Do Portd = 255 Waitms 50 Portd = 0 Waitms 50 Loop End
Próbálj hosszabb időzítést, hogy tudj mérni bekapcsolja e a portot. Ha a led nincs fordítva, akkor még próbáld kisebb ellenállással (470) Ohm hátha nagyobb áramú fajta.
$regfile = "attiny2313.dat" $crystal = 1000000 Config portd = Output Do Portd = 255 Waitms 500 Portd = 0 Waitms 500 Loop End
Rendben megpróbálom, az időzítés az első programban ennyi volt nekem is. Elég hosszú vezeték van rajta csoportban, láttam hogy másnak az lehet a probléma. Lerövidítem hátha nekem is bezavar.
Remélem sikerül már képet küldeni mert csak nem működik. Amikor megjelöltem a regfile-t akkor fel sem ismerte a kontrollert. A plusz vezeték egy usb csatlakozó, azon adok neki külső tápot.
A bascom pedig ezt írja. Először letöröltem mindent róla aztán megint beletöltöttem a programot és amikor ellenőriztem akkor hibát adott.
|
Bejelentkezés
Hirdetés |