URL: https://www.overclockers.at/coding-stuff/c-control_mit_c_c_programmieren_arduino_183439/page_3 - zur Vollversion wechseln!
Zitat von Burschi1620is ja schon fast eine bösgemeinte frage, auch wenn ichs nur gut mein. Aber - hauptprogramm void/int main() hast eh gemacht und die funktionen aufgerufen? Das beispiel programm zeigt auch keine libraries (aber die sind vermutlich eh da, sonst hättest net compilieren können, da hätte er bestimt beim delay geschrien)

Zitat
Kann man das teil auf standalone betrieb jumpern?

Zitat von Burschi1620Aber - hauptprogramm void/int main() hast eh gemacht und die funktionen aufgerufen? Das beispiel programm zeigt auch keine libraries
ASSEMBLER
Nein damit will ich gar nicht erst anfangen, ich persöhnlich hasse diesen pic assembler, wie umständlich kann man ein programm eigentlich schreiben?
Die main muss nicht dabei sein, ich geh mal davon aus, dass du ein programm haben wirst, dass die gesamte avr init usw drinnen hat auch dazugelinkt wird, aus dem grund kannst du wahrscheinlich sogar nicht einmal eine main funktion aufmachen.
Probier einfach mal ein programm zu schreiben mit einer main funktion, bin gespannt, ob er meckert.
edit: wah! g0t pwnt by That, vergiss die hälfte die unten steht. Warum kann das teil das selbst machen? Woher weiß das teil wann ich welche fnkt aufrufe? Kann mir das gerade net vorstellen (geschweige denn die sinnhaftigkeeit)
du knöderl

http://www.galileo-press.de/openboo...1.htm#Xxx999328
Ich mag dir nix aufdrücken, aber gut zum anfang wenn man mal was gschwind braucht.
Was du wissen solltest: Mikrocontroller C is bissl primitiver als normales C und C selbst is noch ne ecke primitiver als C++. Also stell dich schonmal auf unschöne lösungen ein.
anfangs musst du mal bibliotheken hinzufügen (wird eh die IDE für dich machen nehm ich an)
Dann kannst du bei mikrocontroller meistens noch irgendwelche spezifischen Bits setzen. Ich glaub bei den atmels sind das die "Fuse bits" oder so. Da kann zb der brownout, der quarztakt, ob du das programm wieder auslesen kannst aus der CPU oder ähnliches festgelegt werden.
Die kommen ganz oben.
Und dann kannst du nach C manier programmieren.
Funktionen deklarieren oben mit einem strichpunkt abschließend und unterm main() füllen, oder du schreibst sie gleich oben. (Solltest du des net wissen -> Modulares Programmieren in C)
Sprich du brauchst mal sowas:
So sollte das in etwa aussehen (oder in deinem programm schreibst einfach das main() unter den funktionen)Code:openfkt(); void main() { ....code.... openfkt(); } openfkt() { int blubb=0; }
gut, ehrlich gesagt moechte ich die arduino ide nicht verwenden, gluecklicherweise gibt es eine vorgeschrieben makefile fuer den betrieb von der CLI aus... anscheinend hat diese noch ein wenig probleme (aufeinmal kA wieso...) die includes zu finden (obwohl sie da sind
) aber da wird man sicher etwas zusammenfrickeln koennen
Und wieso genau ist Microcontroller C primitiver als ansi c89?
Mal abgesehen davon hab ich bereits oben hingeschrieben, dass du sowohl in der ide, als auch per make file gegen andere sourcecodes auch noch verlinken kannst, also ist es nicht umbedingt gesagt, dass du einen main() überhaupt reinschreiben darfst.
eine main darf ich nicht reinschreiben, das ist der output -> http://nopaste.info/2489036b47.html
bis auf ein #include "WProgram.h" (wie die makefile es verlangt) genau der selbe source wie das von mir gepostet tutorial...
wie gehabt, die LED blinkt nicht, hm wo koennte da der fehler liegen? ich sehe naemlich (noch) keinen 
Led verpolt?
Kommt er überhaupt bis zum Ausführen des Programms?
led passt, sonst wuerde sie beim restarten oder anstecken des boards nicht kurz dreimal blinken...
ich glaube ja, dass er nicht zum ausfuehren des programms kommt... :/ das ist mein problem
deswegen tippe ich darauf, aber ich werde leider net wirklich schlau aus dieser FAQ:
ZitatWhy doesn't my sketch start when I power up or reset the Arduino board?
Most likely because you are sending serial data to the board when it firsts turns on. During the first few seconds, the bootloader (a program pre-burned onto the chip on the board) listens for the computer to send it a new sketch to be uploaded to the board. After a few seconds without communication, the bootloader will time out and start the sketch that's already on the board. If you continue to send data to the bootloader, it will never time out and your sketch will never start. You'll either need to find a way to stop serial data from arriving for the first few seconds when the board powers (e.g. by enabling the chip that sends the data from within your setup() function) or burn your sketch onto the board with an external programmer, replacing the bootloader.
nunja, ich hab mittlerweile Keil-C Pic-C und ein wenig atmel C hinter mir und hab bemerkt dass sowohl die standard libraries immer anders sind und auch nicht immer vollzählig bestückt sind als auch die controllerspezifischen befehle teilweise recht primitiv sind und mich persönlich oft verwirren.Zitat von MarcellusUnd wieso genau ist Microcontroller C primitiver als ansi c89?
Wenn dein rechner probiert mit dem board verbindung aufzunehmen wird das programm, dass auf dem board drauf ist nicht ausgeführt. Hast du irgendwas laufen, dass probiert mit dem board zu kommunizieren?
Gibts irgendeinen arduino daemon oä? Wenn nicht probier ganz einfach mal dein board an einen anderen rechner anzuhängen, der sich mit der hardware nicht auskennt.
Das ist alles was das faq sagt
Hast du die led sicher richtig reingesteckt?
int ledPin = 13; => langer haxn auf den 13. pin und den kurzen auf gnd
edit zwecks doppelpostvermeidung
Du programmierst in so einem fall nicht pic c sondern das eingeschränkte c, dass der compiler kann, wenn du dir zumbeispiel den hi-tech compiler anschaust wirst du feststellen, dass der ziemlich alles kann, was c89 vorschreibt.
Natürlich kann ein cc5x gratis compiler nix dagegen, aber pics werden normal nur im massenproduktionen verwendent, weil du mit einem atmel bei einer kleineren stückzahl mit einem atmel besser dran bist. Und bei solchen stückzahlen fällt der c compiler eh nicht ins gewicht.
Ich hatte auch schon das vergnügen ein struct array aufbauen zu müssen, weil der cc5x keine mehrdimensionalen arrays checkt.
Im übrigen solltest du rekursionen und dergleichen genausowenig auf einem x86 verwenden, deswegen sollte dich der unterschied eh nicht so stören
.
Zitat von Burschi1620@Lukas, was is die setup funktion?
Zitat von Lukas(ja, die led is am pin 13 und am GRND mit dem kurzen haxen, sie blinkt ja 3 mal kurz beim start)

ZitatThere is a known startup bug with the Arduino NG that makes it look like it's lost its program. This happens when the RX pin floats and the bootloder thinks it's about to receive a program. The solution is a 10K or 4.7K resitor from the RX pin to ground.
sooodala
ich habs hinbekommen, man muss da was ganz eigenes machen... eine int main in der init(); setup(); und for(;
loop(); drinnen steht
etwas gewoehnungsbeduerftig aber es funktioniert
juhuuu jetz kanns losgehen... 
edit: anstatt mit dem naechsten problemchen aufzutauchen kann ich gleich eine erfolgsmeldung nachschieben 
http://www.arduino.cc/playground/Interfacing/LinuxTTY
kommunikation mit dem geraet funktioniert super ueber screen... 1 und 2 schalten mir meine led ein und aus
ideal
Code:#include "ide/trunk/targets/arduino/WProgram.h" int ledPin = 13; int main() { init(); setup(); for (;;) loop(); return 0; } void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); } void loop() { if(Serial.available() > 0) { int incoming = Serial.read(); if( (char)incoming == '1') { digitalWrite(ledPin, HIGH); Serial.println("on"); } if( (char)incoming == '2') { digitalWrite(ledPin, LOW); Serial.println("off"); } } }
lol ich versteh des programm net 
du machst ne endlosschleife (for(;
) und er ruft trotzdem loop(); auf?
solange ich kein semikolon hinter for(;; ) mache sollte die naechste zeile doch als der auszufuehrende code in der endlosschleife sein, so muesste es sein, sonst wuerde es ja nicht funktionieren...
edit: wobei ich ja normalerweise while(true) verwende, das hab ich aber aus dem arduino makefile bsp. ist mir auch nicht wirklich bekannt dieser stil einer endlosschleife...
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026