Datalogger Ultibo/ATmega328p

The place to share and discuss your Ultibo projects.
pik33
Posts: 879
Joined: Fri Sep 30, 2016 6:30 pm
Location: Poland
Contact:

Re: Datalogger Ultibo/ATmega328p

Postby pik33 » Fri May 03, 2019 7:31 am

does the GPU updates them from memory whatever there was a change on the layer or not?


Yes, it does. It reads all layers memory in the real time, so 6 fullHD (1920x1200) layers on overclocked (1400/560/560) RPi3 makes it unusable (my experimental result) due to memory bandwidth used by GPU

I'll give it a go just for fun and see where the processor temperature goes...


The CPU temperature will go to the outer space when you load the CPU with anything heavy. Then when the temperature exceeds 80C the firmware will slow the CPU down to 600 MHz at 85 C. I use 3cm fan powered from 3.3V so it rotates slow and doesn't generate any audible noise, yet it is sufficient to keep the CPU temperature under 70C in fully loaded, overclocked RPi3

I have no idea about moving the variables and constants to the code area


This is example only :) with no use at all :)

Code: Select all

procedure test;
label var1,p999;

begin

      asm
      ldr r0,var1
      add r0,#1
      str r0,var1
      b p999

var1: .long 0

p999:

    end;
end;


This will not work until you change the memory attributes for your procedure

Code: Select all


//(...)
var Entry:TPageTableEntry;
//(...)
Entry:=PageTableGetEntry(@test);
Entry.Flags:=$3b2;            //executable, shareable, rw, cacheable, writeback
PageTableSetEntry(Entry);   



I use it where time matters. The penalty is this b p999 jump but if your procedure is full of loops and heavy computations (eg: noise shaper and 10-point equalizer in SimpleAudio unit https://github.com/pik33/ultibo_retro_g ... eaudio.pas ) this can speed the things up.
Brutus
Posts: 32
Joined: Sun Jan 20, 2019 1:24 pm

Re: Datalogger Ultibo/ATmega328p

Postby Brutus » Fri May 03, 2019 12:15 pm

pik33 wrote:
does the GPU updates them from memory whatever there was a change on the layer or not?


Yes, it does. It reads all layers memory in the real time, so 6 fullHD (1920x1200) layers on overclocked (1400/560/560) RPi3 makes it unusable (my experimental result) due to memory bandwidth used by GPU


Thanks, I will try to reduce the amount of Layers I use (4 is very confortable on the programming standpoint and 2 would need quite a bit of extra work so I will trade over to 3 to still keep headroom for the graphics development to come).

pik33 wrote:
I'll give it a go just for fun and see where the processor temperature goes...


The CPU temperature will go to the outer space when you load the CPU with anything heavy. Then when the temperature exceeds 80C the firmware will slow the CPU down to 600 MHz at 85 C. I use 3cm fan powered from 3.3V so it rotates slow and doesn't generate any audible noise, yet it is sufficient to keep the CPU temperature under 70C in fully loaded, overclocked RPi3


OK, I tried the SRAM at 600Mhz and it did significantly increase the safety margin (my application does not require that extra at least yet, so I went back to 450Mhz).
I will come back with numbers (performances and temperatures) later.

I want to keep passive cooling at all cost (reliability against vibrations), so I would only consider a rad without a fan but the RPi3B+ and 3A+ stay at a nice 70°C temperature even in an enclosure so no problem.

I tried with a RPi3 (without the "+" and still passive cooling without rad) and it cooked to 85°C in a matter of seconds just as you said.

pik33 wrote:
I have no idea about moving the variables and constants to the code area


This is example only :) with no use at all :)

Code: Select all

procedure test;
label var1,p999;

begin

      asm
      ldr r0,var1
      add r0,#1
      str r0,var1
      b p999

var1: .long 0

p999:

    end;
end;


This will not work until you change the memory attributes for your procedure

Code: Select all


//(...)
var Entry:TPageTableEntry;
//(...)
Entry:=PageTableGetEntry(@test);
Entry.Flags:=$3b2;            //executable, shareable, rw, cacheable, writeback
PageTableSetEntry(Entry);   



I use it where time matters. The penalty is this b p999 jump but if your procedure is full of loops and heavy computations (eg: noise shaper and 10-point equalizer in SimpleAudio unit https://github.com/pik33/ultibo_retro_g ... eaudio.pas ) this can speed the things up.


Man you're awesome! Thank you so much! :D

Another sponsorship donation on the way.
pik33
Posts: 879
Joined: Fri Sep 30, 2016 6:30 pm
Location: Poland
Contact:

Re: Datalogger Ultibo/ATmega328p

Postby pik33 » Fri May 03, 2019 1:39 pm

A simple correction: PageTableGetEntry needs an integer, not a pointer, so addr:=cardinal(@test); entry:=PageTableGetEntry(addr);

I want to keep passive cooling at all cost


A thing like this will do :)
https://www.raspberrypi.org/forums/view ... p?t=158301
Brutus
Posts: 32
Joined: Sun Jan 20, 2019 1:24 pm

Re: Datalogger Ultibo/ATmega328p

Postby Brutus » Fri May 03, 2019 2:15 pm

pik33 wrote:A simple correction: PageTableGetEntry needs an integer, not a pointer, so addr:=cardinal(@test); entry:=PageTableGetEntry(addr);


Thanks again, I will try this when time permits.

pik33 wrote:
I want to keep passive cooling at all cost


A thing like this will do :)
https://www.raspberrypi.org/forums/view ... p?t=158301


Very nice and same price range as the other high quality aluminium cases I've seen.

I use that one but double height (apparently they don't do it anymore) so I can have the ATMega inside as well so I can carry my testbed anywhere with me:
Image

Anyway, I'll need more space in the prototype "production" system and the RPi3A+ is better for my application, so this will a bigger generic metallic enclosure with 3D printed supports inside for the RPi and peripheral components (and later a full motherboard).

Return to “Projects”

Who is online

Users browsing this forum: No registered users and 1 guest