| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | printf problem (IAR Embedded Workbench) Fra : Lasse Madsen | 
  Dato :  17-05-05 16:35 |  
  |   
            Hej,
 
 Jeg har et problem med PrintF under IAR Embedded Workbench for AVR.
 Jeg har under options=>general=>library configuration=> sat IAR CLIB samt 
 printf og scanf til "Full (or custom)"
 samt konfigureret den til CPU mega128 og sat small memory model.
 
 når jeg prøver følgende:
 void main (void)
 {
 unsigned int lasse=24;
 printf("\r\nBooting once... %u",lasse);
   while(1) asm("nop");
 }
 
 skriver den på seriel porten: Booting once... u
 
 laver jeg %u om til %d fungere det fint ... men det er jo en unsigned int !
 yderligere !
 
 printf("\r\nBooting once %03d",lasse);
 
 resultere i Booting once 03d
 
 Hvordan får jeg den til at virke med den fulde printf !?
 
 M.v.h.
 Lasse Madsen
 
 
  
            
             |   |   
            
        
 
            
         
           Lasse Madsen (17-05-2005) 
         
	
            | Kommentar Fra : Lasse Madsen | 
  Dato :  17-05-05 16:40 |  
  |   
            Hmm jeg fandt en løsning ... yderst mystisk !
 jeg måtte vælge "Configure system using dialogs" og manuelt opsætte data og 
 retur stack mv.
 
 undskyld at jeg opdager det nu men jeg har siddet med fejlen siden i morges 
 men ironisk opdager jeg den lige efter mit indlæg... sorry...
 
 m.v.h
 lasse
 
 "Lasse Madsen" <spam@electrologic.dk> skrev i en meddelelse 
 news:428a0f08$0$67257$157c6196@dreader2.cybercity.dk...
 > Hej,
 >
 > Jeg har et problem med PrintF under IAR Embedded Workbench for AVR.
 > Jeg har under options=>general=>library configuration=> sat IAR CLIB samt 
 > printf og scanf til "Full (or custom)"
 > samt konfigureret den til CPU mega128 og sat small memory model.
 >
 > når jeg prøver følgende:
 > void main (void)
 > {
 > unsigned int lasse=24;
 > printf("\r\nBooting once... %u",lasse);
 >  while(1) asm("nop");
 > }
 >
 > skriver den på seriel porten: Booting once... u
 >
 > laver jeg %u om til %d fungere det fint ... men det er jo en unsigned int 
 > !
 > yderligere !
 >
 > printf("\r\nBooting once %03d",lasse);
 >
 > resultere i Booting once 03d
 >
 > Hvordan får jeg den til at virke med den fulde printf !?
 >
 > M.v.h.
 > Lasse Madsen
 >
 > 
 
 
  
            
             |   |   
            
        
 
            
         
           Troels (19-05-2005) 
         
	
            | Kommentar Fra : Troels | 
  Dato :  19-05-05 09:01 |  
  |   
            <cut>
 >> og manuelt opsætte data og retur stack mv.
 <cut>
 Heh? Overfører du hele structs (ikke pointere) i funktionskald, laver du 
 rekursive funktioner, ?
 
 >> printf("\r\nBooting once... %u",lasse);
 
 Husk at på Atmel'er kopieres sådanne string literals op i ram under startup 
 (sideeffekt af Harvard Arkitekturen), så hvis du har mange tekster (eller 
 for lidt ram!) skulle du overveje:
 
 #include pgmspace.h
 __farflash char txt_BootMessage[] = "\r\nBooting once... %u";
 printf_P( txt_BootMessage , lasse );
 
 tpt
 
 
  
            
             |   |   
            
        
 
            
         
            Troels (20-05-2005) 
         
	
            | Kommentar Fra : Troels | 
  Dato :  20-05-05 18:27 |  
  |   
            > #include pgmspace.h
 > __farflash char txt_BootMessage[] = "\r\nBooting once... %u";
 > printf_P( txt_BootMessage , lasse );
 >
 
 Desuden skal du vide at den gui-setting hvor du kan vælge mellem minimal , 
 medium og fuld printf implementation ikke virker for _P varianterne, dvs du 
 får den store med mindre du bruger
 -e_small_write_P=_formattet_write_P
 i din xcl fil.
 
 Den store bruger 178 bytes stack, hvilket kan gøre lidt ondt ....
 
 tpt 
 
 
  
            
             |   |   
            
        
 
            
         
             Lasse Madsen (22-05-2005) 
         
	
            | Kommentar Fra : Lasse Madsen | 
  Dato :  22-05-05 20:39 |  
  |   
            Mange tak troels !
 
 Din hjælp var uvurderlig !
 
 Jeg fik løst problemet !
 
 Med venlig hilsen
 Lasse Madsen 
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |