ATTINY45 INPUT PORTB5 funktioniert nicht

Gast #674307
Lesenswert?

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
Gast #674319
Lesenswert?

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 ?
#674369
Lesenswert?

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.
#674404
Lesenswert?

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
Gast #674573
Lesenswert?

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
#674651
Lesenswert?

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
Gast #674934
Lesenswert?

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 ...
Gast #679908
Lesenswert?

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
#679987
Lesenswert?

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.
Gast #680004
Lesenswert?

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 ?
#680402
Lesenswert?

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
Gast #680443
Lesenswert?

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
#680555
Lesenswert?

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
Gast #682168
Lesenswert?

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 ?
Gast #682410
Lesenswert?

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
Gast #682472
Lesenswert?

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
#682494
Lesenswert?

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
Gast #682531
Lesenswert?

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
Gast #682702
Lesenswert?

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
#682795
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren