Als 16 Jähriger Blag habe ich auf einem C64 einen Auerswald DLC 4830 inklusive allen Bitmustern aus dem ROM des DLC so gut es ging in Assembler nachgebaut. Die Ansteuerung lief damals über den Userport der über Transistoren Solid State Relais ansteuerte. Heute bin ich 42 und dachte es ist Zeit sich endlich mal mit µC zu befassen. Naiv wie ich bin dachte ich besogst du dir ein Arduino Mikro Board. Nach der Instalation und dem ersten Wechselblinken von LEDs vermisse ich aber doch das direkte programmieren der Hardware. Nehmen wir an ich habe IO Ports 0-7 als Ausgang definiert und möchte nun meine Bitmuster aus dem RAM/ROM oder Flashspeicher auslesen und direkt in die IO Register der Ports schreiben. Am C64 habe ich das so relativ simpel lösen können.. LDA $#4000 ; Lädt Akkumulator mit Wert aus RAM Adresse 4000 Hex STA $#DD00 ; Schreibt Akkumulator in D0-D7 des Userports.... Wie bekomme ich nun dieses C Derivat dazu einen Wert aus dem RAM/ROM/Flaschspeicher auszulesen und direkt in die Datenregister zu Schreiben. Kann jemand das vielleicht mittels Beispiel erklären.
Gast
#4999179
Hi Wenn Du zuvor schon in Assembler programmiert hast - gibt's hier auch. Was wo im µC zu finden ist, gibt's im Datenblatt. C64 - das waren Zeiten (größten Respekt den Leuten, Die Den programmieren konnten!!) ... bei mir reichte es nur zum voll-poken des Bildschirm-Speicher - und wenn man die Grenzen überschritt, bootete die Kiste einfach neu oder fror ein. Auf dem PC dann unter DOS mit 'debug' ... aber mit ähnlichem 'Erfolg' :) MfG
Was spricht gegen klassische AVR Programmierung in C:
1 | |
2 | |
3 | |
4 | |
Müsste eigentlich auch unter dem C++ des Arduino tun. Ansonsten gibt es dafür reichlich Literatur.
Nichts spricht gegen die Verwendung von C, bis auf die Tatsache das ich dann wohl einen C Kurs machen muß. 6502 Assembler hatte ich damals ganz gut im Griff. Und bei C müste ich von vorne anfangen.... Egal. Der Weg ist das Ziel. Aber ich werde euch bestimmt noch mit einigen Fragen nerven müssen :-) LG Marco
Gast
#4999224
Marco W. schrieb: > Nichts spricht gegen die Verwendung von C, bis auf die Tatsache das ich > dann wohl einen C Kurs machen muß. 6502 Assembler hatte ich damals ganz > gut im Griff. Und bei C müste ich von vorne anfangen.... Dann mach doch ATmega328 Assembler. Was spricht dagegen? http://www.atmel.com/webdoc/avrassembler/
Gast
#4999246
Marco W. schrieb: > 6502 Assembler hatte ich damals ganz > gut im Griff. Und bei C müste ich von vorne anfangen.... 6502 hatte ich auf eigener Hardware als Europakarte, Makroassembler und sogar einen Hardware-Emulator dazu ... lange ist's her. Nach vielen Jahren ohne Prozessor habe ich mir Arduino angetan. Die C-Syntax und Semikolon / Klammern kosten einige Nerven, im Endeffekt komme ich bei kleinen Dingen aber dennoch schneller ans Ziel als früher.
Wolfgang schrieb: > Dann mach doch ATmega328 Assembler. NB: Mit avrdude können die hex files dann über die USB Schnittstelle und den bootloader auf den Arduino geladen werden. Unter win könnte man z.B. eine cmd erstellen avrdude -v -patmega328p -carduino -P\\.\COM6 -b57600 -D -V -Uflash:w:C:\pfad\datei.hex:i
Gast
#4999412
Der Micro hat doch sicher keinen ATMeg328P drauf, sondern einen ATMega32U4 Aber das tut der Sache keinen Abbruch. C, C++ und Assembler ist leicht möglich mit dem Atmel Studio Die Arduino IDE möchte C++, kann aber auch, wenn man es geschickt anstellt, C und Assembler Dateien kompilieren. Direkte Register- und Portzugriffe, keine Problem. Marco W. schrieb: > Am C64 habe ich das so relativ simpel lösen können.. > > LDA $#4000 ; Lädt Akkumulator mit Wert aus RAM Adresse 4000 Hex > STA $#DD00 ; Schreibt Akkumulator in D0-D7 des Userports.... > > Wie bekomme ich nun dieses C Derivat dazu einen Wert aus dem > RAM/ROM/Flaschspeicher auszulesen und direkt in die Datenregister zu > Schreiben. Arduino:
1 | |
2 | |
3 | |
4 | |
5 | |
Gast
#4999434
Du könntest auch eine BluePill ( STM32F103 ) zusammen mit der Arduino-Umgebung nutzen und dann auf die Register Bare Metal zugreifen. Das sieht dann so aus
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
Marco W. schrieb: > Naiv wie ich bin dachte ich besogst du dir ein Arduino Mikro Board. > Nach der Instalation und dem ersten Wechselblinken von LEDs vermisse ich > aber doch das direkte programmieren der Hardware. Also da versteht man die Welt nicht mehr. Du möchtest hardwarenah programmieren, aber bügelst dir erst mal das ganze Arduino Zeug drauf und dann wird rumgeheult? AVRs bieten jede Möglichkeit in Assembler oder in C direkt programmiert zu werden. Ganz wie es beliebt.
Gast
#4999449
Cyblord -. schrieb: > Also da versteht man die Welt nicht mehr. Er muss ja erst mal Orientierung finden. Das wirst du ihm schon zugestehen können dürfen müssen. Nur mal so als Beispiel: Er spricht von einem "C Derivat", das wäre ein spezieller Dialekt von C, er meint aber wohl die IDE oder den Prozessor.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.