PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C IDE für Linux



ts230
18.01.2009, 01:44
Hallo,
ich bin auf der Suche für eine C IDE für Linux.
Die sollte für die gänigsten AVRs kompilieren(ATMEGA644,ATMEGA8...)
Alle Windows IDEs die ich in Wine probiert haben,
funktionierten irgendwie nicht so wirklich.
Dev-Cpp soll angeblich auch C können aber mailt rum wenn ich PORTB.2=1; machen will.

s.o.
18.01.2009, 05:45
Eine wirkliche Ide gibts nicht. Ich habe mal Kontrollerlab probiert, arbeite aber zur Zeit im Geany. Geany solltest du dir auf jeden Fall man anschauen.

Ceos
18.01.2009, 09:57
nach kurzem googeln "avr studio linux"

http://fr.rpmfind.net/linux/RPM/sourceforge/c/cd/cdk4avr/cdk-avr-avrstudio-3.55-20021116.i386.html

gefunden, nicht getestet, nciht komplett durchgelesen, aber klingt doch irgendwie nach avr für linux, oder?! ^^

poste bitte deinen bericht dazu wenns klappt, würde mich interessieren, hab kollegen die sowas auch brauchen könnten

linux_80
18.01.2009, 10:07
Hallo,

eclipse wird doch gern dafür genommen, click (http://www.mikrocontroller.net/articles/AVR_Eclipse),
auch in CodeBlocks (http://www.codeblocks.org/) hab ich was von AVR gelesen.

Mit PORTB.2=1 wirst Du aber erstmal in C nicht weit kommen, das kommt eher von Bascom.

pyr0skull
18.01.2009, 11:09
Eclipse ist bis jetzt mit das beste, was ich an IDEs unter Linux benutzt habe. Lässt sich auch durch entsprechende Plugins um alle möglichen anderen Sprachen erweitern.

markusj
18.01.2009, 12:09
Ich nutze Code::Blocks, zwar unter Windows aber das is ja in verschiedenen Geschmacksrichtungen erhältlich. War bisher eigentlich ganz zufrieden damit!

Aber wie oben schon erwähnt, "PORTB.2=1;" ist kein C sondern BASCOM. (Und somit ein BASIC-Dialekt)

mfG
Markus

ts230
18.01.2009, 15:58
Aber wie oben schon erwähnt, "PORTB.2=1;" ist kein C sondern BASCOM. (Und somit ein BASIC-Dialekt)

Wie würde ich es dann machen?
Ich schau mir mal die Links an.

markusj
18.01.2009, 19:02
Ehm, mal frei raus ausm Gedächtnis (bin im Moment etwas aus der Übung):
PORTC |= (1 << PC2);
Was bedeutet, dass die "1" um den Wert der Konstanten PC2 nach links geschoben wird. Dann wird das Bit mit dem bisherigen Wert von PORTC verodert, also gesetzt falls das bisher nicht der Fall war.
Der Compiler optimiert das ganze dann (hoffentlich) in eine "SetzeBit" Anweisung.

Lies dir doch mal die Einträge im RN-Wissen zum Thema AVR-GCC durch!

mfG
Markus

ts230
19.01.2009, 04:14
Ehm, mal frei raus ausm Gedächtnis (bin im Moment etwas aus der Übung):
PORTC |= (1 << PC2);
Was bedeutet, dass die "1" um den Wert der Konstanten PC2 nach links geschoben wird. Dann wird das Bit mit dem bisherigen Wert von PORTC verodert, also gesetzt falls das bisher nicht der Fall war.
Der Compiler optimiert das ganze dann (hoffentlich) in eine "SetzeBit" Anweisung.

Lies dir doch mal die Einträge im RN-Wissen zum Thema AVR-GCC durch!

mfG
Markus
geht PORTC &= ~ _BV(PC2); nicht auch?Hab das auf www.mikrocontroller.net gefunden.
Ach:
Was soll denn
en
main.c:116: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
bedeuten?
Hier ist main.c:116
char USART_Receive()
so schreibt man doch ne C Funktion?
Wenn ich void in die Klammern schreibe besteht der Fehler.
Das hab ich mit ner IDE unter Wine(www.winehq.org) probiert.

markusj
19.01.2009, 07:09
Ehm, danach kommt entweder ne geschweifte Klammer, oder aber ein Semikolon (zur definition).
Ohne den ganzen Source lässt sich das aber schlecht sagen.
Und zu dem Source aus mikrocontroller.net: Da hat sich jemand eigene Makros definiert, die ihm die Arbeit abnehmen.

Wie gesagt, lies die dir Artikel im RN-Wissen durch, die sind echt gut!

mfG
Markus

ts230
19.01.2009, 15:40
Hier is die komplette USART_Recive():


char USART_Receive(){

unsigned char c;

c = uart_getc();

if ( c & UART_NO_DATA )

{

/*

* no data available from UART

*/

}

else

{

/*

* new data available from UART

* check for Frame or Overrun error

*/

if ( c & UART_FRAME_ERROR )

{

/* Framing Error detected, i.e no stop bit detected */

uart_puts_P("UART Frame Error: ");

}

if ( c & UART_OVERRUN_ERROR )

{

/*

* Overrun, a character already present in the UART UDR register was

* not read by the interrupt handler before the next character arrived,

* one or more received characters have been dropped

*/



uart_puts_P("UART Overrun Error: ");

}

if ( c & UART_BUFFER_OVERFLOW )

{

/*

* We are not reading the receive buffer fast enough,

* one or more received character have been dropped

*/

uart_puts_P("Buffer overflow error: ");

}

/*

* send received character back

*/

return c;

}

}

Das sagt der bei wirklich allen Funktionen.
PORTC &= ~ _BV(PC2);
kompiliert aber einwandfrei.

markusj
19.01.2009, 18:52
Komisch ... naja, ich hab im Moment keine Entwicklungsumgebung zur Verfügung und Fehlersuchen ohne den ganzen Quelltext kann sehr sinnlos sein, wenn dieser von weiter oben eingeschleppt wird.

mfG
Markus

PS: Was das _BV angeht, das scheint wohl tatsächlich das Mittel der Wahl zu sein, wenn es um das setzen einzelner Bits geht. Ich kenne mich halt auch noch nicht sooo gut mit (AVR)-C aus.
Die richtigen C-Cracks werden sich vermutlich eher nicht in diesen Thread verirren, da der Titel nicht viel mit dem zu tun hat, worüber wir momentan diskutieren.

ts230
21.01.2009, 04:24
Also Eclipse will nicht.
Naja,
ich hab ja noch ein paar andere...

pyr0skull
21.01.2009, 07:10
Was genau will Eclipse denn nicht?

ts230
21.01.2009, 23:36
Was genau will Eclipse denn nicht?
Das Installieren geht bei mir auf Ubuntu 8.10 nicht.

ts230
22.01.2009, 00:03
Eine wirkliche Ide gibts nicht. Ich habe mal Kontrollerlab probiert, arbeite aber zur Zeit im Geany. Geany solltest du dir auf jeden Fall man anschauen.
ich hab jetzt Geany druf,aber ich kann immer noch nicht für AVR kompilieren.
Was muss ich noch machen das der für AVRs kompiliert?

ts230
28.01.2009, 01:12
Ich hab jetzt Code:Blocks installiert und funktioniert!
Als erstes AVR-GCC installieren,dann Code:Blocks
und AVR-GCC als Standart-Compiler einstelllen.

pyr0skull
28.01.2009, 09:06
Was genau will Eclipse denn nicht?
Das Installieren geht bei mir auf Ubuntu 8.10 nicht.

Wie genau gehst du denn vor? ist eigentlich total simpel. Du lädst das Paket runter, entpackst das irgendwo hin - z.B. in dein Home-Verzeichniss - und startest das binary "eclipse" in dem Verzeichnis. Wenn eine Meldung kommt, dass kein JRE installiert ist, musst du das über den Paketmanager nachinstallieren.