WinAVR i symulacja w AVR Studio

witam,

chce przekopiowac zadeklarowany w programie 'string' char *ramka = "GPRMC,002310,A,5141.535,N,01735.096,E,001.0,090.0,091299,002.7,E*7C"; do innej zmienne unsigned char tmptext[100];

i wszystko kopiuje ladnie ale w pewnym momencie zamist odpowiednich znakow pojawiaja sie znaki o kodzie 10 ( symulacja w AVR Studio 4.11 ) zupelnie nie wiem co moze byc zle (choc przyznaje ze programowac w C pod AVR dopiero zaczynam) prosze wiec o pomoc, ponizej caly programik

pozdrawiam,

Tomek

------------------------------------------------------------------ #include <inttypes.h>

#include <string.h>

#include <avr/io.h>

#define F_CPU 1000000UL // 1 MHz

unsigned char tmptext[100]; unsigned char gpsline[100]; unsigned char posInRMC = 0; char *ramka = "GPRMC,002310,A,5141.535,N,01735.096,E,001.0,090.0,091299,002.7,E*7C";

void readfromGPS(char onechar) { tmptext[posInRMC] = onechar; posInRMC++; }

void test1() { unsigned char text_len = 80; for(unsigned char ia = 0; ia < text_len; ia++) { readfromGPS(ramka[ia]); } }

int main (void) { test1(); return (0); }

----------------------------- u mnie blad jest na bajtach 1A, 2C, 3B

Reply to
tomm
Loading thread data ...

Ten 'string' jest niezmienialny? To może go do pamięci programu przenieść? (Hint: PROGMEM, jeśli to avr-gcc)

Duże te tablice. Nie przekraczasz aby dostępnej pamięci RAM?

Pozdrawiam

Reply to
Marcin Stanisz

tomm napisał(a):

Jak masz ATmeg'e to nie musisz się męczyć z symulatorem, tylko podłącz ja przez JTAG'a i będziesz miał to samo, tylko w żywym układzie.

Reply to
Miłosz Kłosowicz

A zajrzyj na poziom assemblera.

J.

Reply to
J.F.

no fakt, nie pomyslalem, w pon wiec zobacze

Tomek

Reply to
tomm

To ma coś koło 68 znaków ;)

A tu każesz mu odczytać 80. Hmm. Ale czemu w środku się wali?

Pozdrawiam

Reply to
Marcin Stanisz

cos tu mi nadal nie gra, co prawda w asemblera nie zagladalem zbytnio, ale zrobilem prosta rzecz i w AVR studio podgladlem co jest w pamieciach

w tym celu w kodzie programu zrobilem tak:

#define FLASHDATA __attribute__ ((section (".flashdata"))) "GPRMC,002310,A,5141.535,N,01735.096,E,001.0,090.0,091299,002.7,E*7C"; static unsigned char *ramka2 = "GPRMC,002310,A,5141.535,N,01735.096,E,001.0,090.0,091299,002.7,E*7C";

i co sie okazuje, w pamieci programu wszystko jest OK, natomiast w pamiec Extended sa wlasnie niektore bajty pomylone

moglby moze ktos ten kod co dalem w pierwszym poscie wyprobowac u siebie ??

pozdrawiam,

Tomek

Reply to
tomm

JUZ SIE wyjasnilo wszystko,

jak to zwykle bywa glupi blad byl, kompilowalem pod 8535 a do debug'u w AVR Studio wybralem 128

w koncu kod juz tak skrocilem, ze blad byl zbyt ewidentny i zaczelame szukac przyczyn gdzies indziej no i znalazlem

pozdrawiam,

Tomek

Reply to
tomm

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.