-
Hallo
bin auch neuling!-Und auch Pro-Bot
Wenn du vom Controller aus einen Text auf deinem PC anzeigen willst must du "Msg_writeText" verwenden:
Hier direckt aus dem Handbuch vom C-Controll kopiert!
Syntax
void Msg_WriteText(char text[]);
Sub Msg_WriteText(ByRef text As Char)
Beschreibung
Es werden alle Zeichen des char array bis zur terminierenden Null ausgegeben.
Parameter
text Zeiger auf char array
Kriegst du beim komplimieren keine Meldung das er include nicht kennt??
Die Libs kannst du ja bereits unter Optionen des Projekts laden..
Bin mir aber nicht sicher, da ich C-Controll mit Basic programiere!
Kenne aber LitleC von gamestudioA7 ;)
Habs inzwischen auch gemerkt das bei C-Controll alles anders ist :evil:
Diesen Controller brauche ich bei meinem CoffeBot zum letzten mal!!!!
Viel Spass
HD
-
eigentlich bekomm ich den anfang nicht mit. die grund vorrausetzungen fehlen mir .
noch mal was ich eigentlich möchte und nicht verstehe :
ich verstehe nicht wo ich einen ein Bzw. ausgang zuweisse .
was ich habe ist der Mega 128 auf dem probot
laut daten platt heisst es
Modul /X4_8 vermute nur die pin belegung
M128 /35 vermute nur eine nummer
Port / PC0 das denke ich ist wichtig fürs programm
dann hab ich noch eine 2
#/ 16
so da hängt dann eine led drann
und an ein anderen port möchte ich ein taster gegen masse schalten wie lautet das einvachste programm das die led ein geht wenn ich den taster drücken .
z.B. am PC0 hängt die led
am PA7 der taster
-
Hallo
Drück mal F1!
Dann kommt das Handbuch..
Dann Suchen nach PINBELEGUNG
Dort ist die entsprechende Tabelle..
Ich kann zu wenig C um dir mit sicherheit ein kluges prog zu sagen...
Ich habe einfach BASIC gelernt, weill beim ProBot auch alles in Basic ist..
-
Ich würde erst mal folgende Sachen Programmieren (als Übung)
1. Einfach eine LED leuchten lassen
2. 2 LEDs nach ein ander Blinken lassen
3. "Lauflicht" Programmieren
Ich will damit bezwecken dass man die delay.h und den Timer Interrupt kennen lernt.
Warum delay.h und Timer Interrupt?
delay.h ist eine Headerdatei, die ein Funktion enthält, die den Controller "sinnlos" beschäftigt und somit eine Zeitverzögerung verursacht. Timer Interrupt lösen nur nach eine bestimmt Zeit ein Interrupt aus. Interrups sagen den Controller, dass er das Hauptprogramm pausieren soll um die Interrupt anweisung aus zu führen. Dannach mach der Controller an der Stelle in Hauptprogramm weiter, wo er unterbrochen wurde. Der Timer läuft im "Hintergrund, wie eine art Zähler".
Die Kenntnisse brauchst du, um den Taster zu entprellen (es sei den du hast es Hardware technisch gemacht)
Meines erachten sind folgende RN-Artikel ideal zum erlernen wie man mit µC arbeitet.
Da ist zum einen der Einstig:
http://www.rn-wissen.de/index.php/AV...leicht_gemacht
Der vom Aufbau bis zu den ersten einfach Programm geht (LED blinken lassen)
http://www.rn-wissen.de/index.php/C-Tutorial
und hier ein C-Tut, dass die Kenntnisse von C vermittelt die für AVR programmieren für den Anfang reichen.
(C kann noch viel mehr als nur µC Programmieren, zB Spiele und Anwednungen für den Computer)
-
Diese Tuturials und erklährungen können zwar ein bischen helfen, stimmen aber nicht mit C-Controll überein...das war mein gröstes problem
Im Handbuch für C-Controll ist ein Beispielprogramm für ein Blinklich in C!
Kanst ja das mal ausprobieren..
-
ich find im handbuch nur prgrammteile
da du auch den probot hast poste mir doch bitte mal den code wo nur eine led blinkt
danke schon mal
-
Hallo
Wenn du willst, kann ich dir das programm:
so da hängt dann eine led drann
und an ein anderen port möchte ich ein taster gegen masse schalten wie lautet das einvachste programm das die led ein geht wenn ich den taster drücken .
z.B. am PC0 hängt die led
am PA7 der taster
Machen..aber nur in Basic..
Meine Tastaur hat sich gerade verabschiedet..
must dich bis morgen mittag gedulden..;)
-
Also
Programm in Basic um an auf Port PC0 ein LED einzuschalten:
Code:
#define LED1 16 'LED1 ist auf PortBit 16
Sub main()
Port_DataDirBit(LED1,1) 'Pin 16 wird als Ausgang genommen
Port_WriteBit(LED1,0) 'Pin 16 wird auf LOW gestellt!
End Sub
Das selbe In C
Code:
#define LED1 16
void main (void)
{
Port_DataDirBit(LED1,1)
Port_WriteBit(LED1,0)
}
Ein Blinklicht in C
Code:
#define LED1 16
#define LED2 17
#define OFF 1
#define ON 0
#define OUT 1
void main(void)
{
Port_DataDirBit(LED1,OUT);
Port_DataDirBit(LED2,OUT);
while(true) // Endlosschleife
{
Port_WriteBit(LED1,ON); //LED1 einschalten
Port_WriteBit(LED2,OFF); //LED2 ausschalten
AbsDelay(1000); //Warten 1 Sek
Port_WriteBit(LED1,OFF); //LED1 auschalten
Port_WriteBit(LED2,ON); //LED2 einschalten
AbsDelay(1000); //Warten 1 Sek
} //Alles was zwischen den beiden inneren
//Klammern ist, wird wiederholt!!
}
PortBit 16 (Port PC0) also LED1 ist das hintere Rechte LED beim ProBot
PortBit 17 (Port PC1) also LED2 ist das hintere Linke LED beim ProBot
Kanst sie direckt auf den ProBot laden, sie (solten) funktionieren!
Bei meinem jedenfals gehen sie;)
Mfg
HDR
P.s
sorry für die 2h verspätung, aber ich hatte noch nie zuvor mit C einen uc programmiert!
Aber wie gesagt..es funktioniert!
Ich muss noch kurz was (richtiges) arbeiten, dann kann ich dir auch das Prog mit dem schalter machen..
-
sowas ist gut da sieht man mal duch und damit kann man was anfangen .!
jetzt noch eingang und dann kann man schon mal was machen .
-
So..
also hier ist ein Programm, dass die LEDs beim ProBot der Reihe nach aufleuchten läst solange PA7 auf GND ist..
Wird PA7 von GND getrent, geht das Licht zwischen dem letzten und dem nächsten LED hin und her, bis PA7 wieder mit GND verbunden ist..
Das kanst du mit einem z.B Taster machen..
Hoffe, das das Programm verständlich ist..
Code:
//Lauflicht und 1 Taster für Pro Bot
#define LED1 16
#define LED2 17
#define LED3 19
#define LED4 18
#define Taster1 7
#define OFF 1
#define ON 0
#define IN 0
#define OUT 1
void main(void)
{
Port_DataDirBit(LED1,OUT); //Auf Ausgang schalten
Port_DataDirBit(LED2,OUT);
Port_DataDirBit(LED3,OUT);
Port_DataDirBit(LED4,OUT);
Port_DataDirBit(Taster1,IN); //Auf Eingang Schalten
Port_WriteBit(LED1,OFF); //Alle LED OFF
Port_WriteBit(LED1,OFF);
Port_WriteBit(LED1,OFF);
Port_WriteBit(LED1,OFF);
Port_WriteBit(Taster1,1); //Pull UP Wiederstand einschalten
byte Status;
Status = 1;
while(true)
{
if (Status == 1) //ist der Status ==1
{
Port_WriteBit(LED2,OFF);
Port_WriteBit(LED1,ON);
AbsDelay(400);
Port_WriteBit(LED1,OFF);
Port_WriteBit(LED2,ON);
AbsDelay(400);
if(Port_ReadBit(Taster1)==0) //Wird der Taster gedrückt??
{
Port_WriteBit(LED2,OFF); //Wenn ja: LED2,OFF und
Status = 2; //Status Wechsel
}
}
if (Status==2) //Ist der Status == 2
{
Port_WriteBit(LED3,OFF);
Port_WriteBit(LED2,ON);
AbsDelay(400);
Port_WriteBit(LED2,OFF);
Port_WriteBit(LED3,ON);
AbsDelay(400);
if(Port_ReadBit(Taster1)==0) //Wird der Taster gedrückt??
{
Port_WriteBit(LED3,OFF); //Wenn ja: LED3,OFF und
Status = 3; //Status Wechsel
}
}
if (Status == 3) //ist der Status == 3
{
Port_WriteBit(LED4,OFF);
Port_WriteBit(LED3,ON);
AbsDelay(400);
Port_WriteBit(LED3,OFF);
Port_WriteBit(LED4,ON);
AbsDelay(400);
if(Port_ReadBit(Taster1)==0) //Wird der Taster gedrückt??
{
Port_WriteBit(LED4,OFF); //Wenn ja: LED4,OFF und
Status = 4; //Status Wechsel
}
}
if (Status == 4) //Ist der Status == 4
{
Port_WriteBit(LED1,OFF);
Port_WriteBit(LED4,ON);
AbsDelay(400);
Port_WriteBit(LED4,OFF);
Port_WriteBit(LED1,ON);
AbsDelay(400);
if(Port_ReadBit(Taster1)==0) //Wird der Taster gedrückt??
{
Port_WriteBit(LED1,OFF); //Wenn ja: LED1,OFF und
Status = 1; //Status Wechsel
}
}
}
}
Ich bin wie gesagt C anfänger..(noch nie zuvor C auf uc programiert) fals ein fehler im Programm ist, bitte melden!
Es funktioniert aber;)
Viel Spass und freundliche Grüsse
HD