PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Installierung von AVRStudio4



manu418
09.09.2010, 17:23
Hallo,
ich habe ein Problem. Nachdem ich AVRStudio4 installiert hatte und dazu noch das SP3, konnte ich das Programm gut öffnen. Ich bin absoluter Neueinsteiger in Sachen uCs und habe heute gerade mein STK500 von Atmel bekommen. Demnach hatte ich kaum Ahnung außer dem, was ich vorher so gelesen hatte. Mein erstes Problem ist eben, dass ich das AVRStudio4 wieder gelöscht habe, nachdem es (meiner Meinung nach) nicht richtig klappte. Ich habe es nicht deinstalliert, da ich nicht wusste, wie das geht, ich habe nämlich nirgends etwas dementsprechendes gefunden. Soblad ich jetzt das AVRStudio4 wieder installieren will, kommt kurz nach dem Anklicken des Setups, es sei bereits eine neuere Version installiert. Ich habe aber alles, was ich zu dem Programm auch mit der Suchfunktion finden konnte gelöscht! Aber es hilft nichts! Was soll ich denn jetzt machen? Wäre für einen Tipp sehr dankbar.

Außerdem hätte ich noch eine Frage: Kann man Bascom quasi in direkter Verbindung mit AVRStudio4 nutzen? Wie geht das genau? Schreibt man in Bascom das Programm und lässt es dann in das AVRStudio kompilieren und von dort auf den uC? Und ist Bascom so ähnlich wie FreeBasic? Da habe ich nämlich relativ gute Kenntnisse.

Vielen Dank schonmal im Vorraus, sorry, wenn ich blöde Fragen stelle, aber bitte sagt jetzt nicht sowas wie GIDF, denn ich habe dazu echt nix gefunden und es gibt einfach irre viele Infos, die ich nicht alle einordnen kann.

MFG
Manuel

Jaecko
09.09.2010, 18:43
Zum Deinstallieren gibts in der Systemsteuerung unter Software nen Eintrag fürs AVR-Studio. Unter Windows wird ein installiertes Programm NIEMALS einfach gelöscht. Was das für Folgen hat, hast du ja grad gemerkt.

Eine Möglichkeit, die dir noch bleibt: Die Registry durchsuchen, und dort alle Einträge, die was mit dem AVR-Studio zu tun haben, löschen.
Nur aufpassen: Nichts falsches löschen. Auf fehlende Registry-Einträge reagiert Windows relativ giftig.

Bascom und AVR-Studio miteinander benutzen geht eigentlich nicht; sind auch 2 total unterschiedliche Sprachen (Basic-Dialekt vs. C).
Was halt beide gemeinsam haben: Die Möglichkeit, Inline-Assembler zu verwenden (kann aber glaub ich jede Sprache bzw. sollte sie können)

Was ich mal gemacht hab: mit AVR-Studio programmiert und die .hex mit Bascom geflasht; aber nur, weil ich zu dem Zeitpunkt nur diesen Bascom-USB-Programmer hatte. Komfort ist was anderes...

Tip von mir (und mit dem bewussten Risiko, nen "Religionskrieg" anzufangen *g*): Wenn du eh frisch anfängst, mach gleich C. V.a. wenns später mehr in der Richtung werden soll.

Richard
09.09.2010, 19:17
Zum Deinstallieren gibts in der Systemsteuerung unter Software nen Eintrag fürs AVR-Studio. Unter Windows wird ein installiertes Programm NIEMALS einfach gelöscht. Was das für Folgen hat, hast du ja grad gemerkt.


Bascom und AVR-Studio miteinander benutzen geht eigentlich nicht; sind auch 2 total unterschiedliche Sprachen

Das stimmt "so" nicht! Bascom kann zum chip programmieren
auf die STK 500 tools zugreifen. Dazu stellt man in Bascom als Programm er stk500 ein und im Feld darunter dann den Ort wo das Programm er Programm (im Unterortner von studio4) zu finden ist.

Klappt super, studio4 nutze ich hauptsächlich nur um Fuse bits zu setzen das geht dort einfacher.

Mann Programme einfach löschen, das ist bitter, konnte man nicht mit windows "Povertoys" oder ähnlich geschrieben die Registry bereinigen?

Gruß Richard

Jaecko
09.09.2010, 19:37
STK500 unter Bascom... wieder was gelernt.
(Wobei das zeugs ja eigentlich zu WinAVR gehört; nicht AVR Studio, aber stimmt schon, "Softwarepaket AVR-Studio" eben)

Gock
10.09.2010, 12:19
Du holst Dir dieses Tool
http://www.chip.de/downloads/Microsoft-RegClean-4.1a-Build-7364.1_12992066.html
und hoffst, dass es alle Einträge findet und löschst sie.
Wenn das nicht hilft, holst Du Dir dieses Tool
http://www.chip.de/downloads/Regmon-7.04_12993647.html
startest es, stellst die Filter entsprechend ein und startest das Setup von AVRStudio. Nach Erscheinen des AVR-Meldung stopst Du das Regmon und siehst nach, auf welche Registryeinträge es zugegriffen hat. Die löschst Du dann per Hand, allerdings erst, NACHDEM du die entsprechenden Eintrage gesichert hast!!!
Falls dabei was schief läuft, kannst Du die Einträge durch Doppelklick auf die erstellte reg.Datei wiederherstellen.
Gruß

manu418
10.09.2010, 15:54
Hallo,
vielen Dank an alle! Es hat geklappt :cheesy: . Der Tipp mit der Registry hat dann letztendlich geklappt, nachdem ich komischerweise das Programm in der Systemsteuerung nicht löschen konnte. Naja, jetzt geht es jedenfalls, Bascom habe ich jetzt auch mal installiert. Und dann habe ich noch eine Frage: Ich habe jetzt in Options -> Programmer wie beschrieben STK500 ausgewählt. Aber wie bekomme ich jetzt ein Programm auf den uC? Es ist ein ATMEGA 8515. Wenn ich auf compile klicke, zeigt das Programm an wieviel % Flash voll sind oder so. Am Board selbst merke ich nix, da blinkt nix und so...wie krieg ich denn zum Beispiel so ein Beispielprogramm auf den uC? Vielen Dank nochmal für die Tipps.

MFG
Manuel



EDIT: Ich habe mir mal das Turtorial "Bascom - Erstes Programm in den Controller übertragen" angeschaut. Klingt ja alles ganz gut, aber wenn ich auf den program Button klicke nachdem ich compiliert habe, öffnet er nur ein Fenster in dem der Ordner sample angezeigt wird. Nach dem Turtorial müsste er doch ein Fenster öffnen, in dem man das ganze im HEX-Format sieht und den uC endgültig programmieren kann, oder?

Richard
10.09.2010, 21:28
Und dann habe ich noch eine Frage: Ich habe jetzt in Options -> Programmer wie beschrieben STK500 ausgewählt. Aber wie bekomme ich jetzt ein Programm auf den uC? Es ist ein ATMEGA 8515. Wenn ich auf compile klicke, zeigt das Programm an wieviel % Flash voll sind oder so

MFG
Manuel


?

Beim Compilieren wird nur eine Datei erzeugt. Danach musst Du auf Programmieren "Klicken". Erst dann wird der STK500 Programmer gestartet, Wenn du den richtigen Order wo sich das Programm befindet, eingestellt hast.

Du kannst aber (erst einmal) im AVR Studio die vom Bscom Copiler erstellte Hex laden und "Brennen". Nur um zu sehen ob das überhaupt klappt! Möglich das da noch einige Einstellungen beim "Brenner" nicht passen und unter Bascom kommt dann keine Fehlermeldung, es geht einfach nicht. Wenn die Einstellungen einmal richtig sind, klappt das aber super.

Gruß Richard

manu418
11.09.2010, 11:05
Hallo,
vielen Dank nochmal! Jetzt hat auch das Programmieren funktioniert! Ich habe gestern noch meine erste LED zum Blinken gekriegt \:D/ ! Ist schon ein schönes Erlebnis, wenn es nach stundenlanger Suche vorm PC dann blinkt! Ist echt super! Und Bascom hat ja einige Ähnlichkeiten mit Free-Basic, sodass mir der Einstieg nicht allzu schwer fallen wird (hoffe ich).

Eine Frage noch: Bei diesem Code


$regfile = "m8515.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
$baud = 9600
Config Portb.1 = Output
Config Pind.0 = Input
Do
If Pind.0 = 0 Then
Portb.1 = 1
Wait 1
Portb.1 = 0
Wait 1
Else
Portb.1 = 1
End If
Loop
End

frage ich mich, warum der uC nach dem Programmieren so reagiert:
Ohne Tastendruck: Alles Aus
Bei Tastendruck: LED blinkt
Aber müsste nicht eigentlich ohne Tastendruck schon die LED leuchten? Warum heißt "Portb.1 = 1" nicht, die LED müsste leuchten?

Richard
11.09.2010, 12:16
Nein, mit Portb.(x) = 1 oder 0 wird der Port (x) als
1 = Ausgang, 0 = Eingang geschaltet. Die Led wird
dann mit Pinb.(x) = 1/0 an ausgeschaltet.

Gruß Richard

manu418
14.09.2010, 16:05
Hallo,
hm, so wie du das schreibst, hat das bei mir nicht wirklich funktioniert. Hast du da evtl. ein Beispielprogramm für?

Und noch eine andere Frage: Kann ich mit meinem ATMEGA8515 nicht mit einem PRINT-Befehl irgendwie mit dem PC kommunizieren, sodass er mir im Terminal Emulator anzeigt, was ich im Programm hinter dem PRINT-Befehl stehen habe?

Richard
14.09.2010, 16:33
Hallo,
hm, so wie du das schreibst, hat das bei mir nicht wirklich funktioniert. Hast du da evtl. ein Beispielprogramm für?

Und noch eine andere Frage: Kann ich mit meinem ATMEGA8515 nicht mit einem PRINT-Befehl irgendwie mit dem PC kommunizieren, sodass er mir im Terminal Emulator anzeigt, was ich im Programm hinter dem PRINT-Befehl stehen habe?

Habe auch etwas Falsch beschrieben, mit Port(x).y= 1/0 wird der interne Pull Upp ein/aus geschaltet.

Mit Pin(X).y Wird dann der Pin ein/aus geschaltet. Wenn die LED gegen VCC angeschlossen ist, muss der Pin zum Einschalten Pin(x).y = 0 gesetzt werden. ist die LED gegen GND verdratet, Pin(x).y = 1.... Die Pin Richtung wird mit
config (X.Y) as .....Eingestellt.

Grüße Richard

manu418
18.09.2010, 16:31
Hallo,
jetzt habe ich wieder ein Problem bzw. mehrere:

1. Der neue ATTINY12 wird zwar manchmal erkannt, allerdings kann ich ih nicht programmieren, denn egal was ich eingebe und sei es nur $regfile = "attiny12.dat" , der Compiler sagt: "OUT of SRAM space" und dann eine Angabe, wo das Programm sich befindet.

2. Der MEGA8515 wird plötzlich auch nicht mehr erkannt. Ich habe mal die Funktionen "Read code from Chip into buffer" und "Write buffer into Chip verwendet. Außerdem, da könnte ich mich aufregen über mich, steckten einmal beide uCs gleichzeitig drin.

Danke schonmal im Vorraus!

MFG Manuel

Jaecko
18.09.2010, 18:42
Zu 1: Ich meine mich zu erinnern, dass der Tiny12 keinen RAM hat. Wenn du also irgendwas hast, das den RAM brauchst, stimmt diese Fehlermeldung "Out of SRAM space" schon.

manu418
24.09.2010, 16:48
Hallo,
hm, Problem 2 hat sich gelöst. Der ATMEGA wird wieder erkannt und kann programmiert werden. Nur der ATTINY macht noch Probleme. Ich habe jetzt irgendein Beispielprogramm in Bascom kopiert:


$regfile = "ATtiny12.DAT"
$crystal = 1600000
$tiny
$noramclear
$hwstack = 0
$swstack = 0
$framesize = 0

Const L1_preset = 253
Const L2_preset = 210

Const Preset_01s = 1 ' 0,1s
Const Preset_05s = 5 ' 0,5s
Const Preset_15s = 15 ' 1,5s

Loop_1_ctr Alias R16
Loop_2_ctr Alias R17
Loop_3_ctr Alias R18

'Relais an PB4
Config Portb.4 = Output

'Warte 1500 ms
!LDI Loop_3_Ctr, Preset_15s ' Preset = 15 entspricht ca. 1,5 Sekunden
!RCALL ASM_Delay

'Relais Ein (HIGH)
Portb.4 = 1

'Warte 500 ms
!LDI Loop_3_Ctr, Preset_05s ' Preset = 5 entspricht ca. 0,5 Sekunden
!RCALL ASM_Delay

'Relais Aus (Low)
Portb.4 = 0

Do
Loop

Asm_delay:
Lbl_loop_3:
!LDI Loop_2_Ctr, L2_Preset
Lbl_loop_2:
!LDI Loop_1_Ctr, L1_Preset
Lbl_loop_1:
!DEC Loop_1_Ctr
!BRNE Lbl_Loop_1
!DEC Loop_2_Ctr
!BRNE Lbl_Loop_2
!DEC Loop_3_Ctr
!BRNE Lbl_Loop_3
!RET

End

Wenn ich jetzt versuche das zu kompilieren und auf den uC zu laden, kommt nach kurzer Zeit die Fehlermeldung: "Format '%d' invalid or incompatible with argument." Was kann das denn heißen? Ist da noch ein Fehler drin?

Jaecko
24.09.2010, 22:34
Welche Zeile wird da angemeckert?

manu418
25.09.2010, 10:21
Hallo,
das ist ja das Problem. Es wird keine Zeile angemeckert. Das ganze läuft so ab: Ich drücke auf den Button "Compile", der bei mir auch gleichzeitig damit verbunden ist, dass er das Programm nach dem Compilieren auf den uC überträgt. Das Compilieren klappt. Dann öffnet sich das Programmfenster. Der ATTINY12 wird oben links angezeigt, ist also erkannt. Dann geht die Status LED auf dem STK500 auf gelb und die Fehlermeldung kommt. Dann muss ich erst das STK500 wieder ausschalten, um die gelbe LED wieder grün zu bekommen. Das Programm ist nicht übertragen. Übrigens: Die Lock-und Fusebits des uCs kann ich ändern. Aber es kann kaum sein, dass es daran liegt, dass ich an einem uC etwas falsch eingestellt habe, da es mit anderen ATTINY12 genauso wenig geht.

MFG Manuel

021aet04
25.09.2010, 10:44
Kann es sein dass die ISP Frequenz falsch eingestellt ist? Hatte das gleiche Problem.

MfG Hannes

Richard
25.09.2010, 11:03
Moin moin.

Programmiere einmal die reckt aus dem Studio4 heraus, da gibt es bessere Fehlermeldungen und Du kannst die ISP Frequenz auslesen/einstellen. Zum Testen kannst Du die auch einmal recht niedrig einstellen. Ach ja und darauf achten das der Chip im richtigem Sockel vom STK500 steckt! ist mir auch schon öfters passiert das ich darauf nicht geachtet habe und die Chips sind nicht alle gleich verdrahtet!

Gruß Richard

Gruß Richard

manu418
25.09.2010, 17:26
Hallo,
vielen Dank erstmal für eure Hilfe! Es klappt jetzt ganz gut soweit...naja eigentlich nicht. Ich bekomme jetzt 2 der 3 ATTINYs programmiert. Testweise mit einem Wechselblinker. Der 3. hat den Geist aufgegeben. Sobald ich in AVRStudio4 die Fuse- und Lockbits des uCs aufrufen will, kommt die Fehlermeldung, dass man an dem uC nix machen kann, weil er keine Verbindung oder so hat. In Bascom wird er auch nicht mehr erkannt. Ich kann es nicht genau sagen, aber wahrscheinlich lag es an einem Fusebit und einem Lockbit:

- am CKSEL: Das musste wohl auf internem RC-Oszillator stehen

- am LB21: Da muss man auf "Further progamming and verify of the flash and EEPROM is disabled" umstellen

Da wären wir schon bei Problem 1: Ich stelle wie oben genannt die Fusebits und Lockbits in Bascom ein und programmiere. Das Programm wird erfolgreich übertragen. Wenn ich dann nochmal mr die Fusebits und Lockbits anschaue, sehe ich: Das LB21 hat sich wieder zu "No memory features enabled" gewandelt. Bevor ich wieder etwas programmieren will, muss ich es wieder ändern. Tue ich das nicht, kommt wieder die Fehlermeldung wie in ein paar Beiträgen früher genannt und das Programm wird nicht übertragen.

Dann noch ein Problem: Ich will ein Port des ATTINY12 als Input nutzen. Das geht nicht. Ich kann scheinbar alle als Output nutzen, aber als Input geht nix. Es ist ja so, dass der uC nur PORTB von 0 - 5 hat. Kann es sein, dass es nicht geht, Ports mit gleichen Buchstaben unterschiedliche Aufgaben zuzuweisen? Mein Code sieht z.B. so aus:


$regfile = "ATtiny12.DAT"
$crystal = 2000000
$tiny
$noramclear
$swstack = 0
$framesize = 0

Config Portb.0 = Output
Config Portb.2 = Output
Config Pinb.4 = Input

Do

Portb.0 = 0
Portb.2 = 1
Waitms 100
Portb.0 = 1
Portb.2 = 0
Waitms 100
Loop Until Pinb.4 = 1

Portb.0 = 1
Portb.2 = 1

End




Internen Pullup brauche ich nicht, den hat das Board soweit ich weiß. Wenn ich sage, er soll wiederholen, bis PINB.4 = 0 ist, hört er sofort auf. Achso, zum Verständnis des Codes: PORTB.2 = 0 heißt, dass LED 2 leuchtet.

MFG Manuel

021aet04
25.09.2010, 17:38
Ich kenne mich in Bascom nicht aus aber könnte es sein, dass es "Portb.4 = Input" statt "Pinb.4 = Input" heißt?

MfG Hannes

manu418
25.09.2010, 17:44
Hallo,
ja, ist eine gute Idee, habe ich auch schon ausprobiert, aber es macht keinen Unterschied irgendwie... ich habe das mit dem Pin und Port Kram immernoch nicht richtig gerafft :( .

MFG Manuel

Richard
25.09.2010, 18:25
Mit Portx.y = 1 ist der Interne Pull Up eingeschaltet.
Mit Portx.y = 0 ist der Interne Pull Up ausgeschaltet
Mit pin.x legt man fest ob es eingang oder ausgang sein soll.

Ich habe außer die Fuses für den Tackt noch nie eine ändern müssen, die passen schon bei neuen Chips UND Achtung!
manche Fuses sind lo aktiv andre Hi aktiv (Datenblatt).
Mit den STK500 kannst Du Hochvolt Programmieren, damit kommst Du immer an den Chip heran. Außer natürlich er ist defekt. Wenn DU den Prommer "verbietest" das Flasch zu ändern soll logisch nicht mehr programmiert werden können....

Gruß Richard

Gruß Richard

manu418
26.09.2010, 11:22
Hallo,
ja, also, wenn man die beiden Sachen mal übersetzt, heißt das erste doch "keine Memory-Funktionen aktiviert" (was ich vom Sinn eh nicht verstehe) und das andere, mit dem er funktioniert "Weitere Programmierung und das überprüfen von Flash und EEPROM sind deaktiviert". Das ist doch unlogisch! Und wie kann ich das machen, dass die Einstellung beibehalten wird und sich nicht immer umändert?


Mit Portx.y = 1 ist der Interne Pull Up eingeschaltet.
Mit Portx.y = 0 ist der Interne Pull Up ausgeschaltet
Mit pin.x legt man fest ob es eingang oder ausgang sein soll.

Das ist ja soweit klar. Also legt man dann mit "Config Portb.3 = Output" oder "Config Portb.3 = 1" fest, dass Portb.3 ein Ausgang ist? Und den steuere ich dann mit Pin oder Port an? Was ist da eigentlich der Unterschied?


manche Fuses sind lo aktiv andre Hi aktiv (Datenblatt).

Und das verstehe ich jetzt garnicht. Kannst du das vielleicht nochmal genauer erklären?

Sorry für meine vielen Fragen, aber ich bin halt ganz neu in dem Gebiet und so... ich hoffe ich nerve nicht

MFG Manuel

Richard
26.09.2010, 12:23
manche Fuses sind lo aktiv andre Hi aktiv (Datenblatt).

Und das verstehe ich jetzt garnicht. Kannst du das vielleicht nochmal genauer erklären?

Sorry für meine vielen Fragen, aber ich bin halt ganz neu in dem Gebiet und so... ich hoffe ich nerve nicht

MFG Manuel

Das soll bedeuten das manche Fuses anstatt mit 1 mit 0 "Eingeschaltet werden" welche muss man im Datenblatt nachsehen. Ich setze Fuses ausschließlich über studio4 da geht das einfacher und man kann gleich wieder Einlesen um zu schauen ob das geklappt hat. Wie ich schon erwähnt habe, braucht man bei neuen µC's KEINE Fuse setzen, außer den Tackt (wenn nötig). Wenn Du (neu) bist, lasse die Fuses besser in Ruhe, selbst "alte Hasen" haben Respekt davor......

Gruß Richard

[/quote]