AusgangsBit setzen ?

TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

AusgangsBit setzen ?

 · 
Gepostet: 18.11.2014 - 07:52 Uhr  ·  #1
Guten morgen,
ich Programmiere mir gerade ein kleines Tool um meinen AtMega selbst zu Programmieren.

$AC $53 $00 $00 Clocke ich so in den Atmel

Code

procedure Set_MOSI;
begin
  Incl(At_MOSI);
end Set_MOSI;

procedure Clr_MOSI;
begin
  Excl(At_MOSI);
end Clr_MOSI;

procedure Senden;
Var stelle : byte;
begin
//byte 1 senden
  stelle := 128;
  for i:= 1 TO 8 DO
    if (KumByt AND stelle) > 0 then Set_MOSI;  else Clr_MOSI;   ENDIF;
    Set_SCK;
    stelle := stelle div 2;
    Clr_SCK;
  ENDFOR;


usw. //byte 2 senden //byte 3 senden //byte 4 senden


Dies dauert mir aber alles zu lange, habt ihr eine andere Idee wie man es besser machen könnte ?
Ich überlege gerade ob man mit shl etwas machen könnte ? würde das überhaupt gehen ?

At_MOSI:= KumByt shl 1;


mfg
Merlin
Administrator
Avatar
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Re: AusgangsBit setzen ?

 · 
Gepostet: 18.11.2014 - 10:28 Uhr  ·  #2
Hi.

Code

procedure Senden; 
Var i : byte; 
begin 
  for i:= 7 DownTO 0 DO 
    SetBit( AT_MOSI, Bit(KumByt, i )):
    Set_SCK; 
    // may need to add some NOP lines to slow down here! 
    Clr_SCK; 
  ENDFOR;
end; 


Also, remember to use the Optimiser and make i local - loops like this run MUCH faster if optimised.
Merlin
Administrator
Avatar
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Re: AusgangsBit setzen ?

 · 
Gepostet: 18.11.2014 - 10:53 Uhr  ·  #3
This might be slightly better
Code
procedure Senden;  
Var i : byte;  
begin  
  for i:= 7 DownTO 0 DO  
    Clr_SCK;  
    SetBit( AT_MOSI, Bit(KumByt, i )): 
    Set_SCK;  
  ENDFOR; 
  Clr_SCK;  
end;  


But only if you find you do need the NOP lines.
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: AusgangsBit setzen ?

 · 
Gepostet: 18.11.2014 - 11:45 Uhr  ·  #4
Danke Merlin, ich verstehe zwar kein Englich aber dein Code verstehe ich.


:3some:
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: AusgangsBit setzen ?

 · 
Gepostet: 18.11.2014 - 14:35 Uhr  ·  #5
Hi,

soll das etwa eine SPI Emulation sein?
Wenn ja, warum nicht den Soft-SPI Treiber benutzen?

rolf
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: AusgangsBit setzen ?

 · 
Gepostet: 18.11.2014 - 19:39 Uhr  ·  #6
Hallo Rolf,
ich habe auf meinen Projekt (Platine) mehrere AtMegas sitzen.
ich möchte nicht jedesmal das Gehäuse öffnen um die Atmels abzudaten sondern
setze mir eine USB mit einen kleinen Atmega der dann die anderen updatet.
Du wirst jetzt sagen, gibts doch schon für 20Euro bei ebay und co.

Ich sehe das als Gehirnjogging an. mir macht es spass sowas zu Programmieren.


Deine Frage?
>Wenn ja, warum nicht den Soft-SPI Treiber benutzen? <

Gleich mal im Handbuch nachschauen. =D>
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   109   123 · Page-Gen-Time: 0.030221s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI