Raspi Projekt mit Win AVR Compilieren ?

Gast #4746333
Lesenswert?

Hallo Leute,

gibt es eine Möglichkeit ein Arduino/Raspi Projekt mit dem AVR Studio zu 
compilieren ?
Ich habe weder ein Arduiono noch einen Raspi.
Programmieren läßt sich der Tiny ja auch anders.

http://raspberry.tips/wp-content/uploads/2014/11/Send_DS18B20.ino
http://raspberry.tips/wp-content/uploads/2014/11/Receiver_PI.ino

Ideen ob das geht ?

Danke
#4746344
Lesenswert?

Kannst auch einen Cross-Compiler auf dem PC bauen, die Libraries 
einsammeln etc. Aber es wird einfacher sein, einen echten RasPi zu 
nehmen um RasPi Programme zu bauen.

Der RasPi ist von der Programmierung her im Grunde ein ganz gewöhnlicher 
Linux-PC. Wer die Kommandozeile nicht mag: Bildschirm/Tastatur/Maus kann 
lokal angeschlossen werden, oder der PC übernimmt das per X-Server 
(Linux oder Windows+Cygwin)
#4746676
Lesenswert?

es wird ja kein Paspi Programm. Es wird ein Programm für einen Tiny84.
Funkthermometer ( DS18xx und RFM12) und einen Funkempfänger mit Tiny84.

Ich habe WinAVR mit den 3 Libs gefüttert und versucht zu kompilieren.
Das kompilieren mit WinAVR scheitert z.B. hieran:

// Need an instance of the Radio Module
RFM12B radio;

// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

Das Projekt ist von hier:

https://raspberry.tips/hausautomatisierung/raspberry-pi-funksensoren-und-empfaenger-selber-bauen-teil-1-projekt-info/
Persönliche Seite #4746740
Lesenswert?

Ohne die IDE musst du all den Code / Module, die wie dokumentiert per 
wget und git clone beschafft wurden, von Hand managen :-)

Und wenn man da all das Zeug liest, dass per wget und git clone und per 
"Sketch" laden beschafft werden muss, dann wird einem ganz schummrig.

Als erstes kannst du dich also schlau machen, wie man Ardiuno-Zeugs ohne 
die IDE compiliert bekommt...  Dafür ist ein Ardiuno-affines Forum wohl 
besser als Hilfe geeignet als hier...
#4746765
Lesenswert?

Johann L. schrieb:
> Ohne die IDE musst du all den Code / Module, die wie dokumentiert per
> wget und git clone beschafft wurden, von Hand managen :-)

sowas in der Art vermute ich.
Nur arbeite ich an einem Windows PC und meist mit einem Macro Assembler.
Da benutze ich keine Libs.

SORRY !!!

Ich habe hier Atmel Studio 6 installiert.
Die Libs ( Jeelib-master, Arduino-Temperatur, RFM12B-master und OneWire) 
in das Projekt eingebunden und will es kompilieren.
Dann hagelt es Fehlermeldungen ohne Ende.

Screenshot anbei
Angehängte Dateien:
#4746779
Lesenswert?

Stephan H. schrieb:
> und will es kompilieren.
> Dann hagelt es Fehlermeldungen ohne Ende.

Einfach von oben nach unten abarbeiten.

Zum Beispiel im Bild sieht man daß entweder die OneWire.h nicht 
existiert oder daß das Verzeichnis in dem sie sich befindet nicht in 
die include-Pfade aufgenommen wurde.

--> obigen Mangel beheben
--> weiter zur nächsten Fehlermeldung
--> wiederholen bis fertig.
#4746862
Lesenswert?

gut dann andres gefragt ....

was muss ich tun um das hin zu bekommen.
Wie ist die Endung einer Lib ? Die CPP Dateien hatte ich auch schon 
drin.

der Pfad stimmt !

Entschuldigung, C ist nicht meine Sprache.
ANL, ORL, XRL, RRA, etc. verstehe ich.
Für wiederkehrende Routinen nutze ich Makros keine Libs.

Aber er will ja *.h einbinden. Ähnlich meiner Makros.
Die *.h enthalten aber offensichtlich andere *.h die er nicht findet.
Vermute ich.
Im Screenshot kann man ja den Pfad sehen. Die *.h ist auch da.
Nur steht da drin wieder include *.h.....nur woher ?
Angehängte Dateien:
#4746906
Lesenswert?

Stephan H. schrieb:
> was muss ich tun um das hin zu bekommen.

Klick Dich durch die Projekteinstellungen, irgendwo da muss es da eine 
Abteilung für die Include-Pfade geben. Dort ist irgendwo eine Liste von 
Suchpfaden zu pflegen unter denen der Compiler nach Headerdateien (*.h) 
suchen wird sobald er auf ein #include trifft. Jeder Ordner in dem sich 
solche *.h Dateien befinden muss zu dieser Liste hinzugefügt werden.

In der Konsolenausgabe (das was beim Build in schneller Folge 
durchscrollt) wirst Du dann sehen wie dem Compiler beim Aufruf all diese 
Pfade mittels je einer -I pfad/zum/ordner/ Option mitgeteilt werden. Nur 
dadurch kann der Compiler wissen wo er überall suchen muss wenn er auf 
ein #include <irgendwas.h> trifft und nun verzweifelt nach der Datei 
"irgendwas.h" suchen muss.
#4746929
Lesenswert?

Stephan H. schrieb:
> Wer denkt sich so einen kranken SCH*** aus ???
> Include im Include im Include....

Nun, das war schon immer so, auch in anderen Sprachen ist es durchaus 
üblich dass Software in handliche Module aufgeteilt wird und jedes Modul 
auf bereits vorhandenen Funktionen in anderen Modulen aufbaut und diese 
anderen wiederum ebenfalls auf bereits vorhandenem in wieder anderen 
Modulen, und so weiter, und so fort.

Das nennt man Modularität und Wiederverwendbarkeit. Gäbe es das nicht 
müsste man es schleunigst erfinden, denn es spart massiv Arbeit.
Persönliche Seite #4747222
Lesenswert?

Stephan H. schrieb:
> Wie ist die Endung einer Lib ?

Je nach Compiler *.a oder *.lib.

Du hast aber gar keine Libraries.

Und Dein Problem ist (unter anderem), daß Du zwar die rfm12b.h in Dein 
Projekt reingefrickelt hat (unter Libraries), aber da gehört es nicht 
hin.

Die Fehlermeldung, daß die Datei nicht gefunden werden kann, entsteht 
beim Übersetzen einer *.c oder *.cpp-Datei (kann man auf Deinem 
Screenshot nicht erkennen). Dort wird die Datei via #include 
eingebunden, und aus Sichtweise der *.c- oder *.cpp-Datei kann die 
RFB12B.h nicht gefunden werden, weil sie /irgendwo anders im 
Dateisystem/ ist, aber nicht dort, wo die *.c oder *.cpp-Datei ist, und 
die #include-Anweisung auch keinen passenden relativen Pfad enthält.

Damit das aufgeht, musst Du in Deinen Projekteinstellungen den 
Speicherort, an dem die Datei RFM12B.h liegt, in den sogenannten 
"include-Pfad" aufnehmen. INCLUDE, nicht Library!

Nimm Dir mal einen Zettel und einen Stift, und male Dir die 
Verzeichnisstruktur auf Deinem PC auf - wo liegen Deine 
*.c/*.cpp-Dateien, wo liegen die *.h-Dateien, die Du verwenden willst 
und wo liegen die dazugehörigen *.c/*.cpp-Dateien, die in Deiner 
Projektverwaltung bislang gar nicht auftauchen.

Bei Deinem Problem hilft es auch nicht, die Headerdateien (*.h) zur 
Projektverwaltung hinzuzufügen, den Compiler interessiert das nicht.

Man sollte das zwar trotzdem machen (mit allen nicht vom Compiler selbst 
zur Verfügung gestellten Dateien), damit man in der Projektverwaltung 
die Abhängigkeiten sehen kann (nach dem Motto "mein Projekt benutzt 
blafusel.h") und damit, falls man an diesen Dateien Änderungen 
durchführt, die Projektverwaltung beim Compilieren dafür sorgt, daß alle 
*.c/*.cpp-Dateien, die zum Projekt gehören und die Headerdatei 
einbinden, neu übersetzt werden.

Aber --wie schon gesagt-- Dein Problem ist ein anderes. Der Compiler 
weiß nicht, wo er nach der Datei zu suchen hat. Er such nur im 
sogenannten "include-Pfad" oder im aktuellen Verzeichnis, d.h. dort, 
wo die jeweilige *.c/*.cpp-Datei liegt, die gerade übersetzt wird.
#4748138
Lesenswert?

Hallo,

die beiden Scripte aus den Anfang sind doch ohnehin Arduino-Sketche.
Also Arduino-IDE installieren, Scripte als .ino in den Sketchordner.
Dann gehört noch die RFM12B Lib (liegt bei github, Ursprung von 
Jeelinks), dann compilieren und flashen...

Gruß aus Berlin
Michael
#4749596
Lesenswert?

Michael U. schrieb:
> Hallo,
>
> die beiden Scripte aus den Anfang sind doch ohnehin Arduino-Sketche.
> Also Arduino-IDE installieren, Scripte als .ino in den Sketchordner.
> Dann gehört noch die RFM12B Lib (liegt bei github, Ursprung von
> Jeelinks), dann compilieren und flashen...
>
> Gruß aus Berlin
> Michael

na das klingt doch vielversprechend. Das teste ich Heute Abend sofort 
aus.
Dieser Zusammenhang fehlte mir. Ich dachte das INO Zeugs gehört alles 
zum Raspi.

Allen anderen auch Danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren