Gast
#2205565
Hallo, ich habe bisher etliche ATMegas mit meinem Adapter ueber ISP Programmiert. Jedoch beim AT90usb162 kann ich die Fuse Bits nur lesen, jedoch nicht schreiben. Gibts da irgend ein Trick?
|
Anzeige
|
AT90USB162 kann keine Fuse Bits schreiben
Gast
#2205565
Hallo, ich habe bisher etliche ATMegas mit meinem Adapter ueber ISP Programmiert. Jedoch beim AT90usb162 kann ich die Fuse Bits nur lesen, jedoch nicht schreiben. Gibts da irgend ein Trick?
Gast
#2205605
Was mich bisle Irritiert ist das die Lockbits gesetzt sind 0xEC ?
Gast
#2205615
Hi
>Was mich bisle Irritiert ist das die Lockbits gesetzt sind 0xEC ?
Ein Blick ins Datenblatt würde dir verraten, das das der Defaultwert
ist.
MfG Spess
Simon schrieb: > Was mich bisle Irritiert ist das die Lockbits gesetzt sind 0xEC ? Die USB-Chips werden mit einem USB-Bootloader ausgeliefert und mit gesetzten Lockbits. Wenn du das Teil über ISP programmieren willst, musst du vorher einen Chip Erase machen.
Gast
#2205738
aaaaah Danke
Gast
#2205775
kann mir jemand spontan sagen wieso dieser code mit einem Mega8 funzt,
jedoch mit dem AT90USB162 nicht mehr?
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdlib.h>
int main()
{
DDRD |= (1<<PD4); // ausgang
while(1)
{
PORTD &= ~(1<<PD4); //Low
_delay_ms(200);
PORTD |= (1<<PD4); // High
_delay_ms(200);
}
;;
}
Simon schrieb: > kann mir jemand spontan sagen wieso dieser code mit einem Mega8 funzt, > jedoch mit dem AT90USB162 nicht mehr? Vielleicht solltest du mal schreiben, was nicht funktioniert. > #define F_CPU 8000000UL Läuft der Controller auch damit? Quarz angeschlossen? > _delay_ms(200); Der Übergabewert müsste (ohne dass ich es jetzt kontrolliert habe) zu hoch sein. Schaue mal in die delay.h, dort ist das genau beschrieben.
Gast
#2205787
Ja der Quarz (8MHz) ist angeschlossen. wenn ich ihn abstecke, kann ich die fuses auch nicht mehr auslesen. Ich dachte an ein Blinken der LED nur das tut sie nicht Nur mal so ins blaue geraten: Wird vieleicht noch für den Atmega8 gebaut? Der Mega8 und dein USB-AVR sind nicht binärkompatibel. Du musst im Makefile bzw. in den Projectsettings den USB-AVR aufwählen, dass es funktioniert. Gruß Skripttkidyy Simon schrieb: > Ich dachte an ein Blinken der LED nur das tut sie nicht Sondern leuchtet dauerhaft (aber nicht mit voller Helligkeit)? Dein Timing stimmt nicht. Überprüfe, ob dein Controller wirklich mit 8MHz läuft (kein Prescaler aktiviert) und dann prüfe die _delay_ms() - der Übergabewert darf nicht zu groß sein. Lieber eine Schleife à la unsigned char i; for (i = 0; i < 20; i++) _delay_ms(10); einfügen.
Gast
#2205800
Ja der At90usb162 ist ausgewählt. Machen wirs anders. Ich habe die delays raus genommen und nur noch folgendes drinne: PORTD |= (1<<PD4); // High dies geht jedoch denoch nicht. Die LED, die auch funktioniert, geht nicht an. Wenn ich den selben Draht von PD4 abziehe und auf VCC stecke leuchtet sie. Christoph Budelmann schrieb: > dann prüfe die _delay_ms() - der > Übergabewert darf nicht zu groß sein. Nein, ist schon lange nicht mehr. Diese Funktion fällt auf deine Schleifenvariante zurück, wenn der Parameter zu groß wird. Jörg Wunsch schrieb: > Christoph Budelmann schrieb: >> dann prüfe die _delay_ms() - der >> Übergabewert darf nicht zu groß sein. > > Nein, ist schon lange nicht mehr. Diese Funktion fällt auf deine > Schleifenvariante zurück, wenn der Parameter zu groß wird. Danke für den Hinweis, dann muss ich das mal aus meinem Kopf streichen. Auzszug aus der delay.h vom WinAVR-20100110:
Simon schrieb: > Ja der At90usb162 ist ausgewählt. Machen wirs anders. Bitte hilf uns dabei, Dir zu helfen: * poste die komplette Schaltung * poste das komplette Programm. Vielen Dank, Simon
Gast
#2205810
Puh, Schaltung, mmh. Ich habe das auf einem Steckbrett aufgebaut. Es ist nur ein Quarz incl den Kondensatoren sowie eine SPI Schnittstelle angeschlossen. Die Spannung 5V bekomme ich von USB, diese geht auf den Internen Spannungsregler. von UCAP greife ich die 3,3V fuer VCC ab. AVCC (intern 2,5V) ist extern mit 1uF zu GND beschalten. Dann gibts nur noch die LED, Anode mit Widerstand an PD4 und Kathode an GND. Also Ansich eine total primitive Schaltung die genau so mit einem AtMega8 / 88PA wunderbar funzen würde. Ich kanns mir echt nicht erkären wieso das so nicht funzen soll. Nur bevor nichtmal eine LED funzt, brauche ich mit USB garnicht weiter machen. Code: #define F_CPU 8000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdlib.h> int main() { DDRD |= (1<<PD4); // ausgang while(1) { PORTD |= (1<<PD4); // High } ;; }
Gast
#2205817
OK, funzt jetzt. Aber ich versteh es nicht. Fuse BODLEVEL war auf 2,7V eingestellt, diese Unterschreite ich auch nicht. Denoch funktioniert der code nur bei BOD aus. Simon schrieb: > Denoch funktioniert der code nur bei BOD aus. Vcc zu schlecht abgeblockt. Simon schrieb: > OK, funzt jetzt. Aber ich versteh es nicht. > > Fuse BODLEVEL war auf 2,7V eingestellt, diese Unterschreite ich auch > nicht. > Denoch funktioniert der code nur bei BOD aus. Hast Du genügend Kondensatoren um den internen Regler, so wie im Datenblatt vorgesehen? Also 1µF an UCAP sowie mindestens mal einen Abblockkondensator an dem VCC pin? Viele Grüße, Simon
Gast
#2205834
Arrrrg, das ist ärgerlich, das ganze trara wegen 1x 100nF? Simon schrieb: > AVCC (intern 2,5V) ist extern mit 1uF zu GND beschalten. Ähm, ähm, ähm. Wieso liegt das nicht auf VCC? Der Pin ist nicht AREF. Viele Grüße, Simon Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|