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
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 ?
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.
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
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
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.
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 ?
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
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
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
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