Forum: Mikrocontroller und Digitale Elektronik Atmega Tod? nach flashen nur noch balken


von Ingo (Gast)


Lesenswert?

Hallo,

habe eben ein Pogramm auf den atmega 16 aufgespielt danach zeigt das 
display nur noch balken  und die LEDS blinken auch nicht mehr. Habe dann 
den atmega über die Bascom software geleert  also eraset. Jetzt bekomme 
ich vom Laptop keine Verbindung mehr zum Atmega kann ihn nicht mehr 
beschreiben.. Woran liegt das???

INgo

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Unbewußt Fuses verändert. Lege mal einen externen Takt >1Mhz an XTAL1.

von Schlurch (Gast)


Lesenswert?

>Woran liegt das???

Das ist ein ganz bekannter Fehler. Hatte ich auch schon einmal.

von Ingo (Gast)


Lesenswert?

wie kann ich einen Takt anlegen was muss ich da genau tun habe einfach 
mal angefangen wollte eigentlich nur den Text ändern der im Display 
steht und jetzt bekomm ich gar nix mehr keine verbindung zum avr nichts 
wird bei bascom irgendwo ein logfile geschrieben aus dem ich die alte 
software die er überschrieben hat retten kann???

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Ingo so kann Dir keiner helfen.
Lies das Tutorial, das wird das Beste sein.

von Ingo (Gast)


Lesenswert?

mir ist schon klar das ich das durcharbeiten muss aber wie kann ich denn 
einen takt an diesen anschluss anlegen wo kann ich den abgreifen???

von Teplotaxl X. (t3plot4x1)


Lesenswert?

Man nehme einen Quartz*oszillator* und lege dessen Ausgang an XTAL1.

von Ingo (Gast)


Lesenswert?

und wo bekomme ich diesen Quarzostillator her?? Habe den ATmega auf ein 
anderes Board gesteckt dort kann ich ihn lesen und beschreiben über 
Ponyprog2000. Kann ich dort wieder die richtigen fuses eintragen???

von Stefan (Gast)


Lesenswert?

Hallo,

aller Anfang ist schwer! :-)

1:
--
Mit welchen Hilfsmittel tritts Du denn mit dem AVR in Kontakt - also per 
ISP oder JTAG? Benutzt Du eine Entwicklerboard, z.B. das STK500 oder 
AVRDragon oder AVRButterfly oder..oder...oder hast Du das ganze auf 
einem Steckboard aufgebaut?

2:
--
Kennst Du jemanden der auch mit dem AVR arbeitet und über ein JTAG 
verfügt - soll es ja gegen!? :-)

Viele Grüße
Stefan

von Ingo (Gast)


Lesenswert?

Hallo,

das Board ist ein eigenbau unseres Prüfers (Ausbildung als 
Informationselektroniker) wir mussten es in der Zwischenprüfung bauen 
und sollen darauf basierend ein Gesellenstück bauen. Programmiere den 
Atmega über isp das 2. Board ist ein Experimentierboard von Pollin.

Ingo

von Ingo (Gast)


Lesenswert?

Außerdem im Bascom muss ich ein STK200 / stk 300 als Programmer 
auswählen um es flashen zu können.

von Thomas (Gast)


Lesenswert?

Schon mal was von Satzzeichen gehört?


>lesen und beschreiben über Ponyprog2000. Kann ich dort wieder die >richtigen 
fuses eintragen???

Ja.

von Ingo (Gast)


Lesenswert?

und wie kann ich sie eintragen hab sie aus den unterlagen soll  A387 auf 
1110:1110 stellen wo sag ich ihm das???

von Ingo (Gast)


Lesenswert?

So habe jetzt wieder die Möglichkeit das Teil über Bascom anzusprechen. 
Habe über Ponyprog die Werte eingetragen die als Standart sein sollten. 
Nun mein letztes Problem: Unser Prüfer hat das Programm auf der Homepage 
für einen Atmega 8 hochgeladen dadurch ist ja erst das ganze passiert. 
Wie muss ich das Programm  umschreiben das es auf dem ATmega 16 
läuft????


Hier das Programm:


'----------------------------------------------------------------------- 
--------
'Projekt: USB_KIT
'Funktionsüberprüfung      11.11.2004
'Hardware:
'Aufgabe: Software zur Erstinbetriebnahme des AVR-Kits
'         dabei werden viele Funktionen getestet und dargestellt.
'         Erklärung der Anwendung in grünem Text.
'db100205,100505,250505,011105,230306,230606,050806
'----------------------------------------------------------------------- 
--------
'----------------------------------------------------------------------- 
--------
$regfile = "m8def.dat"                       'zu jedem Modell passende 
Datei
$crystal = 8000000                           'Quarz (Resonator) Frequenz
$PROG &HFF,&HAE,&HD9,&H00                    'FuseBit auf Extern. Quarz
$baud = 9600                                 'gewünschte Bautrate 
vorgeben

'Beispiel wie man den internen EEProm laden kann
$eeprom
Data "123456789012345"                       '1,15
Data "StarterKit V4.1"                       '16,31
Data "Timmy Fiola    "                       '32,47
Data "FV EL&IT Mainz "                       '48,63
Data "Stand: 23032006"                       '64,79
Data "Handwerkskammer"                       '80,95
Data "MultimediaGrimm"                       '96,111

'DatenDirektionRegister Port B
DdrB = 255                                   'alle PortB als Ausgang 
deklarieren
PortB = 255                                  'alle PullUp ein.

DdrC = &B111_1111                            'das Gleiche mit Port C(nur 
6-Byte)
PortC = &B111_1111
                                             'nur andere Schreibweise
DdrD = &B0011_1000                           'D4+5 für LCD-LED 
Beleuchtung Outp.
PortD = &B1101_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 Txt As String * 16                       'erstellen einer 
String-Variablen
Dim W As Word                         'Word Variablen benötigen wenig 
Speicher


Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = PortB.1 , Db5 = PortB.2 , _
        Db6 = PortB.3 , Db7 = PortB.4 , E = PortB.0 , Rs = PortD.6
Initlcd
Cls
Cursor Off


Declare Function Eepromlesen(byval A As Word , Byval E As Word) As 
String


Txt = EepromLesen(79 , 94) : Lcd Txt
Lowerline
Txt = EepromLesen(16 , 31) : Lcd Txt


Config Timer1 = Timer , Prescale = 64        '256 ist schneller
On Timer1 SprungTim1                         'Sprungadresse


Enable Interrupts

S1 Alias PinD.3                           'hier bekommen die Ports einen 
selbst
S2 Alias PinD.4                           '-vormals D.6-
S3 Alias PinD.7                            'die Sufix aus der Zeichnung, 
dann
S4 Alias PinD.2                            'hat man eine gute 
Wiedererkennung.
V7 Alias PortC.2
V6 Alias PortC.1
V5 Alias PortC.0
V4 Alias PortB.5
Irs Alias PortC.1
'Ire Alias PortD.5                            'IR-Empfängerdiode
'-------------------nur Startbedingung testen und 
ausgeben-------------------

Waitms 250                                   '1/4 Sekunde warten
Print Chr(13)                                'Zeilenumbruch 2x

Txt = EepromLesen(16 , 31) : Print Txt       'Text vom EEProm und 
ausgeben
Txt = EepromLesen(32 , 47) : Print Txt       'Text vom EEProm und 
ausgeben

Txt = EepromLesen(80 , 95) : Print Txt       'Text vom EEProm und 
ausgeben
Txt = EepromLesen(64 , 79) : Print Txt       'Text vom EEProm und 
ausgeben

Print "Registertest"

Print "B-Port: " ; Ddrb ; " / " ; Portb      'Registerinhalt darstellen
Print "C-Port: " ; Ddrc ; " / " ; Portc
Print "D-Port: " ; Ddrd ; " / " ; Portd
Print                                        'einfacher Zeilenumbruch
Waitms 500

Enable Timer1                                'Timer einschalten
V6 = 0
V5 = 0
V4 = 0

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

  'Tasterabfrage mit Entprellung durch "Debounce"
  Debounce S1 , 0 , Tast1 , Sub           'S1
  Debounce S2 , 0 , Tast2 , Sub            'S2
  Debounce S3 , 0 , Tast3 , Sub            'S3
  Debounce S4 , 0 , Tast4 , Sub            'S4

  if S2 = 0 and S3 = 0 then Gosub TimEinAus

  'Hier werden Programmroutinen eingefügt.Diese Scheife wird ständig 
wiederholt

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.

'---------------------Timer1 
Ein/Aus-----------------------------------------
TimEinAus:

  If TIMSK.TOIE1 = 0 then    'ENABLE  Timer1
    TIMSK.TOIE1 = 1
  Else
    TIMSK.TOIE1 = 0
  End If
  waitms 1000
Return

'Hier ist die Timerroutine. Hier wird alle Sekunde hin verzweigt

SprungTim1:
  V7 = Not V7   'das ist ein genialer Befehl, Der den Zustand des Ports 
einfach
                'umdreht. Also ist er eben Low, dann wird er High. Die 
LED V7
                'wird also blinken. Vorausgesetzt der Port steht auf 
Ausgang
                'und der PullUp- Widerstand ist eingeschaltet. Und der 
Timer
                'ist enabled (eingeschaltet)
  Incr I       'Incrementiere I (Zähle um 1 höher entspricht: I=I+1)

  Print "033150:Timer";I   'das ist die Syntax um über UART seriell 
Daten zu
                         'senden. das Semikolion trennt dabei die 
Variable (i)
                         'vom geschriebenen Text. Print sendet dann den 
Inhalt
                         'von (I)
  Ire = V7               'zum Testen der IR-Empfängerdiode

Return

'--------------------Tastenroutine-------------------------------------- 
------
Tast1:
  Incr D                                     'zählt die internen 
Tastendrücke
  Txt = EepromLesen(64 , 79)                 'holt Text vom EEProm 
(stand)
  Lowerline : Lcd Txt
  Print "S1: " ; Txt ; " z:" ; D             'Ausgabe über UART (TXD)
  V6 = Not V6                                'LED-Zustand umschalten
Return
'----------------------------------------------------------------------- 
------
Tast2:
  Txt = EepromLesen(32 , 47)                 'holt Text vom EEProm  (USB 
onB..)
  Print "S2: " ; Txt                         'UART (TXD) Ausgabe
  Lowerline : Lcd Txt
  V4 = Not V4                                'LED V4 ändert seinen 
Zustand
Return

'----------------------------------------------------------------------- 
------
Tast3:
  Txt = EepromLesen(48 , 63)                 'holt Text vom EEProm 
(FV-EL..)
  Print "S3: " ; Txt                         'UART (TXD) Ausgabe
  Lowerline : Lcd Txt
  V7 = Not V7                                'LED V7 ändert seinen 
Inhalt

Return
'----------------------------------------------------------------------- 
------
Tast4:
  Txt = EepromLesen(16 , 31)                 'holt Text vom EEProm 
(USB-Kit..)
  Lowerline : Lcd Txt
  Print "S4: " ; Txt                         'UART (TXD) Ausgabe
  V5 = Not V5
Return

'----------------------------------------------------------------------- 
------
'Hier folgen Unterroutinen



'Aufgabe   : Das implementierte EEProm auslesen (512 Byte Größe 
möglich),
'Parameter : A (Anfangspunkt) eine Zahl zwischen 1-511 - immer < E
'            E (Endpunkt) eine Zahl zwischen 2-512
'Ausgabe   : EEPromLesen (Stringvariable)
Function EepromLesen(byval A As Word , Byval E As Word) As String

  Local Epunkt As Word                       'Lokale Variablen werden 
nach Ver-
  Local Inhalt As Byte                       'lassen der Routine wieder 
frei
                                          'gegeben
  Eepromlesen = ""                           'Der Inhalt bleibt 
bestehen, deshalb
   For Epunkt = A To E                       'erstmal löschen, dann for 
- next
     Readeeprom Inhalt , Epunkt              'um EEProm schrittweise 
(seriell)
     Eepromlesen = Eepromlesen + Chr(inhalt) 'aus zu lesen.
   Next Epunkt

End Function

von Alain F. (fox82)


Lesenswert?

Hallo hatte auch schon mal so ein Problem: Dabei habe ich vergessen, das 
richtige HEX-File auszuwählen. Sprich es war noch die HEX von einem 
anderen Tiny dort. Danach war alles wieder IO.

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.