Forum: Mikrocontroller und Digitale Elektronik Mysterium


von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Bei dieser Frage bin ich für jede Vermutung und Mutmaßung dankbar da es
eigentlich nicht erklärbar ist. (jedenfalls nicht für mich) Folgendes:
Wenn ich folgende Zeilen:

P_ENABLE = LOW;
P_CHIP1 = HIGH;
P_CHIP2 = HIGH;
P_DI   = HIGH;
P_RW  = LOW;
P_ENABLE = HIGH;
DATA =0x55;
P_ENABLE = LOW;


in meiner main-schleife ausführe funktioniert sie und ich erhalte
linien auf meinem Graphiksisplay. Packe ich das ganze jedoch in eine
Funktion und rufe diese auf kann ich dem Display zusehen wie es erst
einen Punkt zeichnet, dan eine Lücke, ein Punkt usw.
Ich verstehe das nicht. Timing? Villeicht hat jemand eine Idee.
Der gesammten Code ist im Anhang.
Danke!

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

sorry, hatte den code zwar noch ein wenig kommentiert aber nicht
gespeichert. Also nochmal.

von Tom (Gast)


Lesenswert?

OK, ich habe weitergeforscht und für mich wird es immer seltsamer. Habe
den code bis auf das nötigste gekürzt und mit dem oszi gemessen.
Bei diesem Programm:

#include <mega128.h>

void main(void)
{
PORTB=0xFF;
DDRB=0xFF;

while (1)
      {
      PORTB.0 =1;
      PORTB.0 =0;
      };
}
Messe Ich ein High Signal von 2µs und Low von 4µs periodisch . Das
Scheint in Ordnung zu sein. Nun aber kommt das seltsame. Bei diesem
Programm:

#include <mega128.h>

void port(void)
{
      PORTB.0 =1;
      PORTB.0 =0;
}

void main(void)
{
PORTB=0xFF;
DDRB=0xFF;

while (1)
      {
      port();
      };
}

messe ich ein periodisches signal mit einer Pulszeit von 7µs und einer
Pulspause von 25ms!!! fünfundzwanzig milisekunden! Kann sich das jemand
erklären? Ich nicht. Ich zweifle an meinem Verstand. Bitte um Hilfe!

von crazy horse (Gast)


Lesenswert?

kommt mir so vor, als hättest du da eine schlechte Schwarzkopie am
Laufen?? Könnte das sein?

von Tom (Gast)


Lesenswert?

Eine Schwarzkopie von CodeVision? Ne das ist ne Professional Lizenz
meiner Techniker Schule. Und bissher hat mich der Compiler auch nicht
im Stich gelassen. Bei dem ATMega16 habe ich keine Probleme.
Gab es so ein Problem den schonmal?

von crazy horse (Gast)


Lesenswert?

genau deine Symptome passieren, wenn du 2 Instanzen von CV startest,
dann von einem laufendem die Lizenz exportiertst. Scheinbar hat man
dann 2 Lizenzen, aber nur scheinbar...

von Tom (Gast)


Lesenswert?

Hm, ich bin vor einigen Tagen von Windows ME auf XP umgestiegen, habe
also auch CV neu instaliert. Die lizenz Datei hatte ich auf der
Festplatte gespeichert und habe sie ganz normal von dort importiert.
Kann man dabei etwas Falsch machen? Wie gesagt, beim ATMega16 und mit
meinem alten Betriebssystem hatte ich nie Probleme.
Was kann ich nun tun? Genügt eine Deinstalation und erneute
Installation um das Problem zu beseiteigen? Und was ist mit den bissher
geschrieben Projekten, sind die nun irgendwie "Gebrandmarkt" ?

von crazy horse (Gast)


Lesenswert?

den Projekten passiert meiner Meinung nach nichts, wie auch?
Hast du denn die Originalinstallation auf dem ME-System noch?

von Matthias (Gast)


Lesenswert?

Hi

wie wärs wenn du dir einfach mal den ASM-Output des Compilers
anschaust? Falls der Compiler sowas nicht anbietet bleibt dir immer
noch der Weg über einen Disassembler (z.B. den des AVR Studio)

Matthias

von Tom (Gast)


Lesenswert?

den Projekten passiert meiner Meinung nach nichts, wie auch?
 -Bei den Eagle Dateien ist es so das man mit gecrackten Versionen
erstellte Dateien auch nicht mit legalen Versionen öffnen kann.
Hast du denn die Originalinstallation auf dem ME-System noch?
 -Nein, Festplatte formatiert, ich habe nur noch die Lizenz datei.
Habe jetzt berreits 2 mal ne Neuinstallation Versucht. Hat nix
gebracht.

von crazy horse (Gast)


Lesenswert?

na ja - ein eagle-file mit einem C-file zu vergleichen ist wie Äpfel und
Birnen...
C-Sourcen sind reine Textdateien, da passiert nichts.
Schreib Pavel Haiduc ne mail, schildere, was genau du gemacht hast,
auch wer Lizenznehmer ist, wird sich schon ne Lösung finden.

von Tom (Gast)


Lesenswert?

Mit dem C-File haste recht aber ich dachte auch an das
Projecktfile .prj und in der sind schon Programmspezifische
informationen drin. Aber ok, es würde wirklich keinen sinn machen den
das könnte mann leicht umgehen. Das mit der mail werde ich mal machen.

@Matthias, danke für den Tip. ich habe mir die assembler files
angekuckt, jedoch nichts auffälliges gefunden.
Hier das asm ohne Funktionsaufruf:

  .ORG 0x500
;       1
;       2
;       3
;       4
;       5 #include <mega128.h>
;       6
;       7
;       8
;       9 void main(void)
;      10 {

  .CSEG
_main:
;      11
;      12 PORTB=0xFF;
  LDI  R30,LOW(255)
  OUT  0x18,R30
;      13 DDRB=0xFF;
  OUT  0x17,R30
;      14
;      15 while (1)
_0x2:
;      16       {
;      17       PORTB.0 =1;
  SBI  0x18,0
;      18       PORTB.0 =0;
  CBI  0x18,0
;      19       };
  RJMP _0x2
;      20 }
_0x5:
  RJMP _0x5

und hier mit Funktionsaufruf:

  .ORG 0x500
;       1
;       2
;       3
;       4
;       5 #include <mega128.h>
;       6
;       7 void port(void)
;       8 {

  .CSEG
_port:
;       9   PORTB.0 =1;
  SBI  0x18,0
;      10         PORTB.0 =0;
  CBI  0x18,0
;      11 }
  RET
;      12
;      13 void main(void)
;      14 {
_main:
;      15
;      16 PORTB=0xFF;
  LDI  R30,LOW(255)
  OUT  0x18,R30
;      17 DDRB=0xFF;
  OUT  0x17,R30
;      18
;      19 while (1)
_0x3:
;      20       {
;      21       port();
  RCALL _port
;      22       };
  RJMP _0x3
;      23 }
_0x6:
  RJMP _0x6

Also wenn der Compiler tatsächlich was gemeines macht dan ist es hier
nicht ersichtlich, oder habe ich etwas übersehen?

von Matthias (Gast)


Lesenswert?

Hi

und wo ist der Rest(INT-Vektoren, Init, usw.)? Da dein ASM-Output ein
ORG 0x500 enthält muß das Programm ja irgendwie da hin kommen. Häng
doch mal die zwei HEX-Dateien an die der Compiler erzeugt.

Matthias

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

@Matthias: Hab ich weggelassen- sorry. Hab nun das ganze file angehängt.
Diese File ist mit Funktionsaufruf. Das ohne hänge ich im nächsten Post
noch an.

@crazy horse: Ich habe mir heute morgen die mühe gemacht auf einer
neuen Partition nochmals windows XP zu installieren und habe dort das
ganze mit der neusten Evaluation version von CV gestetet. Genau das
gleiche Problem. Ich halte es daher für unwarscheinlich das es an einer
ungültigen Lizenz liegt!?

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Hier das funktionierende Programm ohne Funktion.

von Matthias (Gast)


Lesenswert?

Hi

ich wollte das eingentlich durch den Simulator schicken. Da fehlen aber
noch irgendwelche Include-Files um das Ganze durch den Assembler zu
bringen. Schick doch einfach die HEX-Dateien.

Matthias

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Das mit dem simulieren ist ne gute idee, habe ich auch grade selbst noch
gemacht. Im Simulator arbeitet das Programm prima. Langsam verzweifle
ich echt. Eigentlich ist in der Theorie alles in Ordung und es sollte
Fuktionieren aber was ich auf dem Oszi messe ist nunmal auch Tatsache.

Was auch noch interesannt ist, das Problem habe ich erst seit ich den
ATMega128 verwende. Ich habe eben nochmal das Programm mit dem ATMega16
getestet und nichts auffälliges gefunden. Ein hardware defeckt ist aber
auch unwarscheinlich. Habe es mit 2 unterschiedlichem Mega128 getestet.
Wers nicht glauben kann, den kann ich gut verstehen. Auf wunsch geb ich
meine Adresse raus, dann könnt ihr euch das selbst ankucken :)

von Matthias (Gast)


Lesenswert?

Hi

ja dann. M103C-Fuse im Mega128 gesetzt. Dann krachts beim Rücksprung
aus der Funktion. Hätte ich auch gleich drauf kommen können.

Matthias

von Tom (Gast)


Lesenswert?

BRRRRR, nein oder? So eine verdammte Fuse kostet mich 2 tage hartes
grübeln und zweifeln??? Danke Matthias, nun gehts tatsächlich!
Ist die fuse standartmäsig gesetzt und was bewirkt sie genau?

Nochmal vielen Dank, du hast meine Woche gerettet! :D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.