Kategori: c++
Programmering som har med c++ att göra
-
PID controller från början
Tänke implementera en PID controller för att hitta rätt laddström i SimpleCharger. Om matande nätdel svajar lite spännings mässigt (oreglerad transformator) så får jag en oscillerande output. En PID controller löser säkert detta.
kolla på:
https://www.teachmemicro.com/arduino-pid-control-tutorial/ -
printf for embedden
printf in gcc is verry memory consuming. There is one project that may be of interest for bridging the goof features of printf but with less memory footprint. take a look at:
-
Eclipse GDB
Nu när jag fått detta att fungera, inkusive disassemble, få kollar jag på en register explorer:
http://embsysregview.sourceforge.net/
och
https://github.com/molejar/embsysregview/blob/master/org.eclipse.cdt.embsysregview.data/data/8bit/Atmel/atmega16.xml
Mer info om hur man får Eclipse-GDB-Dragon att fungera med DebugWire kommer senare.Detta är inte testat ännu men det kommer.
-
Atmega CAN bootloader
Tänkte göra en CAN bootloader till en Atmega328P.
Några saker som behöver fixas.
CompileTime date in build. (__DATE__ and __TIME__)
Serial Debug.
Simple CAN (ASM?) for MCP2515
QT app for programming.
CAN-WiFi gateway, Web-programming. -
AVR Bootloader
Lite info om bootloader för AVR (Atmega 328p)
För att kompilera en bootloader behöver man ändra lite i Linkern för att det skall generera hex-filer med rätt adress. Default börjar programmet på adress 0x0, men bootloader ligger i slutet av minnet.
Atmel skriver minnes adresser i word inte byte, vilket kan göra detta lite krångligt.Linkern behöver följande parameter:
-Wl,-section-start=.text=0x7c00
Där adressen är skriven i byte (tror jag)
För att översätta detta har jag gjort en liten lathund:
GCC använder Byte, medans Atmen använder Word.Size W Address W Address dec W Adress B 512 FE00 65024 7F00 1024 FC00 64512 7E00 2048 F800 63488 7C00 4096 F000 61440 7800
-Wl,-section-start=.text=0x7E00 är ok för 256 bootloaderDebug av bootloader ser inte ut att fungera ?? kollar vidare.
Använd -g3 och (stabs + gdb extention), -O0 (no optimization).
-
AVR-GDBServer
En lite rolig AVR-GDB-server internt i en AVR med serieport.
-
Atmega AVR FreeRTOS
Standard Atmega AVR port av FreeRTOS (inte Arduino).
Kolla på denna länk.
Med drivrutiner för div. hårdvara. -
Compilera AVR-GCC tools i linux
En kort beskrivning med länkar till hur man kompilerar
GCC
binutils
libc-avr (ja, den finns i 2.0 under download)
gdb
avrdude
för AVR micro controllers. Grunden kommer från denna länk.Ladda först ned GCC, ex. 7.2.
Ladda ned binutils. ex. 2.28.1
Ladda ned avr-libc. ex. 2.0.0
Kopiera dessa filer till en katalog och packa upp dem.
Set path och env ….