libnodave und AVR von Atmel, kann man beides verheiraten?

Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank, Jochen! :D

Ich werde mir deine Testdatei in aller Ruhe angucken und versuchen das unnütze Krams rauszuschmeißen.

Aber opfere nicht all zu sehr deine Zeit damit! Es ist nicht lebensnotwendig!
Trotzdem: Danke danke danke für deine Hilfe...

Gruß,
poppycock
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallöchen...

Wollte nur Fragen ob du mal was probiert hast und obs geht...

Will das nur wissen, ob Ich die Änderungen in meiner libnodave Version belasse oder wieder entferne (wenns nix bringt!).
 
Hallo Jochen.

Wollte nur Fragen ob du mal was probiert hast und obs geht...

Sorry, ich habe im Moment wieder kaum "Luft", da ich seit gestern meinen Urlaub für eine unbestimmte Zeit unterbrechen musste. :-(
Der Code lässt sich compilieren, aber ist noch ziemlich groß.
Man müsste noch einiges optimieren, aber ich denke, es sollte kein Problem sein die Daten mit dem UART vom µC an den MPI-Adapter zu schicken.

Gruß und Danke (fürs Verständnis),
poppycock
 
Bin gerade beim stöbern auf mikrocontroller.net auf ein paar Compiler und Linker Flags gestoßen welche unbenutzte Funktionen wegoptimieren...

hab diese ins Makefile mit eingebunden...

Mfg...
 

Anhänge

Zuviel Werbung?
-> Hier kostenlos registrieren
...nach längerer Zeit mal wieder ein Lebenszeichen von mir...

Hallo,

ich wollte mich auch mal wieder melden. :ROFLMAO:

Im Moment bin ich zeitlich noch immer sehr eingeschränkt, aber das Thema hier lässt mir eigentlich keine Ruhe...

Da ich aber hin und wieder ein paar Minuten Freizeit habe (Schule, Schichtarbeit -> ANSTRENGEND!), dachte ich mir, ich versuche es nochmal, aber in abgewandelter Form.


Ziel ist jetzt:
  • S7-300 via MPI-Adapter von Siemens mit einem Atmel AVR verbinden
  • Schnittstelle: nur seriell (RS232)
  • es soll nur EIN Zustand gelesen werden:
    z.B. DB50.DBX2.3
  • Ausgabe auf LCD oder über zweite RS232-Schnittstelle am AVR
  • jede Sekunde soll ein Polling gestartet werden (mittels Timer)
Das eigentlich Problem ist für mich das Entschlacken der "nodave.h" und "nodave.c" für einen Atmel Mikrocontroller.
Zottel hatte ja mal in einem älteren Thread angegeben, dass es kein Problem sei libnodave auf einen AVR zu portieren.
Dazu hatte ich ihn vor längerer Zeit angeschrieben, aber leider habe ich keine Unterstützung erhalten. :cry:
Ich will nichts vorgefertigtes, ich benötige nur Hilfe, den Code zu verstehen, um diesen für einen AVR umzusetzen.

In den ZIPs von Jochen habe ich gesehen, dass dort keine libnodave.dll eingebunden wurde.
Brauche ich diese überhaupt?

Die Ausgabe auf das LCD oder am UART ist erstmal nebensächlich, stellt auch kein Problem bei der Umsetzung dar.
Hauptsache das Programm "AVR Studio 4" kann erstmal OHNE Fehler die Initialisierung des Adapters kompilieren.

Wer bereits mehr Erfahrungen damit hat oder mir unter die Arme greifen möchte, der kann sich hier einklinken, würde mich freuen!
Tipps sind immer willkommen!

Danke und Gruß,
poppycock
 
Eine dll benötigst du nicht, bzw. funktioniert das auf einem AVR auch garnicht weil du kein Betriebssystem hat welches eine dll laden könnte.

Die Vorgehensweise die du benötigst, ist die übersetzen Programmteile statisch zusammenzulinken.
Dann erkennt der Compiler beim Übersetzen auch welche Funktionen du aus der nodave.c überhaupt benötigst, und linkt nicht genutzte Funktionen nicht zur hex-Datei dazu.

Ob das trotzdem ohne weitere Änderungen in 8 Kb Flash passt ist eine andere Sache. Du musst auf jeden Fall prüfen dass nirgends float oder double verwendet wird, und auch kein printf() benötigt wird. Denn die Gleitkomma- und die printf() Bibliotheken machen den AVR bestimmt alleine schon halbvoll.

PS:
Wenn ich das mit einem so kleinen AVR machen müsste, würde ich das über Ethernet mit einem XPort machen, und die benötigten Telegramme fest im Flash-Speicher des AVR hinterlegen und nur noch über die serielle Schnittstelle rausschicken.
 
Hallo Thomas_v2.1!

Eine dll benötigst du nicht, bzw. funktioniert das auf einem AVR auch garnicht weil du kein Betriebssystem hat welches eine dll laden könnte.
Richtig, auf dem AVR läuft kein OS, DLL einbinden fällt da flach!
Dann brauche ich wirklich nicht die DLL, hatte gedacht, ich muss den Code, der in der DLL steht, irgendwie mitverlinken.

Die Vorgehensweise die du benötigst, ist die übersetzen Programmteile statisch zusammenzulinken.
Und dieses muss ich mir raussuchen.
Das kann aber ein wenig (bei mir) dauern... :cry:

Ob das trotzdem ohne weitere Änderungen in 8 Kb Flash passt ist eine andere Sache. Du musst auf jeden Fall prüfen dass nirgends float oder double verwendet wird, und auch kein printf() benötigt wird. Denn die Gleitkomma- und die printf() Bibliotheken machen den AVR bestimmt alleine schon halbvoll.
Auf den genauen AVR-Typ hab ich mich noch nicht festgelegt, aber die ganze Sache soll ja quasi so statisch wie möglich sein.
Die Daten, die vom MPI-Adapter ausgegeben werden, sind doch schon ASCII, oder nicht? Das muss ich mir nochmal angucken, wenn ich soweit bin, aber auch float oder double werde ich verzichten. Diese schlucken echt viel Speicherplatz.

Wichtig ist erstmal, dass ich einen Verbindungsaufbau zum MPI-Adapter aufbauen kann.
Der Rest kommt nach und nach.

Gruß,
poppycock
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm...

Mit dem was Ich dir damals geschickt habe, lässt sich die libnodave doch schon fehlerfrei compilieren...

Auf microcontroler.net gibts auch einen pb slave direkt auf dem avr. bestimmt könnte man den code auch so erweitern, das sich der avr wie ein pb programmiergerät verhält. dann könnt man libnodave vieleicht direkt verwenden, ohne den seriellen adapter ... Nur noch so als idee
 
Hallo Jochen!

Mit dem was Ich dir damals geschickt habe, lässt sich die libnodave doch schon fehlerfrei compilieren...

Bei mir geht es nicht fehlerfrei zu kompilieren, siehe Screenshot.
Anbei bemerkt, dass ich deine Files in der ZIP für jetzt auf die Schnelle als Projekt im AVR Studio 4 eingebunden habe.
Bin ja bereits selber beim Probieren und Studieren des Codes.

Hast du eventuell die *.aps für dieses Projekt?
Mein AVR Studio 4 ist Build 528, Version 4.13.
WinAVR ist die Version 20100110.

Gruß,
poppycock
 

Anhänge

  • libnodave_avr_jochen.jpg
    libnodave_avr_jochen.jpg
    40 KB · Aufrufe: 17
Zurück
Oben