Attiny 13 – Mikrokontroléry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Attiny 13 – Mikrokontroléry – Fórum – Programujte.comAttiny 13 – Mikrokontroléry – Fórum – Programujte.com

 

Rytir91
~ Anonymní uživatel
15 příspěvků
22. 7. 2011   #1
-
0
-

Ahoj, mám malej problém, v e-labu píšu malej program a nedáří se mi ho zkompilovat, vždy píše chybu:
Error: Adr: $4 not inside current ram page: IDATA

Program je následující:
 

program blik;

{$NOSHADOW}

{ $WG}                     {global Warnings off}

Device = Tiny13, VCC=5;

Import SysTick;

From System Import LongInt;

Define

  ProcClock      = 4000000;       {Hertz}

  SysTick        = 10;             {msec}

  StackSize      = $0064, iData;

  FrameSize      = $0064, iData;

Implementation

{$IDATA}

{ Type Declarations }

type


{ Const Declarations }

{ Var Declarations }

{$IDATA}

{ functions }

procedure InitPorts;

begin

  PortB:= %00111111;

end InitPorts;


{ Main Program }

{$IDATA}

begin

  InitPorts;

  EnableInts;

  loop

  PortB := %00000001;

  MDelay(60000);

  PortB := %00000000;

  MDelay(1000);

  endloop;

end blik.

Jedná se o řádek 62. Příkládám odkaz na GME kde v sekci dokumenty je datasheet. WEB
Program je psán v prostředí E-LAB PED32 (AVRco) WEB
Odkaz na mikro Paskal nemám, používám publikaci ATMEL AVR PASCAL (Vladimír Váňa), předpokládám že celý problém je v nastavení velikosti
StackSize      = $0064, iData;
  FrameSize      = $0064, iData;
Přesné hodnoty neznám a nemám tušení kde je vycucat.

Jinak díky za rady.

Nahlásit jako SPAM
IP: 88.100.219.–
AB10
Duch
22. 7. 2011   #2
-
+1
-
Zajímavé

#1 Rytir91
Problém je asi v tom že do ramky tiny13, která má 64 bajtů, se snažíš natlačit 100 bajtů stack a 100 bajtů frame.

Myslím že rozumné hodnoty jsou takové, aby obě tyto věci nezabraly více než cca 30% ram.

Zkus

StackSize      = $000A, iData;

FrameSize      = $000A, iData;

Zbude 44 bajtů pro globální proměnné.

Nevím, jestli to vyřeší celý problém, já v tomto jazyku neprogramuju.

Nahlásit jako SPAM
IP: 217.115.249.–
Rytir91
~ Anonymní uživatel
15 příspěvků
22. 7. 2011   #3
-
0
-

Díky za reakci, problém již vyřešen na WEB

Nahlásit jako SPAM
IP: 91.219.240.–
Rytir91
~ Anonymní uživatel
15 příspěvků
27. 7. 2011   #4
-
0
-

Ahoj, mám nový problém.

program:

program blik;

{$NOSHADOW}
{ $WG}                     {global Warnings off}

Device = Tiny13, VCC=5;

Import SysTick;

From System Import LongInt;


Define
  ProcClock      = 4000000;       {Hertz}
  SysTick        = 10;             {msec}
  StackSize      = $0016, iData;
  FrameSize      = $0016, iData;

Implementation

{$IDATA}

{--------------------------------------------------------------}
{ Type Declarations }

type


{--------------------------------------------------------------}
{ Const Declarations }

{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}


{--------------------------------------------------------------}
{ functions }

procedure InitPorts;
begin
  PortB:= %00111111;
end InitPorts;


{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

begin
  InitPorts;


  EnableInts;
  loop
 
  PortB := %00000010;
  MDelay(60000);
  PortB := %00000000;
  MDelay(1000);
  endloop;
end blik.

Když zkompiluju a chystáp se naprogramovat pomocí UP(2.53) a presta napíše mi to

Piny:

P1-VPP =1

P3-VDD=8

P4-GND=4

P5-DATA/MOSI=5

P6-CLOCK=2

P7-MISO=6

díky za rady.

PS: Datasheet a návod na prostředí výše.

Nahlásit jako SPAM
IP: 88.100.219.–
Rytir91
~ Anonymní uživatel
15 příspěvků
27. 7. 2011   #5
-
0
-

problém vyřešen, nastal ovšem nový.

P6-CLOCK= opraveno na 7

jedná se o poslední bod programování

Nahlásit jako SPAM
IP: 88.100.219.–
Rytir91
~ Anonymní uživatel
15 příspěvků
28. 7. 2011   #6
-
0
-

Řek bych že nemám nastavený interní oscilátor, může se někdo kouknout na program? Přidávám fotku toho bodu kde se to zastaví.

Nahlásit jako SPAM
IP: 88.100.219.–
KIIV
~ Moderátor
+43
God of flame
28. 7. 2011   #7
-
0
-

mas nastaveno  CKDIV8 -> deleni frekvence oscilatoru osmi ->  pro intRC 9.6MHz => cca 1,2MHz

a dal mas nastaveny u presta ze mas frekvenci procesoru vic jak 2.5MHz(coz ted neni)... hod to proste na mene... nebo hod disabled u CKDIV8

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Rytir91
~ Anonymní uživatel
15 příspěvků
28. 7. 2011   #8
-
0
-

vyřešeno dodány odpory na reset 10k a +. 100k mosi a clk na GND. A zmenšení programovací rychlosti na 750k :)

Nahlásit jako SPAM
IP: 88.100.219.–
Rytir91
~ Anonymní uživatel
15 příspěvků
4. 10. 2011   #9
-
0
-

Tak jsem tu zas. Jelikož v paskáču nemůžu nájít vůbec žádný příklady a u těch drobností s kterýma si hraji bývaj problémy, tak bych to chtěl přepsat na C. Ovšem narazil jsem. Nemám knihovnu v AVR studiu na 13. Jak to můžu vyřešit? Najde se někdo kdo by tu popřípadně napsal tenhle program v C? Chtěl bych se odrazt od toho.

Nahlásit jako SPAM
IP: 91.219.240.–
KIIV
~ Moderátor
+43
God of flame
4. 10. 2011   #10
-
0
-

#9 Rytir91
? pokud vim tak avr studio pouziva avrgcc (resp WinAVR) ... a tam knihovny sou: napriklad   iotn13.h

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Rytir91
~ Anonymní uživatel
15 příspěvků
4. 10. 2011   #11
-
0
-

jednoduché, mám pouze AVR studio, instaluji to winAVR tak uvidím

Nahlásit jako SPAM
IP: 91.219.240.–
Rytir91
~ Anonymní uživatel
15 příspěvků
4. 10. 2011   #12
-
0
-

tak vše mám otevřené, snad to nějak sesmolím :)

Nahlásit jako SPAM
IP: 91.219.240.–
Rytir91
~ Anonymní uživatel
15 příspěvků
4. 10. 2011   #13
-
0
-

No asi to tak jednoduché nebude, pokud hledám různé příklady pro blikání LED tak každý ho píše jinak a na jiném procesoru než mám já. Mohl by tedy prosim někdo nahodit program o blikání led na PB1? Jde mi jen o to aby mikroprocesor rožnul LED na určitou dobu a pak na další určitou dobu zhasl. a to vše v nekonečné cyklu.

Nějak jsem se dostal k:

#include <avr/io.h>
#include <avr/delay.h>


int main(void)
{
    while( 1 )
{
      PORTB |=  0xFE( PB1 )
        _delay_ms(2000);
        PORTB |=  0xFE( PB1 )
        _delay_ms(2000);
    }
}

vim že je to špatně ale nevim jak dál. Především neumím používat Kalkulačku pro převod na HEX, v datasheetu jsem nic pořádného nenašel a jelikož je to poprvé co držím něco v C tak jsem mimo.

Nahlásit jako SPAM
IP: 91.219.240.–
KIIV
~ Moderátor
+43
God of flame
4. 10. 2011   #14
-
0
-

   


int main(void)
{
  DDRB = _BV(PB1); // pin PB1 bude vystup (cisluje se od 0)
  PORTB = 0xFF;    // pro vstupy nahodit pullupy, na vystupu logicka 1

  while( 1 ) {
    PORTB ^= _BV(PB1); // invertovat PB1 --> (1 xor x == neg(x))
    _delay_ms(2000); // pro delay to chce mit nastavenou spravnou frekvenci oscilatoru
  }
}
Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Attiny 13 programovanie — založil Martingt89

Attiny 13 Pacsal — založil Rytir91

Programator ATtiny — založil _Radek_

Attiny - Podmínka — založil Interrupt

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý