Camping Interface - fpc, arduino, LIN- Bus

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von af0815 »

Timm Thaler hat geschrieben:
af0815 hat geschrieben:Sondern der Arduino hat nur einen UART

Die max. 19200 Baud für LIN schafft ein ATmega mit 16MHz locker auch mit Software-Uart. Und davon kannst Du dann 2-3-4 Stück haben.

1. Arduino als Hardware-Plattform? Dann wäre das ein ATmega328 beim Arduino Uno. Mehr hat das mit Arduino nicht zu tun, vergiss den Rest den Du zu Arduino gelesen hast.
2. Arduino auch als Software-Plattform? Das wäre dann die Arduino-IDE, die Arduino-Libs und Programieren in Arduino-C. Hat dann aber mit Pascal nichts mehr zu tun.

Wenn Du nur 1. willst, dann brauchst Du Dir um "Timing", "Interrupt-Handling" wie es die Arduino-Software macht überhaupt keine Gedanken machen, denn: Die verwendest Du ja nicht. Wenn Du in Pascal programmierst, baust Du Dir Deine eigenen Timer, Interrupts, Port-Zugriffe, kannst Assembler einbinden. Dann programmiest Du nahe an der Hardware des ATmega328 und kannst das beliebig schnell machen.

Die Arduino-IDE brauchst Du nur noch, um das Programm physisch auf den ATmega328 zu schieben, oder Du nimmst AVRdude oder den AVR Burn-O-Mat.

Für den Einstieg die Arduino Uno Plattform, da ich mal so wenig wie möglich an der HW für den Einstieg basteln will. Für das schieben des Programes auf den ATmega328p brauch ich keine Arduino IDE, das geht mit dem AVRDude alleine schon mal sehr gut. Blinky in Pascal mit Interrupt geht schon mal recht gut.

Ich schaue mich gerade dannach um, wie man einen AVR überhaupt programmieren kann (in HW). Beim Arduiono Uno ist die Programmierschnittstelle schon dabei. Falls ich mal einen AVR ohne Platine verwende sollte ich auch kapieren wie das geht. Da arbeite ich mich gerade ein wenig ein.

Die Arduino IDE dient mir als Quelle, damit ich die das agnze System kapiere und wie man was lösen kann, dann mit Pascal. Ich habe schon länger nichts mit Prozessoren direkt gemacht, das letzte mal mit der Z80. Da kommt ich den Hexkode dafür direkt schon (großteils direkt) lesen :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Timm Thaler
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: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von Timm Thaler »

af0815 hat geschrieben:Falls ich mal einen AVR ohne Platine verwende sollte ich auch kapieren wie das geht.


MISO, MOSI, SCK, Reset, VCC und GND. Darüber kannst Du dann programmieren, mit allem was digitale Signale rausgeben kann: Anderer Arduino, Raspberry Pi (aufpassen 3.3V), Parallelport oder serieller Port (original PC) mit Ponyprog, MKII-AVR-ISP von Atmel oder einer der 100 anderen Programmadapter.

Belegt werden dabei am ATmega nur MISO, MOSI und SCK. Reset muss sowieso meist freigehalten werden. Und den SPI kann man auch noch anderweitig verwenden (nRF24-Modul, Display oder anderes, was SPI kann).

jayway
Beiträge: 15
Registriert: Di 13. Feb 2018, 10:38
OS, Lazarus, FPC: Windows/Linux (L 2.0.8 FPC 3.0.4)
CPU-Target: 64Bit/8Bit
Wohnort: Dresden

Re: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von jayway »

af0815 hat geschrieben:Ich schaue mich gerade dannach um, wie man einen AVR überhaupt programmieren kann (in HW). Beim Arduiono Uno ist die Programmierschnittstelle schon dabei. Falls ich mal einen AVR ohne Platine verwende sollte ich auch kapieren wie das geht. Da arbeite ich mich gerade ein wenig ein.


Mit dem Uno bist du aber hardwaretechnisch schon mal auf der sicheren Seite, wenn es geometrisch kleiner sein soll, kannst du einen Arduino Nano verwenden. Da ist ebenfalls ein 328p drauf und mit ca. 2 x 4,5 cm ist der Nano auch schön handlich. Ich kenne einige Bastler, die den Nano als µC-Ersatz gleich in die Schaltung einbauen.

Wenn du wirklich mit dem nackten Controller arbeiten willst, ist das schon etwas aufwendiger, weil du natürlich die Dinge wie Spannungsversorgung, Taktung und Programmierschnittstelle selber bauen musst. (Im besten aller Fälle reicht es für die Blinky-LED zwar auch mal nur Programmer, LED und µc zu verheiraten (siehe Bild), aber das ist eben nur um mal Auszuprobieren, ob man mit Lazarus einem µC Leben einhauchen kann.
Sobald da Schaltung ran muss oder ein schneller und genauer Takt notwendig wird, funktioniert das nicht mehr (sicher)).

Außerdem kostet das ganze Drumherum mit Programmer, Bauteilen, Werkzeugen etc. auch etwas. Wenn man da als Hobby einsteigen will, ist es ok, für ab und an mal ein Projekt, wäre es sicher Overkill.

328p_Minimal.jpg

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von af0815 »

Timm Thaler hat geschrieben:MISO, MOSI, SCK, Reset, VCC und GND.
Danke, das waren mal die Stichworte mit denen ich was anfange.

Hat wer einen Schaltungsvorschlag (oder günstige Quelle) für 24V -> 5V (bis zu 3A) Netzgerät ? Weil einige NG von mir aus dem Industriebereich kommen :-) Ja ich werde nicht davor zurückschrecken mir auch Prints machen zu lassen, aber alles zu seiner Zeit.

Auch beim Display bin ich schlauer :-) geworden. Ich glaube ich werde eines mit SPI verwenden, damit mir die anderen Pins nicht belegt werden. Mein jetziges Elgoo ist zwar putzig, brauch allerdings fast alle Pins :-( Ja ja die Lernkurve :oops:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

jayway
Beiträge: 15
Registriert: Di 13. Feb 2018, 10:38
OS, Lazarus, FPC: Windows/Linux (L 2.0.8 FPC 3.0.4)
CPU-Target: 64Bit/8Bit
Wohnort: Dresden

Re: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von jayway »


Timm Thaler
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: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von Timm Thaler »

af0815 hat geschrieben:Hat wer einen Schaltungsvorschlag (oder günstige Quelle) für 24V -> 5V (bis zu 3A) Netzgerät ?


Du meinst Spannungsregler? Wenn es nicht auf geringsten Stromverbrauch ankommt, nehme ich immer noch den guten alten LM2596, gibts auch als fertiges Board bei Amazon oder Ebay, bringt völlig ausreichende 2A, geht auch für Raspi. Alternativ irgendwo ausgebaute Traco-DC-DC-Wandler, mit dem Vorteil der galvanischen Trennung zwischen 24V und 5V/3.3V.

Für Akkubetrieb bin ich nach einigen Fehlschlägen mit schwer verfügbaren IC auf den MAX5033 gestoßen, der hat einen geringen Ruhestrom und kann bis 75V Eingangsspannung ab. Und vor allem, er hat Unterspannungsabschaltung, das heisst er entlädt die Batterie nicht weiter, wenn man ihn vergisst. Kann nur 500mA, aber das reicht für Mikrocontrollerschaltungen mit ein paar Sensoren locker aus.

Das Problem bei diesen Anforderungen - hohe Eingangsspannung, geringer Ruhestrom, Step-Down - ist, dass die ICs entweder schwer verfügbar, gar nicht verfügbar weil irgendwelche Chinateile oder nur in bescheiden zu lötendem Gehäuse verfügbar sind.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von pluto »

Mit dem Uno bist du aber hardwaretechnisch schon mal auf der sicheren Seite, wenn es geometrisch kleiner sein soll, kannst du einen Arduino Nano verwenden. Da ist ebenfalls ein 328p drauf und mit ca. 2 x 4,5 cm ist der Nano auch schön handlich. Ich kenne einige Bastler, die den Nano als µC-Ersatz gleich in die Schaltung einbauen.

Wenn du mit einem MC direkt Arbeiten möchtest egal ob mit einem atTiny oder einem atMega, musst du als zweites den Auto Reset vom Arduino Nano oder Uno abschalten, ich mache das immer mit einem elko(220µF? glaube ich war das).... zwischen gnd und rest. Als ertest musst du das Arduino ISP Beispiel auf dein Uno/Nano kopieren, dann kannst du das als Programmer nutzen...
Das mit dem Auto Reset ist erst seit ein oder zwei Jahren oder so.... als ich Anfing war das kein Problem.
Ich packe immer noch ein Takgeber hinzu und eine Auto-Reset Schaltung beim atMega, damit ich ihn direkt mit einem Uart Programmieren kann.

Es gibt auch AVR'S mit mehreren Uart z.b. den atmega2560 der beim Arduino Mega verbaut ist... der hat auch gleich ein "paar" pins mehr.

Das geht auch mit den Billig Clonen...
MFG
Michael Springwald

Timm Thaler
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: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von Timm Thaler »

pluto hat geschrieben:musst du als zweites den Auto Reset vom Arduino Nano oder Uno abschalten, ich mache das immer mit einem elko(220µF? glaube ich war das).... zwischen gnd und rest.


Aua! Wieder dieser typische Maker-Pfusch. Und dann muss der Programmer einen 220µ Kondensator ungebremst endladen. Aua!

Normalerweise liegt der Reset-Pin mit einem Widerstand 10k an Vcc und mit einem Kondensator 1-10nF an GND. Beim Arduino liegt der Kondensator nicht an GND, sondern am DTR des USB-seriell-Wandlers. Damit kann mit einem Pegelwechsel an DTR ein Reset ausgelöst werden.

Die saubere Vorgehensweise wäre, den C auszulöten, damit der DTR keinen Reset mehr auslösen kann.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von pluto »

Normalerweise liegt der Reset-Pin mit einem Widerstand 10k an Vcc und mit einem Kondensator 1-10nF an GND. Beim Arduino liegt der Kondensator nicht an GND, sondern am DTR des USB-seriell-Wandlers. Damit kann mit einem Pegelwechsel an DTR ein Reset ausgelöst werden.

Die saubere Vorgehensweise wäre, den C auszulöten, damit der DTR keinen Reset mehr auslösen kann.

Zum Programmieren ist der Auto-Reset echt Praktisch, aber eben NICHT immer.
Somit kann ich einfach selbst bestimmen, brauche ich den Auto-Reset vom Uno oder was auch immer oder eben nicht?
Bei meinen eigenen Platinen, wo ich ein atMega328 direkt verbaue, mache ich das über ein Jumper. Das wäre das Sinnvollste. Ich unterbreche die DTR/Reset Leitung einfach...
Ich frage mich, warum das nicht auch bei den Arduino Boards so gemacht wird?
MFG
Michael Springwald

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von af0815 »

jayway hat geschrieben:edit: Ein Simulator würde auch helfen. FP erzeugt ja Assembler-Code, den man vielleicht in einem Simulator zum Laufen bringen könnte. Es gibt da sogar einen, der mit Lazarus entwickelt wird.
http://www.avr-asm-tutorial.net/avr_sim/index_de.html

probier den mal selbst aus. Der kann mit dem ASM von lazarus (GNU-AVR) nicht anfangen. Da gibt es zuviel Unteschiede. Zumindest habe ich da nichts zusammengebracht. Wäre sicherlich ein interessantes Tool. BTW, ich habe es mir aus den Quellen kompilert, also Patchen wäre grundlegend möglich.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Timm Thaler
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: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von Timm Thaler »

Meine Erfahrungen mit Simulator unter Assembler: Am Anfang hab ich den oft genutzt, gerade um Timings rauszubekommen oder zu verstehen wie Setup-Register gesetzt werden. Aber bald gar nicht mehr: Man lernt irgendwann seine ATmegas kennen, viele Hardware-Interaktionen wie Uart, I2C, ADCs kann man nur an der Hardware vernünftig testen und oft ist eine Debug-Ausgabe per LED, Display oder Uart schneller und aussagekräftiger als sich durch eine Simulation zu quälen.

jayway
Beiträge: 15
Registriert: Di 13. Feb 2018, 10:38
OS, Lazarus, FPC: Windows/Linux (L 2.0.8 FPC 3.0.4)
CPU-Target: 64Bit/8Bit
Wohnort: Dresden

Re: Camping Interface - fpc, arduino, LIN- Bus

Beitrag von jayway »

af0815 hat geschrieben:probier den mal selbst aus. Der kann mit dem ASM von lazarus (GNU-AVR) nicht anfangen.

Schade, war aber auch nur eine flüchtige Idee, weil ich zufällig darauf gestoßen bin. Ich verwende immer die LED oder UART-Methode, das hat für meine Projekte bisher immer ausgereicht.

Gruß Jay

Antworten