Hilfe....Code will nicht kompilieren!

  • Hilfe....Code will nicht kompilieren!

    Moinsen!
    Ich bin grade dabei, mir die Temperatursteuerung von HIER nachzubauen, allerdings auf Lochraster.
    Nun wollte ich die Sourcen neu kompilieren, aber bekomme mit WinAVR-20100110 nur folgende Fehlermeldung:

    Quellcode

    1. Laminator.c:66: warning: passing argument 1 of 'fdevopen' from incompatible pointer type
    2. Laminator.c:66: error: too many arguments to function 'fdevopen'
    3. make: *** [Laminator.o] Error 1


    Könnte sich das mal einer anschauen und mir da weiterhelfen?

    Ach ja, mit der im Archiv enthaltenen Hex bekomme ich nur Datenmüll auf der Seriellen (Ja, hab nen MAX232ACPE mit in der Schaltung ), und die Steuerung läuft auch nicht....benutze einen Atmega8-16PU.
    Dateien
    • Laminator.c.txt

      (3,44 kB, 811 mal heruntergeladen, zuletzt: )
  • Also wenn ich (auf die Schnelle) die richtige Beschreibung von fdevopen gefunden habe, dann erwartet die Funktion einen Funktionpointer auf eine Funktion, die den Typ int(*)(char, FILE *) hat.
    Du müsstest also int uart_putchar (char c) zu int uart_putchar (char c, FILE * dummy) ändern, wobei dummy nicht in der Funktion benutzt wird. ('dummy' kann natürlich ein beliebiger anderer Name sein.)
    Alle anderen Aufrufe von (z.B.) uart_putchar('\r') müssten dann zu uart_putchar('\r', NULL) geändert werden. Also einfach noch eine NULL zu den Parametern hinzufügen.

    DoReCo #54 am Fr. 15.09. - So. 17.09.2017
  • OK, das und das enfernen der 0 in

    Quellcode

    1. fdevopen (uart_putchar, NULL, 0);
    hat geholfen. Allerdings kommt auf der seriellen Verbindung immer noch Datenmüll raus.
    Eigentlich sollte da der Wert vom ADC ausgegeben werden, damit man über den Sourcecode den Sensor kalibrieren kann.

    Ausserdem scheint da noch irgendwas anderes falsch zu laufen, momentan pulst der im Sekundentakt, als ob er den Sollwert schon erreicht hat.
  • CrazyIcecap schrieb:

    Allerdings kommt auf der seriellen Verbindung immer noch Datenmüll raus.


    Ich hab deinen Code mal durch den Simulator laufen lassen und bei 8Mhz, 9600 Baud die Daten über RS232 empfangen.

    Bei dir könnte es vielleicht daran liegen, dass die Fuses am ATMega8 nicht richtig programmiert sind. Im Auslieferungszustand sind sie auf "Interner RC Oszillator, 1MHz" gesetzt. Das solltest du theoretisch feststellen können, wenn du dein Programm so lässt, wie es ist und das RS232 Terminal auf 1200 Baud stellst (8MHz / 1MHz = 8; -> 9600Baud / 8 = 1200 Baud).

    Fuses für 8MHz
    CKSEL0 1
    CKSEL1 1
    CKSEL2 1
    CKSEL3 1

    Fuse Calculator: engbedded.com/fusecalc/
    AVR Fuses auf Deutsch: mikrocontroller.net/articles/AVR_Fuses
    AVRDUDE: nongnu.org/avrdude/

    Vorm Ändern die Fuses erst mal anschauen:
    avrdude -c PROGRAMMER -P PORT -p DEVICE -n -v
    VC20+2xC64+3 1/2(*g*)1541+Jede Menge kaputter 2164+CIA's.
    | Tweetme | acm3 | Humbug | Lyx | Art |
  • Die Fuses waren korrekt gesetzt, strikt nach Anleitung. Habe sie auch anschliessend überprüft.

    Danach habe ich mal alle möglichen Baudsettings ausprobiert, aber das hat auch nix gebracht. Eventuell macht mir da der USB2RS232-Adapter nen Strich durch die Rechnung. Muss wohl mal mein altes Notebook rauskramen, das hat noch ne echte serielle...
  • So, Problem gelöst. Nachdem ich nen Keramikschwinger angeschlossen und die Fuses passend geändert habe, klappt es auch mit der Verbindung. Code kompiliert jetzt auch funktionierend. Danke für die Tips!
  • Hier mal die Ätzresultate. Das erste wurde mit Papier aus nem Penny-Prospekt gemacht, das zweite mit den Überresten der Hochglanzbeschichtung mit Tintenstrahl-Fotopapier.
    Als Drucker kam ein HP Laserjet 1010 zum Einsatz. Werde mir mal Tonertransferpapier und Backpapier besorgen und damit testen.



  • Ich hab mal nen Test mit handelsüblichem Backpapier von Melitta gemacht. Zugeschnitten auf Fotogrösse, auf ein Blatt Fotopapier zur Stabilisierung beim Einzug gelegt und gedruckt. Wurde sauber eingezogen (ohne das Fotopapier wohlgemerkt! ), und löste sich beim Auflaminieren rückstandslos vom Papier. Ich muss noch ein paar weitere Testläufe machen, vor allem mit der Druckdichte (die Standardeinstellung ist etwas zu "dünn" ), aber grundlegend ist das Backpapier bislang der Sieger. Platine ein, zweimal zum aufheizen durchlaufen lassen, Papier auflegen, ein oder zwei Durchläufe, fertig. Das Papier fiel fast von alleine ab.

    Ich werde die Tage dann mal das Transferpapier besorgen und damit auch noch testen.
  • Benutzer online 1

    1 Besucher