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
Unbewußt Fuses verändert. Lege mal einen externen Takt >1Mhz an XTAL1.
>Woran liegt das???
Das ist ein ganz bekannter Fehler. Hatte ich auch schon einmal.
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???
Ingo so kann Dir keiner helfen. Lies das Tutorial, das wird das Beste sein.
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???
Man nehme einen Quartz*oszillator* und lege dessen Ausgang an XTAL1.
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???
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
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
Außerdem im Bascom muss ich ein STK200 / stk 300 als Programmer auswählen um es flashen zu können.
Schon mal was von Satzzeichen gehört?
>lesen und beschreiben über Ponyprog2000. Kann ich dort wieder die >richtigen
fuses eintragen???
Ja.
und wie kann ich sie eintragen hab sie aus den unterlagen soll A387 auf 1110:1110 stellen wo sag ich ihm das???
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.