Hírek:

Fontos tudnivalók a migrációval kapcsolatban, Kérlek nézd meg a Régi fórumról új fórumra való költözés

Main Menu

Segítség, béna vagyok!

Indította gaben, 2024 április 09, 15:35

Előző téma - Következő téma

9a43swpp

Egy apró megjegyzés: ha makrót definiáltok, akkor az összes makróparamétert a makró tartalmában tegyétek zárójelbe. Így:
#define SETBIT(x,y) ((x)|=(1<<(y)))  
 
Ellenkező esetben a makró behelyettesítésénél ha olyan kifejezést használtok, amiben a makrón belül használt operátorhoz képest gyengébb precedenciájú operátor van, akkor nem a várt módon fog viselkedni a program, és ez tipikusan egy olyan hiba, amit rettentő nehéz megtalálni. Ezért jobb, ha az ember így szokja meg a makrók definiálását.

9hpa53xy

És mit jelent a zárójelben lévő rész?

9a43swpp

Mit szeretnél tudni pontosan?

9hpa53xy

((x)|=(1<<(y))) ez mit takar?
 
Egyébként ha az SBIT-et használom nem enged semmit mögé írni. Viszont működni sem működik. Idegesítő hogy ilyen alap dolgok is hiányoznak mint a portok individuális kezelése.

9hpa53xy

#include <avr/io.h>
#include <util/sbit.h>  
 
#define LED SBIT(PORTA,0)
 
int main ()
{
 DDRA= 0xFF;
 DDRB= 0x00;
 while (1)   
 {
 LED=1;
 }
}
 
Lefordítható, égethető és totálisan semmit nem csinál.

9a43swpp

Az 1<<y az 1-et bitenként eltolja balra az y értékével. 1<<0 = 1, 1<<1 = 2, 1<<2 = 4, 1<<3 = 8, és így tovább.
Az x |= z ugyanazt csinálja, mint az x = x | z. Az x | z ugyanazt csinálja, mint Pascalban az "x or z" (bitenkénti VAGY kapcsolat).
 
Azaz az x|=1<<y az "x" nevű változóban az "y". bitet 1-be állítja.

9a43swpp

Alap, hogy ilyenkor meg kell kérni a fordítót, hogy legyen szíves assembly kimenetet generálni olvasható formában (hogy ezt az AVR-es fordítódnak hogyan kell megmondani, azt nem tudom), és abban szépen ki lehet bogarászni, hogy hol nem az a gépikód készül, amit mi szeretnénk. Sokszor ennyiből simán rá lehet jönni, hogy mit gondolunk mi vagy az fordító rosszul.

9hpa53xy

Köszi az értelmezést. Egy utasításnyi assemblyt sem értek.

6dvb4peg3

Sziasztok! Szeretnék segítséget kérni, adott egy régi (2004) dexma cnc vezérlés, esetleg van valakinek valamilyen információja mi az lpt port pin kiosztása? Egy másik programmal szeretném meghajtani. Esetleg valami egyszerű nem hozzáértőnek való leírás hogyan tudom kitotózni melyik micsoda.

000000000

 
Szerintem senki nem lesz aki csak úgy fejből ide löki, hogy ezt és ezt állítsad be.
Sajnos ezt neked kell ki kísérletezni, hogy adott pin mit csinál a vezérlőn.
Mellesleg ha szabad tudni, miért szeretnél programot váltani, illetve mire?
 

6dvb4peg3

Azért szeretném lecserélni mert amire nekem kell a gép azt tudja ez a másik DOS-os program is és azt valamelyest ismerem, és nem csak dnc fájlt fogad amiről annyit tudok, hogy G kód viszont a másik tud DXF-ből dolgozni, azt pedig exportálni tudom corel drawból. Valami ilyesmi az ok.

6dvb4peg3

Ja a kísérletezéssel csak annyi a bajom, egyrészt elektronikában nem vagyok kicsit se jártas, és félek a füstjelektől.

000000000

 
Na igen, és menyire konfigurálható az a másik program ?
Mert anélkül nem sokra fogsz menni hiába találod is meg az adott pineket.
Például az ATT-nek a dos-os programja tele volt, van aknákkal amik nagyon csúnya dolgokat csinálnak ha valaki belepiszkál.  
 

000000000

 
Mach 2 vagy 3-al megcsinálom neked bármikor a beállításokat és garantáltan nem lesz füst.
De ahhoz aztán igen csak szakmai antitalentumnak kell lenni ha egy Step Dir rendszernél LPT portról füstöt csak ki a vezérlőből :)  
 

000000000

Szia!
 
Én fel tudok neked ajánlani egy DOS-os 3 tengelyes progit névre regisztrálva; ingyen.
Corel plt. fájl-ból közvetlenül dolgozik, importált színek szerint szerszámpályákat kezel...
Tetszőlegesen konfigolható a hajtás bármely kimenetre, marómotort be-ki kapcsol,  
bemenetként referencia kapcsolókat kezel...  
A gyorsbillentyűk használatával (pár darab), nagyon hatékonyan lehet vele dolgozni - gravírozni.
 
1 bites BMP-t lehet vele kopogtatni.. (fotógravir)
 
Ha érdekel, elküldöm, de csak a jövő hét közepén (akkor leszek otthon)...