Hallo, manchmal ist es zum weinen, wenn man einen Fehler nicht findet. Also ich habe einen ATTINY45 in der Arbeit und möchte alle Pins nutzen. ' 1 = PB5 / Schalter Bit 4 ' 2 = PB3 / Schalter Bit 3 ' 3 = PB4 / Schalter Bit 2 ' 4 = GND ' 5 = OC0A / PWM Ausgang ' 6 = PB1 / Schalter Bit 1 ' 7 = ADC1 / Eingang ' 8 = VCC Ich hänge über Pulldown einen Schalter an die Ports 1,3,4,5. Habe einen Analog-Digital Eingang und möchte eine Spannung über den OC0A Ausgang als PWM ausgeben. Im Versuch taste ich die Eingangsspannung (0-5V) ab und gebe diese als PWM Signal aus. Alles prima. Nun möchte ich den Schalter noch ins Spiel bringen PB1, PB3, PB4 wird erkannt und 5 Volt werden als High bzw. GND als Low prima erkannt. Nur PB5 funktioniert nicht. PB5 will trotz setzen von in BASCOM ... Config Adc = Single , Prescaler = Auto Config Portb = Input Portb = &HFF Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down ... keinen Input liefern. Die Abfrage: Schalter.0 = Pinb.1 Schalter.1 = Pinb.3 Schalter.2 = Pinb.4 Schalter.3 = Pinb.5 berücksicht PB5 nicht und mein Voltmeter zeigt 0,8 V ohne angelegte 5 Volt Spannung bzw. mit Schalter schöne 5 V an. Mich wundern die 0,8 V, die ich nicht auf den anderen Ports habe. Habe ich den ATTINY45 schon überfordert und PB5 kann nicht genutzt werden bei gleichzeitiger Nutzung von PWM und ADC ? Gruß Bernd
da du die Fuses nicht erwähnt hast: hast du die Fuses richtig gesetzt?
Hallo, ich habe die FUSE nicht verändert. Ein Versuch RSTDISBL zu aktivieren führte dazu, dass ich den ATTINY nicht mehr ansprechen kann. Wenn es daran liegt muß ich den ATTINY dann anders als mit ISP programmieren ? Falls ja wie bzw womit ?
Bernd wrote: > Wenn es > daran liegt muß ich den ATTINY dann anders als mit ISP programmieren ? > Falls ja wie bzw womit ? Z.B.: Beitrag "UART Bootloader ATtiny13 - ATmega644" Peter
Hallo, sorry, das mit dem Bootloader habe ich nicht ganz verstanden. Ist es richtig das es am RSTDISBL liegt ? Gibt es nicht einen einfachen parallelen Programmer oder so etwas ? Bernd
HV parallel programming geht nur mit AVRs, die genügend Pins dafür haben. Bei den kleinen gibts dafür HV serial programming. Und wenn Du den RESET abschaltest, um den Pin als I/O zu verwenden, dann geht ISP eben nicht mehr, weil dafür der RESET benötigt wird. Andererseits kann PB5 natürlich auch nur dann als I/O verwendet werden, wenn die RESET-Funktion abgeschaltet wird.
Hallo, danke für die Antwort. Kann ich denn mit einer HV Seriellprogrammierung mein Problem lösen und welchen Programmer brauche ich dann ? Gruß Bernd
Bernd wrote:
> sorry, das mit dem Bootloader habe ich nicht ganz verstanden.
Ein Bootloader ist ein Programm, was man in den Chip programmiert, damit
der sich selbst programmieren kann.
Der Vorteil ist, daß man dann keine speziellen Pins mehr benötigt,
sondern das Interface so programmieren kann, wie man lustig ist.
Z.B. mein Bootloader kann direkt über die UART programmieren, sogar nur
über einen Pin.
Man sucht sich also irgendeinen Pin aus für die UART, brennt den
Bootloader ein und überprüft, ob er funtioniert.
Dann setzt man die RSTDISBL-Fuse und kann nun alle 6 Pins benutzen.
Der Pin für die UART lauscht nur direkt nach dem Einschalten (0,3s) auf
das Paßwort zum neu Programmieren. Danach ist er ganz normaler IO-Pin.
Ein Bootloader kann nur neue Programme aufspielen, die Fuses kann er
nicht ändern.
Peter
Hallo, okay, ich habe verstanden: 1. Ich installiere den Bootloader 2. Ich teste (weiß noch nicht wie..) die Funktion 3. Dann setze ich den RSTDISBL-Fuse 4. Das Programm kann dann mit dem Bootloader übertragen werden. Was mir noch nicht klar ist: Ich programmiere zur Zeit über ein USB-ISP Interface. Brauche ich für das Laden des Programmes ein anderes Interface oder womit mache ich das ? Gruß Bernd
Den Bootloader kannst Du wie ein ganz normales Programm über einen beliebigen AVR-tauglichen Programmer in den µC schreiben.
Hallo, das war mir schon klar, aber mit welchem Programm bekomme ich das eigentliche Programm auf den Prozessor ? Bernd
Bernd wrote: > 2. Ich teste (weiß noch nicht wie..) die Funktion Schreib ein Programm, z.B. ne LED blinken lassen, lad es mit dem Bootloader rein und wenn dann die LED blinkt, hats geklappt. > Was mir noch nicht klar ist: Ich programmiere zur Zeit über ein USB-ISP > Interface. Hängt ganz von Bootloader ab. Z.B. einen UART-Bootloader hängste an die COM oder nen COM-USB Adapter. Zum Bootloader gehört meistens noch ein PC-Frontend, dem man das zu brennende Hexfile übergibt. Peter
aus den 3 Pins für den Schalter kannst du auch einen Pin machen indem du mit den Schaltern verschiedene Spannungen anlegst und per ADC misst. Ein Bootloader braucht evtl. die paar Bytes die einem am Ende fehlen ...
Hallo, ich bin seit 6 h nun am Bootloader und bekomme es einfach nicht hin. Was habe ich gemacht ? 1. Bau eines Eindrahtinterfaces gemäß Anleitung 1WIRE.PDF, Verwendung Port 2 2. Anschluß des Interfaces an COM3 per USB-Seriell Adapter 3. Änderung des Bootloaders auf (Name ATTY45.ASM): .nolist .include "tn45def.inc" .equ CRC = 17 ; 17 = additional code size .equ VERIFY = 15 .equ ONEWIRE = 3 ;----------------------------------------------------------------------- -- ; Port definitions ;----------------------------------------------------------------------- -- .equ STX_PORT = PORTB .equ STX_DDR = DDRB .equ STX = PB2 .equ SRX_PIN = PINB .equ SRX_DDR = DDRB .equ SRX_PORT = PORTB .equ SRX = PB2 ;----------------------------------------------------------------------- -- .include "fastload.inc" ;----------------------------------------------------------------------- -- 4. Änderung der Taktfrequenz in FASTLOAD.H .equ XTAL = 1000000 ; 1MHz, not critical 5. Kompilieren avrasm2.exe -fI ATTY45.ASM 6. Brennen mittels AVRFLASH und Änderung FUSEBIT auf SELFPRGEN = ON. Rest standard. 7. ATTINY45 auf mit 1 Drahtinterface verbunden und FBOOT17 gestartet: fboot17 /C3 /TEST.HEX COM 3 at 115200 Baud: / => LEIDER FINDET KEINE VERBINDUNG STATT. Was nun ? Gruß Bernd
Ich habe jetzt noch das Protokoll der COM3 Schnittstelle aufgezeichnet (siehe Anlage), er bekommt einfach keinen Connect. Bernd
Bernd wrote: > .equ XTAL = 1000000 ; 1MHz, not critical > => LEIDER FINDET KEINE VERBINDUNG STATT. Was nun ? Naja, zaubern kann der AVR nicht. Mit 1MHz kriegst Du keine 115200 Baud mehr. Probier mal 4800. Peter P.S.: Bei nicht Batteriebetrieb würde ich immer auf 8MHz setzen.
Gerne, allerdings weiß ich nicht wie ich das einstelle . Wie ruft man die möglichen Parameter von FBOOT auf ? Bernd
Habe ich jetzt durch Probieren gefunden, leider kein Unterschied: D:\AUTOTE~1\ATMELP~1\BOOTLO~1\fboot17>fboot17 /C1 /B4800 /TEST.HEX COM 1 at 4800 Baud: | findet nichts ? Bernd
Hi, ich habe jetzt das ganze auf 8 MHz geändert. CKDIV8 disabled und in Fastload.h Frequenz auf 8000000 gestellt. Leider keine Veränderung. Findet nichts. Bernd PS Wie kann ich prüfen, ob eine Kommunikation überhaupt ankommt, habe OSCAR hier stehen ?
Schon paar Tage her... Bernd wrote: > Gibt es nicht einen einfachen > parallelen Programmer oder so etwas? Der AVR Dragon kann HVSP programmieren.
Bernd wrote: > PS Wie kann ich prüfen, ob eine Kommunikation überhaupt ankommt, habe > OSCAR hier stehen ? Ja, kannst an den Pin PB2 antasten, da muß dann das Paßwort (invertiert) zu sehen sein. Der PC sendet es ständig, bis der AVR antwortet. Peter
Hallo, ich sehe nur ein gleichmäßige Sinusschwingung mit geringer Amplitude. Bernd
Bernd wrote:
> ich sehe nur ein gleichmäßige Sinusschwingung mit geringer Amplitude.
Du hast doch die Eindrahtschaltung an PB2 angeschlossen, wie Du es
definiert hast?
Peter
Ja, natürlich, werde jetzt das 2-Draht Interface probieren. Bernd
Bernd wrote:
> ich sehe nur ein gleichmäßige Sinusschwingung mit geringer Amplitude.
Du mußt die Daten als 0V/5V-Pegel sehen.
Miß mal an Pin3 des DB9, da müssen es mindestens -6V/+6V sein.
Hast Du die richtige COM ausgewählt?
Der ATtiny hat auch VCC=5V angeschlossen?
Peter
Also, zu meinem Stand der Verzweifelung: 2-Draht Interface mit MAX gebaut. Leider das gleiche Symptom, er nimmt keine Verbindung auf (Vorher Programm natürlich auf 2 Drahtkommunikation geändert T45.ASM im Original) Du mußt die Daten als 0V/5V-Pegel sehen. => Sehe leider nichts. Bei 2 Draht auf PIN 2 RS232 Stecker huscht ab und zu ein PEAK vorbei. Miß mal an Pin3 des DB9, da müssen es mindestens -6V/+6V sein. => Leider nicht Hast Du die richtige COM ausgewählt? => Klar, mein GPS EMpfänger wird auf dem gleichen Port erkannt. Der ATtiny hat auch VCC=5V angeschlossen? => JA, natürlich Peter
...wie wär's zur Abwechslung mal mit dem Posten des Schaltplanes (NICHT als JPG!)? Da scheint ja eher was mit der Hardware nicht zu stimmen... Welche Frequenz hat deine oben beobachtete "Sinusschwingung"? Wie sieht das Ganze auf dem Oszi aus, wenn das GPS dran ist?
Bernd wrote: > => Sehe leider nichts. Bei 2 Draht auf PIN 2 RS232 Stecker huscht ab und > zu ein PEAK vorbei. Dann ist der Bootloader aktiv. > Miß mal an Pin3 des DB9, da müssen es mindestens -6V/+6V sein. > => Leider nicht Dann ist was faul im PC. Irgendein Programm blockiert die UART. Oder ein Treiber klingt sich ein, sperrt aber die Funktionen für die DOS-Box. Das kann auch ein Treiber für den LPT-Port sein. Wenn Du wirklich die richtige COM eingestellt hast, dann starte mal das Programm. Wenn Du dann den USB-UART-Adapter abziehst, muß ne Windows-Fehlermeldung kommen. Starte mal nen UART-Sniffer, da muß dann zu sehen sein, wie ständig das Paßwort gesendet wird. Und wenn der DB9-Stecker mit dem Widerstand raufgesteckt wird, muß auch alles zurück kommen. Oder hast Du etwa Vista installiert. Ich weiß nicht, ob Vista noch DOS-Programme erlaubt. Unter XP sollte das Programm aber laufen, hab bisher nichts gegenteiliges gehört. Peter
Hallo, mein letzter Stand gibt Hoffnung. Ich bin zu meinem Nachbarn, der einen PC mit einer echten RS232 hat gegangen und siehe da, es liegt am Übergang USB-RS232. Beim 1-Drahtinterface bekomme ich folgende Fehlermeldung: Q:\Autotechnik\Atmel Programming\Bootloader\fboot17>fboot17 /C1 /B4800 /TEST.HEX COM 1 at 4800 Baud: Connected (One wire) Bootloader VFFFFFFFF.FF Error, wrong device informations Beim 2-Drahtinterface scheint alles okay zu sein: Q:\AUTOTE~1\ATMELP~1\BOOTLO~1\fboot17>fboot17 /C1 /B4800 /TEST.HEX COM 1 at 4800 Baud: Connected Bootloader V1.7 Target: 1E9206 ATtiny45 Buffer: 64 Byte Size available: 3582 Byte CRC: o.k. Elapsed time: 0.27 seconds Muß jetzt mal schauen, ob es eine anderes RS232 Interface gibt. Benutze eines von KEYSPAN, die eigentlich sehr gut sind. Mich wundert nur, dass alle anderen Geräte über RS232 gehen. Bernd PS Noch eine Idee warum das 1-Dahtinterface nicht geht ?
Zum Programmieren muß es /pTEST.HEX heißen (und /vTEST.HEX für Verify). Warum 1-wire nicht geht, weiß ich jetzt auch nicht, 4800 Baud sollte langsam genug sein, mal das Oszi an den Pin hängen. Mit 8MHz sollte 57600Baud eigentlich immer gehen. Peter
Also Aufruf erfolgte mit: fboot17 /C1 /B4800 /pTEST.HEX Programmierung läuft durch: COM 1 at 4800 Baud: Connected Bootloader V1.7 Target: 1E9206 ATtiny45 Buffer: 64 Byte Size available: 3582 Byte Program TEST.HEX: 00000 - 006AB successful CRC: o.k. Elapsed time: 4.73 seconds Jetzt den Verify hinterher fboot17 /C1 /B4800 /vTEST.HEX COM 1 at 4800 Baud: \ und: ER FINDET DEN BOOTLOADER NICHT MEHR ! Wahrscheinlich kommt jetzt der Trick mit dem Reset. Da ich alle 4 Ports benutzen möchte (das war ja eigentlich der Sinn der Sache) weiß ich nicht wie ich das machen soll. An den 4 Ports soll einmal ein Hex-Schalter sitzen, die Kombination 1111 könnte für einen Reset benutzt werden. Stelle mir jetzt folgende Schleife vor: IF ABFRAGE_PORTS=&B1111 GOTO _RESET Dann hängt sich die MCU doch dauerhaft auf, oder ? Bernd
Bernd wrote: > und: ER FINDET DEN BOOTLOADER NICHT MEHR ! Erst das PC-Programm starten, dann den AVR einschalten. Peter
Warum sollte es bei mir so einfach klappen. Ich hole meine Spannung über den USB-Stecker. Also Stecker raus: fboot17 /C1 /B4800 /vTEST.HEX STECKER REIN UND ....... COM 1 at 4800 Baud: Connected Bootloader VFFFFFFFF.FF Error, wrong device informations Das ganz noch einmal: fboot17 /C1 /B4800 /vTEST.HEX STECKER REIN UND ....... COM 1 at 4800 Baud: Connected Bootloader VFFFFFFFF.FF Error, wrong device informations OKAY JETZT STECKER RAUS UND NEU BRENNEN Fboot17 /C1 /B4800 /pTEST.HEX COM 1 at 4800 Baud: Connected Bootloader VFFFFFFFF.FF Error, wrong device informations Prima, muß ich einen Schalter einbauen, oder liegt es an etwas anderem ? Bernd
Bernd wrote: > Ich hole meine Spannung über > den USB-Stecker. Man sollte nicht alle möglichen Fehlerquellen gleichzeitig aktivieren. Vielleicht ist USB zu schwach und die Spannung steigt zu langsam oder bricht kurz ein. Versuch mal ein Netzteil. Und schalte Brownout ein (auf 4,5V) und die längste Resetzeit. Peter
Hi, also Netzteil angeklemmt und Schalter in der +5 V Leitung vom Attiny45 eingebaut. Mit Netzteil hatte der PC Schwierigkeiten wegen "Potentialunterschiede o.ä." es kam auch keine Verbindung zustande. Dann USB-Spannungsversorgung mit Schalter und fboot17 /C1 /B4800 /pTEST.HEX COM 1 at 4800 Baud: Connected (One wire) Bootloader VFFFFFFFF.FF Error, wrong device informations fboot17 /C1 /B4800 /pTEST.HEX COM 1 at 4800 Baud: Connected (One wire) Bootloader VFFFFFFFF.FF Error, wrong device informations fboot17>fboot17 /C1 /B9600 /pTEST.HEX COM 1 at 9600 Baud: Connected (One wire) Bootloader VFFFFFFFF.FF Error, wrong device informations fboot17>fboot17 /C1 /B9600 /pTEST.HEX COM 1 at 9600 Baud: Connected (One wire) Bootloader VFFFFFFFF.FF Error, wrong device informations fboot17 /C1 /B1200 /pTEST.HEX COM 1 at 1200 Baud: Connected Bootloader VFFFFFFFF.FF Error, wrong device informations Mit allen Baudraten wir connected (komischerweise ab und zu im One Wire Modus und ansonsten funktioniert es nicht. Bernd
Also, ich werde die Woche folgender Idee nachgehen. Ich werde den Schalter auf &B1111 abfragen und dann über den Watchdog Timer den Reset starten. Also (Programmidee) z.B. Config Watchdog = 2048 'reset after 2048 mSec .... IF SCHALTER=B&1111 THEN ENDLOS .... ENDLOS: Start Watchdog 'start the watchdog timer For I = 1 To 10 I=1 Next End Die Lösung müßte doch dann dazu führen, dass der Bootloader startet und neue Software geladen werden kann, oder ? Bernd
Bernd wrote: > Mit Netzteil hatte der PC Schwierigkeiten wegen > "Potentialunterschiede o.ä." Was hast Du denn fürn komisches Netzteil? So ein hoher Fehlerstrom kann lebensgefährlich sein, schmeiß es weg! Nimm ne 2-polige Wandwarze mit 7805 dahinter. Dann hast Du ne galvanische Trennung. Ich weiß ja nicht, was Du da für merkwürdige Schaltungen mit USB aufbaust. Nimm nen normalen 10€ USB-RS232 Konverter, die funktionieren wenigstens. Bei nem Prolific muß der Treiber nicht älter als vom 25.07.2005 sein. Peter
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.