Forum: Mikrocontroller und Digitale Elektronik AVR - Software retten


von Nico S. (captain-n)


Lesenswert?

Hallo Leute,

kennt jemand von euch eventuell ein Programm, mit dem man die Software 
eines geflashten AVR-Kits auslesen kann?

Habe in einer Woche Prüfung, und habe mein Kit zum arbeiten erst vor ein 
paar Tagen bekommen - zwar fuktionsfähig, aber die separat geschickte 
Software, die ich dokumentieren soll (und eigentlich der auf dem AVR 
entsprechen soll), funktioniert nicht.

Auch nach mehreren Anfragen wurde mir stets die fehlerhafte Software 
zugeschickt.

Nun möchte ich die funktionierende Software irgendwie auslesen, damit 
ich zumindest eine Grundlage habe zum arbeiten.

Bitte um möglichst schnelle Hilfe.

Vielen Dank schonmal im Voraus!!

greez
Captain N

von Peter (Gast)


Lesenswert?

es sollte kein Problein die Software mit WinAVR auzulesen, aber das 
hieft dir nicht weiter weil es ein HEX-File ist, selbst wenn man es noch 
durch den Dissassembler schiebt wirst du es nicht in einer woche 
verstehen ( ja nach umfang und kenntniss)

Schreibe doch lieber welche Probleme ist mit der richtigen Software 
gibt.

von Sebastian (Gast)


Lesenswert?

Mit dem normalen AVRISP, STK200 oder ähnlichen Programmieradaptern kann 
man den Flash auslesen, wenn er nicht durch "Lock-Bits" gesperrt ist. 
Liefert aber nur Binärcode, keinen Quelltext.

von Jaecko (Gast)


Lesenswert?

Wenn die Software im AVR drin ist, kriegst du die nur dann raus, wenn 
keine Fusebits gesetzt sind. Sind die gesetzt, hat man mit "normalen" (= 
für Normalbürger bezahlbaren) Mitteln keine Chance mehr.

Und wenn man was auslesen kann ist es auch nur Maschinencode 
("Assembler"). Also nix mit C oder Bascom.

von Jaecko (Gast)


Lesenswert?

Mist zu langsam g
und es sollte bei mir Lockbits statt Fusebits heissen.

von Nico S. (captain-n)


Angehängte Dateien:

Lesenswert?

Perfekt wäre es auch, wenn vielleicht noch jemand eine detaillierte 
Ausarbeitung folgender Software herumgeistern hat.

Im Anhang findet ihr meine aktuelle Software, und schließlich einen 
Screenshot von der stets wiederkehrenden Fehlermeldung.

Meine Aufgabe ist es in erster Linie, das volle Programm detailliert und 
für völlig unwissende Neulinge der Materie verständlich in einer 
Dokumentation zu erläutern.

Quasi ein Handbuch für Leute, die unterwegs "mal schnell nachblättern" 
möchten, um ggf einen Fehler zu finden, oder sich ggf ein wenig 
weiterzubilden im Umgang mit der Programmiersprache.

Grundlagen habe ich schon verstanden, doch ist mir so einiges noch immer 
verschlossen geblieben...

Vielen Dank an alle hilfsbereiten Elektroniker da draußen :-)


greez

Captain N



Im Anhang findet ihr nun das "funktionieren-müssende" Programm für 
BASCOM und die Fehlermeldung, die ich stets bekomme.

von Peter (Gast)


Lesenswert?

häng mal bitte die Fehlermeldung mit dran

von Nico S. (captain-n)


Angehängte Dateien:

Lesenswert?

Sorry, hab gar nicht damit gerechnet, dass hier so schnell geantwortet 
wird ^^ Habe einfach nen neuen Eintrag gemacht...

Bin leider technisch gesehen der absolute Unterflieger auf dem Gebiet...

Von Fusebits etc ist in dem Programm schon was enthalten. Habe aber 
gesehen, dass sich die BASCOM-Datei wohl nicht anhängen ließ. Darum 
versuche ich es hier einfach mal mit dem guten alten 
copy-&-paste-Verfahren ^^

Als Anhang findet ihr dann endlich die Fehlermeldung, die mir BASCOM 
ausspuckt. Hier nun aber das (fehlerhafte) Programm:

Entschuldigt bitte, falls es Probleme mit der Formatieruung oder meiner 
Ausdrucksweise gibt... Werde versuchen, so exakt wie möglich auf offen 
bleibende Fragen zu antworten. bin wie esagt völliger Neuling auf dem 
Gebiet.




'----------------------------------------------------------------------- 
--------
'Projekt: IR Geber Funktionstester mit dem AVR Starterkit
'
'Hardware:Platine und Zubehör und Display. Jumper gemäß Schaltplan.
'         auf X13 wird ein SFH5110-36 (IR Empf.IC) oder ähnl. gesteckt.
'         Oszi Y1 auf DPort (X20)auf PD4 (6. von links nach rechts)
'         Oszi Y2 an X28 (V7)>PhasendecoderImpuls oder (V6) entprelltes 
Signal.
'Aufgabe :Sämtliche Fernbedienungen mit den unterschiedlichsten 
Protokollen
'         auf Funktion prüfen. Die Ausgabe erfolgt Akustisch und per LCD
'         Display sowie über die Serielle Schnittstelle (COM)an einen PC
'
'Hinweis :
'         Taste [S] selektiert die Betriebsart mit LED V5.
'         V5 aus (Default) ist der Betrieb mit dem selbst entwickelten 
Decoder.
'         V5 an ist der selektive Decoder von BASCOM nur für RC5 Code.
'         Taste [R] dient nur einem Hardware Reset.
'NS081115
'----------------------------------------------------------------------- 
--------

$regfile = "m16def.dat"                                     'zu jedem 
Modell passende Datei

'$prog &HFF , &HE4 , &HD9 , &H00         'Setzt Fusbits auf 8MHz int RC 
Oszil.
'       I      I      I      FBX- Fusebit eXtended
'       I      I     FBH- Fusebit High  'JTAG = disabled
'       I     FB-                       'intern RC Oszillator 8 MHz
'      LB- LockBit

$baud = 38400                                               'gewünschte 
Baudrate vorgeben


'DatenDirektionRegister Port B
Ddra = &B0000_0011
Porta = &B0010_1100

Ddrb = 255                                                  'alle PortB 
als Ausgang deklarieren
Portb = 0                                                   '255 
'alle PullUp ein.

Ddrc = &B1111_1111                                          'das Gleiche 
mit Port C (Display)
Portc = &B0111_0000
                                        'nur andere Schreibweise
Ddrd = &B1100_0000                                          'D4+5 für 
LCD-LED Beleuchtung Outp.
Portd = &B1111_1111                                         'PD4=H/PD5=L

Dim I As Integer                                            'Variable 
für intern. Zähler vom Timer
Dim D As Integer                                            'eine 
Integer- Variable (D) wird
                                        'dimensioniert.Der Inhalt kann 
nun
                                        'während der Laufzeit verändert 
werden
Dim Prz As Byte 
'ProtokollZähler
Dim Txt As String * 8 
'Stringvariable für Text
Dim 3pp As Word                                             'Global für 
PulsPause Zeit in mSek
Dim Baz As Byte                                             'BitAnzahl 
wenn =255 dann kein Signal
Dim Bce As Word                                             'BinärCode 
des IR Signals

Config Rc5 = Pind.4                                         'BASCOM RC5 
Decoder Configurieren

'------------------LCD 
configurieren------------------------------------------
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , _
               Db6 = Portc.6 , Db7 = Portc.7 , E = Portd.6 , Rs = 
Portd.7
Config Lcd = 16 * 2
Initlcd : Cls : Cursor Off
'----------------------------------------------------------------------- 
------

Declare Sub Uirdec(adr As Byte , Bef As Word)               'eigenes Sub 
deklarieren


Enable Interrupts
'----------------------------------------------------------------------- 
----
'hier bekommen die Ports einen selbst ernannten Namen. Meistens aus der
'Zeichnung entnommen dann hat man eine gute Wiedererkennung.
S1 Alias Pind.5                                             'Taste [S]
S2 Alias Pind.2                                             'Taste [2]
S3 Alias Pind.3                                             'Taste [3]
'S4 Alias Pind.4                         'Taste [R] (wegen 
Doppelbelegung)
V7 Alias Portb.4                                            'linke LED 
der Viererkette
V6 Alias Portb.5                                            '2. LED von 
links nach rechts
V5 Alias Portb.6                                            '3. LED
V4 Alias Portb.7                                            'rechte LED 
der Viererkette
Ho Alias Portb.0                                            'Hold für 
Ein/Aus Mimik
Of Alias Portb.1                                            'Off für 
Ein/Aus Mimik
A0 Alias Porta.0                                            'SCL zum 
Testen der TWI-Buchse
A1 Alias Porta.1                                            'SDA zum 
Testen der TWI-Buchse

'Irs Alias PortB.4
Ire Alias Pind.4 
'IR-Empfängerdiode

Upperline
Lcd "IR Geber Tester "
Print "IR Geber Tester "
Lowerline
Lcd "  Nico Schweig  "
Print "--Nico Schweig--" + Chr(10)
Waitms 1000



'----------------------------Hauptroutine------------------------------- 
-----
Do

'Betriebsart Entscheidung durch Taste [S] LED V5 zeigt das an.
  Prz = 0

  Select Case V5
  Case 0 
'Voreingestellt (Default)
    Call Uirdec(baz , Bce)                                  'eigener 
Decoder aufrufen-
  Case 1
    Getrc5(baz , Bce)                                       'wenn V5 an, 
dann BASCOM RC5-Decoder
    Bce = Bce And &B01111111                                'filtert 
TogleBit heraus.
  End Select                                                'in BAz 
steht Geräteadresse(TV/SAT/HiFi)

  If Baz < 255 Then                                         'Wenn 
Decoder anspricht ist BAz < &HFF
    Incr D                                                  'dann wird 
eine Ausgabe gemacht
    Incr Prz

    Select Case V5
    Case 0
      Txt = Str(3pp) + " mS"
      If Baz => 50 And Bce => 99 Then Txt = "DENON"
      If Baz < 50 And 3pp => 52 Then Txt = "SIRCS"
      If Baz = 10 And 3pp < 12 Then Txt = "RC5/Moto"
      If Baz = 11 And 3pp < 12 Then Txt = "RC5/Moto"
      If Baz = 12 And 3pp < 12 Then Txt = "RC5/Moto"
    Case 1
      Txt = "RC5"
    End Select


    'IF 3PP < 19 then Txt="SIRC"
    'IF 3PP > 99 then Txt="DENON"


    Cls
    Upperline : Lcd "Code:" ; Txt
    Lowerline : Lcd Baz ; "Bit/Data" ; Bce
    Print "Messung: " ; D
    Print Bin(baz) ; " / " ; Bin(bce)
    Print Baz ; " Bit/Data: " ; Bce
    Print "Protokoll: " ; Txt
    Print Chr(10)
  End If

   'Tasterabfrage mit Entprellung durch "Debounce"
  Debounce S1 , 0 , Tast1 , Sub                             'S1 ["1"]
  Debounce S2 , 0 , Tast2 , Sub                             'S2 ["2"]
  Debounce S3 , 0 , Tast3 , Sub                             'S3 ["3"]


Loop

'---------------------Ende der 
Hauptroutine----------------------------------

'Alles an Programmiercode, was hiernach folgt, sind Nebenroutinen in die 
der
'Mikrocontroller entweder von sich aus (Interrupt,Timer u.s.w) springt, 
oder
'durch ein Ereignis (Debounce,Sub- oder Funktion u.s.w) ausgelöst wird. 
Nach
'der Abarbeitung der Unterroutinen springt der Mikrocontroller immer 
wieder
'an die Stelle zurück, von der aus er ausgetreten ist.

Tast1:
  V5 = Not V5
Return

Tast2:
  Select Case V5
  Case 0
    Print "Uni Decoder V0812"
    Lowerline : Lcd "UniDecoder V0812"
  Case 1
    Print "RC5 Decoder 7.8.1"
    Lowerline : Lcd "RC5 Decoder7.8.1"
  End Select
Return


Tast3:
  Select Case V5
  Case 0
    Print "Fernsehzentrale KH"
  Case 1
    Print "Fernsehzentrale KH"
  End Select
Return




Sub Uirdec(adr As Byte , Bef As Word)

  Local 1mz As Word                                         '1. 
Monostabiler Zähler (Puls/Pausen)
  Local 3mz As Word , 3su As Word                           '3.Mono & 
Summe Taktrate
  Dim Tar(50)as Word                                        'Timer Array 
(Impulsweite)
  Local Byw As Word                                         'Bit 
Wertigkeit
  Local Bis As Byte                                         'BiStabiler 
Schalter f.Entprellung

  If Ire = 1 Then                                           'Vorabfrage 
des IR-Eingangspin
    Adr = &HFF                                              'wenn kein 
Signal ansteht
    Exit Sub                                                'sofort 
wieder beenden.
  End If

  Const 1mt = 900                                           '1.MonoTime 
für Puls/Pausenerkennung
  Bis = 0 
'Bist.Schalter auf Null=L(IRE)gesperrt
  1mz = 0 : 3mz = 0                                         'alle Zähler 
zurück setzen
  Byw = 1 
'Niederwertigstes Bit 8192=14Bit(RC5)
  V7 = 1                                                    'LED7 zu 
Testzwecken mit Scope
  3pp = 0                                                   'Summe
  Adr = 0
  Bef = 0
  'ab hier beginnt die eigentliche Routine

  Do                                                        'System 
verharrt in Do-Loop Schleife
                                        'bis Until- Bedingung erfüllt
                                        'pro Durchlauf 33µS
    Incr 1mz 
'Puls/Pausenkennung (Monost.Multiv.)
    Incr 3mz 
'Impulsbreitenmessung

    Select Case Ire                                         'IR 
EingangsPin selektieren
    Case 0
      If Bis = 1 Then                                       'Bistabiler 
Zustand, verhindert
        Bis = 0 
'mehrfachschalten.
        1mz = 0 
'Puls/Pausen- Reset
        V7 = 0 : For I = 1 To 15 : Next I : V7 = 1          'nur zur 
Indikation für Oszi
        Incr Adr 
'Array-Zähler der Impulse
        Tar(adr) = 3mz : 3pp = 3pp + 3mz 
'Impulsbreite in Array+Summe ermitteln
        3mz = 0                                             'Zähler 
Reset
      End If                                                'Ende der 
negativen Flanken Steuerung.

    Case 1

      If Bis = 0 Then                                       'Pos. 
Flankenschalter.
        Bis = 1
        1mz = 0 
'Puls/Pausen- Reset
      End If                                                'Ende der 
pos. Flankensteuerung.
    End Select

  Loop Until 1mz => 1mt                                     'wenn 
überläuft, dann Ausstieg

  V7 = 1 : For I = 1 To 35 : Next I : V7 = 0                'nur zur 
Darstellung der Pausenerkennung

  3mz = 3pp / Adr 
'arithmetisches Mittel
  For I = 1 To Adr                                          'das Array 
durchlaufen lassen
    Bis = Adr -i : Bis = Bis + 1                            'das letzte 
Bit war das Niedrigste,
    If Tar(bis) => 3mz Then Bef = Bef + Byw                 'deshalb 
addieren wir das höchste Bit
    'Print I;"/";Bis;"/";ByW            'mit dem niederwertigsten 
BitWert und
    Byw = Byw * 2 
'multiplizieren immer ein Bit höher.
  Next I
  Byw = Byw * 2 : Bef = Bef + Byw                           'das 
hochwertigste Bit zusetzen(immer 1)
  3pp = 3pp - 1mt                                           'ermittelte 
Zeit noch PP-Zeit abziehen.
  3pp = 3pp / 43                                            'die Anzahl 
der Takte/ Zeitfaktor
                                        'der empirisch ermittelt wurde 
und von
                                        'der Taktfrequenz abhängig ist.
End Sub

End

von Karl H. (kbuchegg)


Lesenswert?

Es brennt mir unter den Fingernägeln und ich kanns nicht mehr 
zurückhalten

> Quasi ein Handbuch für Leute, die unterwegs "mal schnell nachblättern"
> möchten, um ggf einen Fehler zu finden, oder sich ggf ein wenig
> weiterzubilden im Umgang mit der Programmiersprache.

Find ich irgendwie witzig, wenn man bedenkt dass du selbst keine oder 
kaum Ahnung hast und das ganze in einer Woche fertig sein soll.

von Nico S. (captain-n)


Lesenswert?

ok... gelernt... erst gucken, dann schreiben. BASCOM-Anhang ging doch ^^

von Nico S. (captain-n)


Lesenswert?

das is ja eben das Problem an de rsache. Habe mein Kit wie gesagt auch 
erst vor ein paar Tagen bekommen, nachdem ich meinem Prüfer monatelang 
deswegen hinterhergelaufen bin.

Und alles, was ich von ihm zur Unterstützung in Form seiner ach so gut 
gemeinten nützlichen Ratschläge bekomme, war für die Katz. Beinahe wär 
mir dabei sogar mein AVR abgeraucht.

Aber der Fehler liegt nun tatsächlich nicht an mir selbst. Es gibt 
genügend Leute, die gleiches bezeugen können ;-)

von Peter (Gast)


Lesenswert?

du hast nicht die gleiche bas datei! die im Anhang hat 251 Zeilen. Bei 
dir kommt in screenshot "Durchlaufzeit" vor in der bas datei steht das 
nicht drin.

von Nico S. (captain-n)


Angehängte Dateien:

Lesenswert?

stimmt, jetzt seh ichs. Ist mir in der Hektik wohl tatsächlich 
entfallen.

Ok, hab mir nochmal die aktuellen Daten rausgezogen, und hänge sie an 
dieser Stelle nochmal mit an. Zuerst die BASCOM-Datei, an der ich 
arbeiten soll, und im Folge-Eintrag dann die aktuelle Fehlermeldung.

Ist sich allerdings noch immer ziemlich ähnlich. Habe bisher nirgends 
einen Hinweis gefunden, was es mit diesem "Label not found" auf sich 
hat.

Gelegentlich erscheint aber auch eine völlig andere Fehlermeldung 
"assignment error" mittendrin irgendwo. Aber auch unregelmäßig.

wenn ich die nochmal bekomme, häng ich die auch ma mit an.


=> Die BASCOM-Datei ist mit "rar" gepackt. Ich sende einfach mal den 
kompletten Anhang, den ich in meiner E-Mail bekommen habe. Vielleicht 
sind ja von den zusätzlich enthaltenen Dateien welche zur Fehlersuche 
nötig.

von Nico S. (captain-n)


Angehängte Dateien:

Lesenswert?

...und die aktuelle Fehlermeldung, von dem zuvor angefügten 
BASCOM-Programm

von Gast (Gast)


Lesenswert?

>Find ich irgendwie witzig, wenn man bedenkt dass du selbst keine oder
>kaum Ahnung hast und das ganze in einer Woche fertig sein soll.

So funktioniert es doch überall. Leute die keine Ahnung aber dafür ein 
umso größeres Ego haben, besetzen Schlüsselpositionen und zeigen anderen 
wo es langgeht.

Geballtes Halbwissen sach ich da immer.

von Jaecko (Gast)


Lesenswert?

Was mir da schon mal auffällt: Sind in Bascom Variablennamen erlaubt, 
die mit einer Zahl beginnen?

von Karl H. (kbuchegg)


Lesenswert?

Bin kein BASCOM Profi.
Aber deine Fehlermeldungen hängen offnebar mir
diesen Zeilen zusammen

...

   Adr = &HFF                          'wenn kein Signal ansteht

...

  Adr=0

...


HIer kommt sowohl &HFF als auch 0 vor, die beide als 'Label not found' 
markiert sind.
Nun ist das hier eine Zuweisung an etwas was sich Adr nennt. Und Adr 
wiederrum stinkt nach irgendeinem vordefinierten Schlüsselwort im 
Zusammenhang mit dem ADC.

Mach mal folgendes

Ändere das Adr um in Addr. Ist sowieso die richtigere Schreibweise. 
Address schreibt sich im Englischen mit 2 d

Sub UIRDec (Addr AS BYTE ,Bef as Word)

...
   Addr = &HFF

...

  Addr = 0

und wo halt Adr sonst noch so vorkommt in dieser Funktion.

(Das ist jetzt allerdings ein vollkommener Schuss ins Blaue. Also mehr 
geraten als durch Wissen hervorgebracht)

von Karl H. (kbuchegg)


Lesenswert?

Jaecko wrote:
> Was mir da schon mal auffällt: Sind in Bascom Variablennamen erlaubt,
> die mit einer Zahl beginnen?

Find ich auch seltsam, hab danach gegoogelt und auch anderen Code 
gefunden, bei dem das benutzt wird. Dürfte anscheinend erlaubt sein.

von Gast (Gast)


Lesenswert?

Möglicherweise ist die eigentliche Prüfung nicht die Erstellung einer 
Doku, sondern es soll herausgefunden werden, ob derjenige in der Lage 
ist einen Programmfehler zu finden und wie lange es dauert bis er es 
selber macht, statt immer nach dem richtigen Code zu fragen.

Mach Deine Hausaufgabe mal lieber alleine. Da lernt man auch was dabei.

von Analog (Gast)


Lesenswert?

Oder wir füttern hier einen Troll.

von Nico S. (captain-n)


Lesenswert?

ok, ich werde das mal ausprobieren mit dem "addr."

Der Prüfer weiß sehr genau, wie die Kriterien bei mir sind, und haben 
uns deshalb eben auf dieses doch recht einfache Projekt geeinigt. Weil 
er es immer und immer wieder verbacken hatte, es mir mitzubringen, und 
so die Zeit knapp wurde, hat er sich bereit erklärt, die Software zu 
programmieren, sodass ich "lediglich" nur noch dokumentieren müsse.

Und wie gesagt, die Software auf dem AVR funktioniert ja auch 
einwandfrei... Nur die, die er mir zugeschickt hat, eben nicht. Zum 
Glück konnte ich die auf dem AVR eines Kollegen ausprobieren. Ich kenne 
den Mann gut genug, um ihm zu misstrauen...

Naja, und dabei kam eben heraus, dass es nicht funktionierte. Nach 
weiterem Hin- und Her per E-Mailhabe ich dann nun endlich diese Software 
bekommen - immer noch fehlerhaft.

Wenn ich eine Möglichkeit hätte, meine funktionierende Software von 
meinem AVR auszulesen und zu sichern, könnte ich ja auch eigenständig 
experimentieren und ausprobieren. Aber wenn ich das Programm jetzt drauf 
flashe, ist die funktionierende Version ein für allemal verloren...

So habe ich wenigstens ein funktionierendes Stück, das ich vorweisen 
kann.

von Karl H. (kbuchegg)


Lesenswert?

Darf ich mal fragen was das für eine Prüfung ist?

von Nico S. (captain-n)


Lesenswert?

egtl Gesellenprüfuung ^^

Hab nur eben auf dem Ausbildungsweg nicht wirklich was in der Richtung 
gemacht. Is alles ne lange Geschichte...

Der Beruf liegt mir allerdings nicht so wirklich. Will nur nicht so kurz 
vor Abschluss abbrechen. Vielleicht pack ichs ja doch noch.

Muss jetz erstmal in die Firma fahren, bin heute Abend aber wieder hier

von Peter (Gast)


Lesenswert?

du kannst ja ausgelesene Software auf jeden fall speichern, sie hilft 
dir zwar nicht weiter, aber im notfall kannst du sie wieder 
zurückspielen.

von P. S. (Gast)


Lesenswert?

Nico S. wrote:

> Weil er es immer und immer wieder verbacken hatte, es mir mitzubringen,
> und so die Zeit knapp wurde, hat er sich bereit erklärt, die Software
> zu programmieren, sodass ich "lediglich" nur noch dokumentieren müsse.

Nochmal langsam zum Mitschreiben: Weil der Pruefer verpennt hat, dir die 
Aufgabe zu geben, macht er sie zum groessten Teil selbst und du machst 
nur noch ein bisschen Alibi-Arbeit?

Was heute so alles legal ist...

von gast (Gast)


Lesenswert?

Ich weiß ja nich ob dus siehst und ob das gewollt ist, aber ADR ist blau 
hinterlegt -> KEINE Variable.. D.h. ADR ist ein Bascom Befehl. Somit 
kann man da nix mit ADR as Byte definieren.. nenn das mal um.. Was ADR 
is findest du raus wenn du auf ADR und F1 klickst

von Bascomfehler (Gast)


Lesenswert?

Wenn man Adr in adr1 umbenennt, wird das File ohne Fehler 
compiliert.

von Bascomfehler (Gast)


Lesenswert?

Ob das Programm so funktionier, habe ich jetzt nicht ausprobiert.

von Bascomfehler (Gast)


Lesenswert?

Gibt es auch einen Schaltplan dazu?

von Analog (Gast)


Lesenswert?

Miss mal TDI,TDO,TCK direkt an Mega16 vom JTAG an PIN 3,2,1

von Paul Baumann (Gast)


Angehängte Dateien:

Lesenswert?

"ADR" ist ein reservierter Befehl, den man nicht als Variablennamen
benutzen darf. Ich habe "ADR" mal im ganzen Programm durch "Horst"
ersetzt. ;-) Damit läßt sich das Programm fehlerfrei übersetzen.


MfG Paul

von Nico S. (captain-n)



Lesenswert?

@ Karl heinz Buchegger:

Vielen Dank für den Tipp mit dem Umbenennen. Habe es eben mal 
umgeschrieben, und jedes "Adr" in "Addr" umgewandelt - und auf einmal 
ließ sich das Prgramm compilieren :-)

Grundlegend hat das also schonmal funktioniert. Was mir allerdings noch 
aufgefallen ist, ist das Ergebnis, das er ausspuckt.

Es hat wohl irgendwas mit den Interrupts zu tun, dass das Programm 
erkennt, ob eine Taste gedrückt gehalten wird, oder nicht.

Wird sie nur kurz gedrückt, erscheint der jeweilige Code im Display. 
Wird sie gedrückt gehalten, springt der angezeigte Code stets zwischen 2 
Werten hin und her. Eigentlich sollte die Differenz durch die bereits 
vordefinierten Bits stets 128 betragen.

Sprich, wenn im Display nach Tastendruck der Code "3" erscheint, springt 
er bei Gedrückthalten der Taste ständig zwischen "3" und "131" hin und 
her, also quasi "3+128".

Da muss also noch irgendwo was gefeilt werden. Werde mich jetzt aber 
schonmal dran setzen können, und mich in diese Programmiersprache 
einarbeiten, um zu begreifen, was jeder einzelne Befehl genau zu 
bedeuten hat.

Sollten weitere Fragen aufkommen, werde ich sie hier posten. Vielen Dank 
auf jeden Fall schonmal an alle, die so fleißig mitgeholfen haben, die 
Fehlerursache ausfindig zu machen :-)

Messen kann ich an dem Teil leider gar nichts, da ich zuhause über 
keinerlei Werkzeug verfüge, mit dem ich daran arbeiten könnte.

Aber ich habe mal in meinen Unterlagen gekramt, und einen Schaltplan 
ausfindig gemacht. (siehe Anhang, is ne TARGET 3001 - Datei)

So auf den ersten Blick denke ich mal, dass das so stimmt. Morgen is 
mein letzter Berufsschultag, und danach werd ich mit nem Kumpel nochma 
an der Software werkeln. Wenn ich also hier reinschauen werde morgen, 
dann frühestens wieder zur Abendzeit.

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.