Forum: Mikrocontroller und Digitale Elektronik Arduino in C-Code Übersetzen für AVR-ISPMk2


von Basstler (Gast)


Angehängte Dateien:

Lesenswert?

Hi ihr,
ich habe eine Frage.. und zwar ob ich diesen Arduino Code so richtig in
C umgeschrieben habe und wie ich in der untersten Funktion Ton() die
Ausgangspins setzen kann weil PORTB = 0b00000001 also Pin B0 = 1 nimmt
er nich.... vermute mal dass es was mit der Sichtbarkeit zu tun hat also
ob Globale Variable oder Lokale...

Ich muss dazu sagen ich bin totaler Anfänger in diesem Thema und naja
boxe mich mit meinem Java Wissen etwas durch und einigen tutorials...
aber alles kann man sich da halt nicht rauslesen...^^

Hatte zuerst versucht mit einem Arduino einen ATTINY 84 und einen
ATMEGA8 zu flashen aber iwi gab das nur probleme deshalb bin ich jetzt
kurzfristig auf das AVR-ISP-MK2 umgestiegen was ich aber erst am Montag
bekomme. Wollte aber mal vorrab von euch wissen ob man das so machen
kann.


Danke schonmal vielmals!!!



Hier der Arduino Code und weiter unten der Übersetzte C-Code für das
AVR-Studio:

von Basstler (Gast)


Lesenswert?

ok am Ende steht da nicht 00000001 sondern 00000000^^


aber mal noch was anderes.... Wieso kann ich nach Neustart des Programms 
kein "debuggen" durchführen?

Ich habe die Datei mit "speichern unter" in einen neuen Ordner 
gespeichert und seither zeigt er mir keinen grünen Balken mehr an links 
und die Debugg Funktion ist grau...

Fehlt ihm jetzt irgend eine Referenz die beim speichern verlohren 
gegangen ist oder so?

von Peter II (Gast)


Lesenswert?

warum nennst du deine Dateien *.txt?

Der fehler mit dem delay ist immer noch drin, es müssen konstanten sein 
keine Variablen.

von Basstler (Gast)


Lesenswert?

naja habs schnell in den editor gepackt und gespeichert^^

wie kann ich dann unterschiedliche Wartezeiten einstellen? Einfach in 
der Funktion Ton() eine Konstante erzeugen und der den Ankommenden Wert 
zuweisen?

von chris (Gast)


Lesenswert?

Aus welchem Grund schreibst du es in C um ?

von Basstler (Gast)


Lesenswert?

ok hab selber noch 2 Sachen gefunden... einmal war die Kalibrierung() 
falsch deklariert und die BITS am anfang sind jetzt auch richtig 
deklariert..^^

Es kommt aber noch immer der Fehler hier für die Funktion 
"Kalibration();":

Warning  2  implicit declaration of function 'Kalibration' 
[-Wimplicit-function-declaration]...

von Thomas E. (thomase)


Lesenswert?

Basstler schrieb:
> aber mal noch was anderes.... Wieso kann ich nach Neustart des Programms
> kein "debuggen" durchführen?
Weil man ein fehlerhaftes Programm, das nicht compilert, nicht debuggen 
kann.

>unsigned next:1  = 0;
Das gehört in ein struct.
>digitalWrite(Ton,LOW);
Wo ist diese Funktion?

Das würde zwar compilieren, aber:
>nt16_t Kalibrationarray1[256];
>int16_t Kalibrationarray2[256];
>int16_t Kalibrationarray3[256];
macht zusammen 1536 Bytes
Attiny84: 512 Bytes
Atmega8: 1024 Bytes

Basstler schrieb:
> wie kann ich dann unterschiedliche Wartezeiten einstellen? Einfach in
> der Funktion Ton() eine Konstante erzeugen und der den Ankommenden Wert
> zuweisen?
Das ist Problem Nr. 947. Und je nach GCC-Version noch nicht mal ein 
Fehler. Eine Konstante ist eine Konstante. Fang erstmal bei 1 an.
Dein Compiler überschüttet dich schliesslich mit Fehlermeldungen.

mfg.

von Basstler (Gast)


Lesenswert?

Weil ich mit dem AVR-Studio arbeite und das die Syntax vom Arduino ja 
nich kennt^^
Und ich wollte ATTINY84 und ATMEEGA8 flashen und das hatte mit dem 
Arduino Board nicht klappen wollen bzw nicht gut... Hätte dann mit den 
Fuses rumm experimentieren müssen und ich dachte wenn ich es in C 
umschreibe und mit dem AVR-ISP-MK2 flashe bin ich besser unterwegs. 
Zumal Grundkenntnisse in C nie verkehrt sind!

Oder kennt ihr einen besseren Weg? Denke ich habs ja schon fast... Hoffe 
nur dass es so funktioniert wie ichs bisher programmiert habe...^^

von Basstler (Gast)


Angehängte Dateien:

Lesenswert?

aktueller Code muss für heute leider Schluss machen...

Ja das mit den Arrays ist wohl ein Problem das ich lösen muss oO... 
nicht gut wenn der Ram vollläuft und dann nichts mehr geht :D

Denke dann nehme ich einfach nach 256 Kapazitiven Lade und Entlade 
Vorgängen den letzten Wert als Kalibrationswert das spart die Arrays.

von chris (Gast)


Lesenswert?

Dann schau mal das an, ist nicht ganz 100% korrekt, aber gut beschrieben
und sollte für deine Zwecke reichen.

http://smileymicros.com/blog/2010/10/03/42/

von Basstler (Gast)


Lesenswert?

Ich bekomme da immer diesen Fehler:
Warning  5  conflicting types for 'Kalibration' [enabled by default]

und

Warning  3  implicit declaration of function 'Kapazitaet' 
[-Wimplicit-function-declaration]



checke aber nicht wieso oO...

von Basstler (Gast)


Lesenswert?

das macht er für alle Funktionen.... Ich muss also bei der deklaration 
der Funktionen irgendwas falsch machen....

bzw bei der implementierung...


Wie macht man das eigentlich in C-Code?

von Chris (Gast)


Lesenswert?

Das sind Warnungen, das passt schon, sind keine Fehler.
Wenn du ein:
void Kalibration();

nach den Includes stellst, verschwindet die Warnung, nennt sich
vorward declaration, oder du deklarierst die Unterprogramme vor deren
Verwendung.

von Basstler (Gast)


Lesenswert?

ok also beim Aufruf dann einfach noch einmal "void" davor packen?

Ja wie würde das dann aussehen oO Bzw wie kann ich eine Funktion 
deklarieren ohne sie vorher zu definieren...^^??


danke schonmal Chris =)

LG und gn8 ;)

von Basstler (Gast)


Lesenswert?

jetzt hab ich das nächste problem...

Code passt einigermaßen aber jetzt kann ich nicht flashen :D :D


muss ich die beidne iwi speziell verschalten?

dreh noch durch -.- zuerst nich mit arduino jetzt mit avr isp nich... =( 
=(...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.