| 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 
				Szép is lenne a 64 byte!!! AVR USART: küldő és fogadó oldalon 2-2 byte. Fogadó oldalon azt jelenti, hogy amíg veszi a következő bájtot, addig ki tudod (ki kell!) olvasni azt ami előzőleg beérkezett. Amint beérkezik a következő bájt és nem olvastad ki, beállítódik a DOR (Data OverRun) flag, és elveszik az előző bájt. Küldő oldalon hasonló: amikor elkezdi adni az előzőt, már írhatod a következő adni kívánt bájtot. Ezzel a stopbitek számát tartani lehet a beállított (1 vagy 2) értékhez, maximalizálva az átviteli sebességet. Olvasásnál és írásnál is ugyanazt a regisztert (UDR/0/1) használod a buffer eléréséhez, az USART belső logikai áramkörei válasszák szét hogy melyik bufferhez férhetsz hozzá. A hozzászólás módosítva: Okt 31, 2016 Idézet:Igazabol csak 1-1, mert magat a transmit es receive shift regisztert nem szokas beleszamolni. „AVR USART: küldő és fogadó oldalon 2-2 byte.” 
				7 est kell használjak, kell vegyek egy BIGAVR6 ot, egy debuggert ATMEL-ICE-BASIC. AT90CAN128 at, rá kell forrasszam egy üres PCB re, és ezt kell használjam. Asszem még kell pár apróbb dolog 2x16 display, ilyesmi.						 
				ATMEGA 328P-PU De aztán lehet rosszul tudom. Egyelőre az a meglátásom, hogy ki kellene szednem az AVR-t az Arduinoból, majd külön így kipróbálni azt, hogy az RX vonalat rákötöm a TX vonalra. 
				Mint fentebb elhangzott, az AVR-ben egyaltalan nincs FIFO, csak 1-1 byte puffer. Egyebkent 64 byte FIFO nem szokas UART-okban mashol sem. 4-16 byte a megszokott.						 
				Jólvan. Mindenesetre most beleásom magam ebbe a dologba. AVR beizzításához elég a külső kvarc 2db kondenzátorral? Persze a tápegységen kívül. 
				Még az sem kell, alapból a belső oszcillátor megy, 8MHz-en.						 
				De ez állítható a fuse bitekkel, nem? Tudtommal a belső oszcillátor nem a legpontosabb. Nálam az Arduinoban külső, 16 MHz-es kvarccal van beállítva az órajel 16 MHz-re.						 
				Működik!!!   Tehát simán áthidaltam az RX és TX vonalakat. Egy nyomógombbal átküldöm a '8'-as karaktert, aminek decimális ASCII kódja 56. A másik gombbal kiolvasom vevőpuffert. Mégegyszer megnyomva az 'olvasás' gombot már nincs olvasható adat, mert ugye az olvasás automatikusan nullázza a puffert. Ez így csak arra kell nekem, hogy leprogramozzam a két AVR közti kommunikációt. Majd ha megvettem a másik AVR-t akkor már nem kell saját magammal kommunikálnom 
				Örülök, hogy müködik! A két IC között kb. mekkora távolság lesz, amikor a projekted elkészül? 
				Szerintem 1m. Ez még nem okozhat problémát. Amúgy a pufferhez van hozzáfűznivalóm még. Ha 5-ször nyomom meg az 'küldés' gombot, akkor az 'olvasás' gombbal 5-ször tudom kiolvasni az értéket a pufferből. Akkor mégsem 1 byte a puffer. FEJLEMÉNY! 66-szor küldtem el az 56-os értéket. Ezt 64-szer tudtam kiolvasni. A 65. olvasás már 0 volt. Akkor mégiscsak 64 bájtos a puffer, nem? A hozzászólás módosítva: Okt 31, 2016 
				A buffer 64 byteos. http://forum.arduino.cc/index.php?topic=96280.0 
				Ja, szoftveres buffer. Trollkodtok egy aprót, vagy tényleg nem értitek?						 
				Nem a SoftwareSerial-t használom, hanem a hardveres UART-ot.  Azt értem, hogy elvileg 1db UDR puffer regiszter van. Arduino Reference A hozzászólás módosítva: Okt 31, 2016 
				Nem trollkodunk. Kérlek írd le, hogy mi hogyan van.						 
				Van Arduino topic. Library-ban van 64 byte buffer, nem az AVR-ben.						 
				Így érthető, köszi. Le is teszteltem. Ha minden gombnyomásnál külön indítom a soros kapcsolatot, majd zárom is, akkor a buffer mindig üresen indul az új kapcsolatnyitáskor. Igazad van, köszi mégegyszer. 
				A belső oszcillátor pontosabb, mint amire neked szükséged van. Ha Arduino bootloader van az AVR-ben, és/vagy Arduino által készített programot töltesz fel az AVR-re, akkor menj át az Arduinos témába. Itt nem beszélgetünk Ardu-ról. Ezért is lett félreértés a 64byte-os szoftveres buffer-ből, amit csak az Arduino hoz létre.						 
				Én meg azt hittem, hogy az AVR Studio-ban írta a programot. Csak most jövök rá, hogy Arduinot használt mindvégig. 
				Üdv! Valaki használta már AVR-eken a csak olvasásra szánt változók RAM-ból FLASH-be történő áthelyezésének lehetőségét? Több helyen is találtam rá példát, de semmi sem működött nekem eddig. Egy CRC keresőtáblájának a tömbjét akarom áthelyezni: Tömb deklarációja: 
 Olvasás: 
 "Mit és hova kell írni", hogy a tömb a RAM-ból átkerüljön a FLASHROM-ba, és még működjön is? A hozzászólás módosítva: Nov 3, 2016 
				Megírok pár mintát, hátha segít: 
 Ezt követően kiolvasni flash művelettel tudod, nem SRAM művelettel. 
 
				Köszi szépen, működik. Annyi, hogy "pgm_read_byte" helyett "pgm_read_dword" kellett a short miatt. Arról van nagyságrendi információ, hogy a FLASH mennyivel lassabb a RAM-nál kiolvasás terén? Megmérném, csak kölcsönben van a szkópom. A hozzászólás módosítva: Nov 4, 2016 
				Helló urak Valaki dolgozott már AT90CAN128 procival? Itt az SPI programozáshoz a PE0, PE1, PB1 lábakat kell használni? 
				Köszönöm ! Persze én is ezt akkor vettem észre amikor már legyártották nekem a nyák lapokat. Ez van ha az ember nem olvas dokumentációt... | Bejelentkezés Hirdetés | 




 
						






