Re: Arduino Due
Napsal: 2. 4. 2015, 10:39
Kopec zbytocnej prace. Podla schemy arduina je PA17-18 TWI1. Podla datasheetu k procesoru je to TWI0.
Na plosaku napis SDA1.
Na plosaku napis SDA1.
Největší české fórum o strojírenství, CNC strojích a 3D tiskárnách
https://forum.strojirenstvi.cz/
bronek999 píše:Tak prve "frezovanie" s novym kontrolerom. Hned som prisiel na niekolko nedostatkov.
1.Kapacitny displej - s motormi si moc nerozumie a dalo dost prace odrusit to. Nabuduce by som kupoval uz len odporovy touch screen. Je aj lacnejsi.
2.Driver krokovych motorov M542. Enable vstup potrebuje logicku 1 a TinyG2 ma opacnu logiku. Prepisal som zdojaky TinyG2, fungovalo to v jednom smere osi a nazad nie. Znizil som tam ale predradne odpory na optoclenoch, takze namiesto pozadovanych 3.3V dalo Arduino maximalne 2.8V. Takze chyba mohla byt aj tam.
Nakoniec som vyskusal driver 3DM683 pre trojfazovy motor. K tymto driverom a motorom som to vlastne cele staval. Logika vstupu enable spravna (obnovil som zdrojaky zo zalohy) a vsetko chodilo ako malo. Akurat bolo este treba odladit to odrusenie. Uzemnit stroj, motory. Vreteno nemam pripojene, takze to uzemnene nebolo a po spusteni motorov sa uz nedalo klikat na displej.
Kontroler vie zatial frezovat podla G kodu vyberom suboru z SD karty, samostatne frezovat kruhove a obdlznikove tvary zadanych rozmerov a pre mna velmi podstatne frezovanie metrickych zavitov bez akehokolvek G kodu.
Proste zadam priemer zavitu, stupanie, priemer nastroja, pripadne upravim rychlost a zaber a idem.
Kód: Vybrat vše
void metric_thread_inner(void) // Vnutorny metricky zavit
{
const char* PN="Priemer nástroja";
const char* PZ="Priemer závitu";
const char* SZ="Stúpanie závitu";
const char* BZ="Bočný záber";
const char* RY="Rýchlosť";
char buffer[100];
uint8_t test=0;
float PriemerNastroja = 6;
float Stupanie = 1.5;
float PriemerZavitu = 30;
float PriemerOtvoru;
float BocnyZaber = 0.5;
for(;;)
{
tft.fillScreen(RA8875_BLACK);
tft.delete_all_objects();
tft.button(10,CalcY(10,5,1),200,CalcHeight(10,5),PZ,1);
tft.button(10,CalcY(10,5,2),200,CalcHeight(10,5),SZ,2);
tft.button(10,CalcY(10,5,3),200,CalcHeight(10,5),PN,3);
tft.button(10,CalcY(10,5,4),200,CalcHeight(10,5),BZ,4);
tft.button(10,CalcY(10,5,5),200,CalcHeight(10,5),RY,5);
tft.button(799 - 410,CalcY(10,4,4),200,CalcHeight(10,4),"Testuj Z-20",97);
tft.button(799 - 200,CalcY(10,4,3),200,CalcHeight(10,4),"Frézuj závit",98);
tft.button(799 - 200,CalcY(10,4,4),200,CalcHeight(10,4),"Späť",99);
tft.textEnlarge(1);
tft.textColor(RA8875_YELLOW,RA8875_BLACK);
tft.textMode();
sprintf(buffer,"%s %.3f[mm]",PZ,PriemerZavitu);
tft.textWrite(220,5,0,0,buffer,ALINE_LEFT);
sprintf(buffer,"%s %.3f[mm]",SZ,Stupanie);
tft.textWrite(220,40,0,0,buffer,ALINE_LEFT);
sprintf(buffer,"%s %.3f[mm]",PN,PriemerNastroja);
tft.textWrite(220,75,0,0,buffer,ALINE_LEFT);
sprintf(buffer,"%s %.3f[mm]",BZ,BocnyZaber);
tft.textWrite(220,110,0,0,buffer,ALINE_LEFT);
sprintf(buffer,"%s %.3f[mm]",RY,Rychlost);
tft.textWrite(220,145,0,0,buffer,ALINE_LEFT);
tft.redraw_all();
PriemerOtvoru = PriemerZavitu - 2* Stupanie; // Upravit !!!!
if(PriemerNastroja > PriemerOtvoru)
{
tft.textColor(RA8875_BLACK,RA8875_RED);
sprintf(buffer,"%s %.3f[mm]",PN,PriemerNastroja);
tft.textWrite(220,75,0,0,buffer,ALINE_LEFT);
beep(1000);
}
for (;;)
{
tft.draw_press_unpress();
if(Action1 == 1)
{
PriemerZavitu = tft.GetFloat(PZ,PriemerZavitu,0,10000);
break;
}
if(Action1 == 2)
{
Stupanie = tft.GetFloat(SZ,Stupanie,0,10000);
break;
}
...................
if(Action1 == 99)
{
return;
}
}
}
}
nepoznam....ani google nepozna....bohuzial, alebo neviem hladat.doncarlos píše:mallocfree ti vrátí velikost volné paměti pro malloc
Kód: Vybrat vše
U32 get_heap_free_size1( void )
{
U32 high_mark= AVR32_SRAM_SIZE;
U32 low_mark = 0;
U32 size ;
void* p_mem;
size = (high_mark + low_mark)/2;
do
{
p_mem = malloc(size);
if( p_mem != NULL)
{ // Can allocate memory
free(p_mem);
low_mark = size;
}
else
{ // Can not allocate memory
high_mark = size;
}
size = (high_mark + low_mark)/2;
}
while( (high_mark-low_mark) >1 );
return size;
}