Tutorial Arduino programmieren,
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Tutorial Arduino programmieren,
Ich sehe, du hast versucht die Arduino Software nachzubauen.
Ich hatte mal ein etwas komplexeres Project mit Arduino gebaut, dazu hatte ich TimerOne gebraucht.
Irgendwo im Project musste ich ein Serial.Write einfügen, welches in die Luft schrieb. Ohne diese Zeile hatte das Programm nicht funktioniert.
Wieso auch immer.
Ich hatte mal ein etwas komplexeres Project mit Arduino gebaut, dazu hatte ich TimerOne gebraucht.
Irgendwo im Project musste ich ein Serial.Write einfügen, welches in die Luft schrieb. Ohne diese Zeile hatte das Programm nicht funktioniert.
Wieso auch immer.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Tutorial Arduino programmieren,
Andreas, genau sowas hatte ich mir vorgestellt und werde sicher darauf zurückkommen.
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Tutorial Arduino programmieren,
Das Problem dabei ist, das man für verschiedene Projekte genaugenommen die Hardwarezugriffe synchronisieren muss. Da schliessen sich aber ein paar Sachen immer gegenseitig aus, weil ganz einfach nur sehr begrenzt Resourcen da sind.
Eigentlich wollte ich auf Basis dieser Kompenenten schauen, ob mal nicht Module von der Arduino Software direkt dazu assemblieren oder linken kann. Da ich schon länger nichts auf Maschinenebene gemacht habe, ist es ein interessantes Experiment. Ganz unbekannt ist die Materie für mich nicht, da ich schon die Z80 und die dazugehörige Hardware mit Assembler programmiert habe. Und Z80 mit einem Floppycontroller zu verstehen ist auch nicht unbedingt die einfachste Übung Daher ist das wissen dazu schon mal da (Etwas eingerostet).
Ich hätte nur gerne mehr Zeit dafür
Übrigends wäre es wirklich gut, wenn man die deutschen Tutorials ins englische Übersetzen könnte. Es gibt immer wieder AVR-Fragen im englischen Forum. Leider ist die aktuelle Wiki bei der Wartung von Übersetzungen nicht wirklich hilfreich. Zusatzmodule für die Wartung von Übersetzungen wurden abgelehnt. Scheinbar gibt es die alten Einträge in Mantis zur Wiki nicht mehr.
Eigentlich wollte ich auf Basis dieser Kompenenten schauen, ob mal nicht Module von der Arduino Software direkt dazu assemblieren oder linken kann. Da ich schon länger nichts auf Maschinenebene gemacht habe, ist es ein interessantes Experiment. Ganz unbekannt ist die Materie für mich nicht, da ich schon die Z80 und die dazugehörige Hardware mit Assembler programmiert habe. Und Z80 mit einem Floppycontroller zu verstehen ist auch nicht unbedingt die einfachste Übung Daher ist das wissen dazu schon mal da (Etwas eingerostet).
Ich hätte nur gerne mehr Zeit dafür
Übrigends wäre es wirklich gut, wenn man die deutschen Tutorials ins englische Übersetzen könnte. Es gibt immer wieder AVR-Fragen im englischen Forum. Leider ist die aktuelle Wiki bei der Wartung von Übersetzungen nicht wirklich hilfreich. Zusatzmodule für die Wartung von Übersetzungen wurden abgelehnt. Scheinbar gibt es die alten Einträge in Mantis zur Wiki nicht mehr.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Tutorial Arduino programmieren,
af0815 hat geschrieben:Das Problem dabei ist, das man für verschiedene Projekte genaugenommen die Hardwarezugriffe synchronisieren muss. Da schliessen sich aber ein paar Sachen immer gegenseitig aus, weil ganz einfach nur sehr begrenzt Resourcen da sind.
Ist in ASM nicht anders: Wenn ich den Timer für die Hardware-PWM benötige, kann ich ihn mit gleicher Frequenz noch als Taktgeber verwenden - aber halt nicht mit anderer Frequenz. Wenn ich den Hardware-TWI verwenden will - kann ich halt 2 der ADC-Eingänge nicht nutzen.
Das Problem verschärft Arduino nur, indem nicht sichtbar ist welche Ressourcen intern genutzt werden und wie die einander bedingen.
Der Hintergrund des flexiblen DigitalWrite ist ja, dass ich ein Display damit ansprechen kann - und egal an welche Pins ich das Display anklemme immer die gleiche Routine verwenden und nur die Pinzuordnungen ändere. Das hätte man auch low-level auf Konstantenebene machen können - aber nicht in C und mit der Einfachheit der Arduino-Routinen.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Tutorial Arduino programmieren,
So wie es aussieht, macht das gerade Jemand.Übrigends wäre es wirklich gut, wenn man die deutschen Tutorials ins englische Übersetzen könnte.
Es gibt do so ein Tool, welches C++ in Pascal umwandelt, Vielleicht hilft dies.Eigentlich wollte ich auf Basis dieser Kompenenten schauen, ob mal nicht Module von der Arduino Software direkt dazu assemblieren oder linken kann.
Ich habe mit folgendem Code mal probiert, die Pins Arduino kompatibel zu machen.
Das Beispiel ist für einen ATTiny2313, bei dem eine LED blinkt
Code: Alles auswählen
program Project1;
{$H-}
{$O-}
type
TGPIOB = bitpacked record
p9, p10, p11, p12, p13, p14, p15, p16: boolean;
end;
TGPIOD = bitpacked record
p0, p1, p4, p5, p6, p7, p8, d0: boolean;
end;
var
GPIOB: bitpacked record
PIN, DDR, PORT: TGPIOB;
end
absolute PINB;
GPIOD: bitpacked record
PIN, DDR, PORT: TGPIOD;
end
absolute PIND;
procedure delay;
var
i: uint32;
begin
for i := 0 to 100000 do ;
end;
begin
// Setup
GPIOB.DDR.p16 := True;
GPIOB.PORT.p16 := False;
repeat
// Loop;
GPIOB.PORT.p16 := not GPIOB.PORT.p16;
delay;
until False;
end.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Tutorial Arduino programmieren,
Mathias hat geschrieben:Es gibt do so ein Tool, welches C++ in Pascal umwandelt, Vielleicht hilft dies.Eigentlich wollte ich auf Basis dieser Kompenenten schauen, ob mal nicht Module von der Arduino Software direkt dazu assemblieren oder linken kann.
Nicht umwandeln, das war nicht meine Absicht, sondern einbinden bzw. dazulinken, notfalls als Assembler einbinden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Tutorial Arduino programmieren,
Nicht umwandeln, das war nicht meine Absicht, sondern einbinden bzw. dazulinken, notfalls als Assembler einbinden.
Meinst du so ähnlich, wie dazumal unter DOS mit den *.obj Dateien ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Tutorial Arduino programmieren,
In etwa so.
Entweder wie eine dll/so oder wie eine lib oder als eingefügter Quellcode. Irgendwie halt. Beim Arduino gehts ja auch.
Entweder wie eine dll/so oder wie eine lib oder als eingefügter Quellcode. Irgendwie halt. Beim Arduino gehts ja auch.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Tutorial Arduino programmieren,
Funktionen in einer dll oder lib werden vom Programm erst zur Laufzeit geladen. Sie werden somit nicht in die EXE reinkompiliert. obj-Dateien werden reinkompiliert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot