Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[AVR] Newbie krijg input niet aan de gang

Pagina: 1
Acties:
  • 420 views sinds 30-01-2008
  • Reageer

  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Na wat gespeeld te hebben met led outputs en timers werd het wel eens tijd voor een input.

Daarom eerst wat basiscode geschreven maar krijg het dus niet aan de gang.
D.w.z. ik zet 5v op de input pin maar de corresponderende output pin gaat niet hoog.

code:
1
2
3
4
5
6
7
8
#include <avr/io.h>

void main(void){
DDRA=0; // INPUT
DDRB=255; //OUTPUT

while(1)PORTB=PINA;
}


Dit alles op een atmega16 met avr-gcc. Alle hardware werkt goed maar mijn ledje gaat niet aan.
Dus ik zou verwachten dat als je +5V op PINA.0 zet er dan 3.3V (of 5V??) uit PINB.0 komt en dus mijn ledje aan gaat?

  • virus.elektro
  • Registratie: Januari 2002
  • Laatst online: 20:33

virus.elektro

profesionele monitor sloper

wat voor software gebruik je. Bij AVR studio kan je in de simulatie of je code werkt, je kan namelijk met de hand in de software het pinnetje hoog zetten en dan kijken wat er gebeurt.

wat gebruik je om de atmega16 te programmeren?

elektrotechniek is leuk (nog wel). ik ga dus weer verder met leuke dingen ontwerpen. amd 2200+ 256mb 333mhz,gf4 440mx, 120gb,16X dvd. jarr-url


  • Ibex
  • Registratie: November 2002
  • Laatst online: 07:30

Ibex

^^ met stom.

it0 schreef op dinsdag 21 augustus 2007 @ 13:32:
Na wat gespeeld te hebben met led outputs en timers werd het wel eens tijd voor een input.

Daarom eerst wat basiscode geschreven maar krijg het dus niet aan de gang.
D.w.z. ik zet 5v op de input pin maar de corresponderende output pin gaat niet hoog.

code:
1
2
3
4
5
6
7
8
#include <avr/io.h>

void main(void){
DDRA=0; // INPUT
DDRB=255; //OUTPUT

while(1)PORTB=PINA;
}


Dit alles op een atmega16 met avr-gcc. Alle hardware werkt goed maar mijn ledje gaat niet aan.
Dus ik zou verwachten dat als je +5V op PINA.0 zet er dan 3.3V (of 5V??) uit PINB.0 komt en dus mijn ledje aan gaat?
Je code lijkt in ieder geval te kloppen. Als je microcontroller een Vcc van 5V krijgt, zal er ook 5V uit een pin komen die "aan" staat. Als je microcontroller een Vcc van 3.3V krijg, weet ik niet of het wel zo gezond is om 5V aan een inputpin te hangen :/.

Even wat banaals: Je led is toch goed aangesloten neem ik aan?
uC ---- weerstand ---- (+) led (-) --- GND

[ Voor 5% gewijzigd door Ibex op 21-08-2007 14:38 ]

Archlinux - Rode gronddingetjes zijn lekker - Komt uit .be


  • sebastius
  • Registratie: September 2000
  • Laatst online: 18-11 21:59

sebastius

Laten we lekker link gaan doen

Tip: Zet lekker de interne pull-up weerstand aan op de ingang, en trek met je knopje de pin naar massa toe. Dat is vaak een stuk eenvoudiger aan de praat te krijgen.

Sowieso moet je bij PINA nog een pin-nummer aangeven dacht ik.

  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Ibex schreef op dinsdag 21 augustus 2007 @ 14:36:
[...]

Je code lijkt in ieder geval te kloppen. Als je microcontroller een Vcc van 5V krijgt, zal er ook 5V uit een pin komen die "aan" staat. Als je microcontroller een Vcc van 3.3V krijg, weet ik niet of het wel zo gezond is om 5V aan een inputpin te hangen :/.

Even wat banaals: Je led is toch goed aangesloten neem ik aan?
uC ---- weerstand ---- (+) led (-) --- GND
Ik wist niet meer of het 3.3 of 5v was, maar 5v dus. Als ik 5v direct op de led zet dan werkt de led wel.

De leds hebben geen weerstanden er tussen zitten, de verkoper had speciale leds?? die dat niet nodig hadden ofzo. Maar daar had ik me nog niet zo in verdiept waarom dat zo was.

Nu schiet me iets te binnen, ik heb alleen PIN 31 GND aangesloten en niet pin 11 GND, maakt dat nog uit ?

Overigens gebruik ik een USB programmer (mysmartUSB) en werk onder linux dus met kontrollerlab ->avr-gcc

Met SimulAVR heb ik nog niet gewerkt...

  • Atlas
  • Registratie: Mei 2002
  • Niet online

Atlas

Ik flits niet meer terug!

Ja hang ze eens beide aan de GND :)

En als je nu zegt

code:
1
2
3
4
5
6
7
8
9
While (1)
{

if  ((PINA&0x01)==0x01)
{
PORTB.1 = 1;
}

}

Oid :P

Hiermee kijk je of PinA.1 (ik weet niet of je dat zo mag schrijven, vandaar de &0x01) gelijk is aan 0x01, en als dat zo is, dan maakt hij PinB.1 hoog :)

Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.


  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 21:12

SA007

Moderator Tweaking
sebastius schreef op dinsdag 21 augustus 2007 @ 15:23:
[...]

Sowieso moet je bij PINA nog een pin-nummer aangeven dacht ik.
Nee, is gewoon een byte met de waardes van pin 0 tot 7.

Doe regelmatig dingen als if (PINB == 0) etc om te controleren dat daar alle bits uit zijn.

  • Ibex
  • Registratie: November 2002
  • Laatst online: 07:30

Ibex

^^ met stom.

it0 schreef op dinsdag 21 augustus 2007 @ 16:07:
Nu schiet me iets te binnen, ik heb alleen PIN 31 GND aangesloten en niet pin 11 GND, maakt dat nog uit ?
Als ik me de mega16 goed kan voorstellen is pin 31 de AGND. Je moet dus effectief pin 11 zeker aansluiten op de GND. Ook moet je de Vcc naast pin 11 aansluiten op de 5V, en niet enkel de pin naast pin 31.

Grote kans dat het hieraan ligt, hoewel het me dan raar lijkt dat je andere voorgaande experimentjes wel lukten.

Archlinux - Rode gronddingetjes zijn lekker - Komt uit .be


  • Sissors
  • Registratie: Mei 2005
  • Niet online
zal ff nakijken, maar uit mijn hoofd is pin 11 idd de ground die je moet hebben (of ergens daar in de buurt). Rond pin 10 heb je ground, voeding en klok. Rond pin 30 heb je voeding en aarde voor AD converter, en ook nog Vref voor AD converter.

Hier pin lay-out:
Afbeeldingslocatie: http://www.futurlec.com/Pictures/ATMega16.GIF
De voeding en aarde van linkerkant moet je aansluiten.

EDIT: ff nagemeten bij atmega 32, de aarde is intern doorgelusd. Netter om aarde aan pin 11 te verbinden, maar op zich maakt het denk ik niks uit. (niet 100% zeker daarvan). Heb je voeding wel aan goede kant te pakken?

[ Voor 43% gewijzigd door Sissors op 21-08-2007 18:44 ]


Verwijderd

code:
1
2
3
4
5
6
7
8
#include <avr/io.h>

void main(void){
DDRA=0; // INPUT
DDRB=255; //OUTPUT

while(1)PORTB=PINA;
}
1. Juiste device id meegegeven (-m -m16) en define geinclude om de juiste device header file (automatisch) te includen?
2. Optie -O1 mee geven aan gcc?
3. Heeft GCC de assignment PORTB=PINA weg geoptimaliseerd?

  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Verwijderd schreef op dinsdag 21 augustus 2007 @ 21:38:
[...]


1. Juiste device id meegegeven (-m -m16) en define geinclude om de juiste device header file (automatisch) te includen?
2. Optie -O1 mee geven aan gcc?
3. Heeft GCC de assignment PORTB=PINA weg geoptimaliseerd?
1 ja
2 -O0
3 geen flauw idee, hoe zie je dat ?

Met de pull-up truuk werkt het overigens wel, nu nog eens de normale manier proberen.

  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

it0 schreef op dinsdag 21 augustus 2007 @ 16:07:
De leds hebben geen weerstanden er tussen zitten, de verkoper had speciale leds?? die dat niet nodig hadden ofzo.
Beetje vaag iets, ik zou het gewoon met weerstanden doen.
furby-killer schreef op dinsdag 21 augustus 2007 @ 18:40:
ff nagemeten bij atmega 32, de aarde is intern doorgelusd. Netter om aarde aan pin 11 te verbinden, maar op zich maakt het denk ik niks uit. (niet 100% zeker daarvan).
Dat ze intern een verbinding hebben zegt weinig. Alle GND/VCC pinnen moeten aan de voeding, en elk paar moet een 100nF naast zich hebben. De pinnen zitten er niet voor niets, ook al zijn ze misschien verbonden kunnen er meer pinnen nodig zijn tegen storingen, of gewoon omdat de bondwires (van chip naar pin intern) de stromen anders niet kunnen hebben. Of dat ze verschillende delen van stroom voorzien die wel enigszins verbonden zijn maar niet krachtig genoeg voor een voedingslijn.

Ook de AVCC pin moet ook op VCC, of je de ADC nou gebruikt of niet. Het is mede de digitale voeding voor PORTA.
Verwijderd schreef op dinsdag 21 augustus 2007 @ 21:38:
3. Heeft GCC de assignment PORTB=PINA weg geoptimaliseerd?
Dit gebeurt niet, PORTB en PINA zijn als volatile gedeclareerd zodat de compiler er vanuit gaat dat ze extern gewijzigd worden of externe invloed kunnen hebben. Zoiets mag de compiler dan niet weg optimaliseren, elke read en write moet exact uitgevoerd worden zoals in de code staat.

[ Voor 16% gewijzigd door madwizard op 21-08-2007 22:18 ]

www.madwizard.org


  • Sissors
  • Registratie: Mei 2005
  • Niet online
Lijkt mij wel heel vreemd als dat idd weggeoptimaliseerd wordt. Je kan altijd nog hex code door deassembler halen.
Dat ze intern een verbinding hebben zegt weinig. Alle GND/VCC pinnen moeten aan de voeding, en elk paar moet een 100nF naast zich hebben. De pinnen zitten er niet voor niets, ook al zijn ze misschien verbonden kunnen er meer pinnen nodig zijn tegen storingen, of gewoon omdat de bondwires (van chip naar pin intern) de stromen anders niet kunnen hebben. Of dat ze verschillende delen van stroom voorzien die wel enigszins verbonden zijn maar niet krachtig genoeg voor een voedingslijn.

Ook de AVCC pin moet ook op VCC, of je de ADC nou gebruikt of niet. Het is mede de digitale voeding voor PORTA.
Dat zeg ik dus ook, je kan het beter wel doen. (al zal hij het in sommige situaties ook best doen als je het niet doet, het is gewoon beter om het wel te doen).

Als portA hem inderdaad nodig heeft, heeft de TS dat dan ook gedaan? Beide Vcc met voeding verbonden?

  • elhopo
  • Registratie: December 2005
  • Laatst online: 18-11 13:49
die ledjes zijn vrij standaard. Je hebt 5v en 12v uitvoeringen, de weerstand zit al op de chip.

als jij aangeeft dat de schakeling wel reageert wanneer je een pullup weerstand naar vcc gebruikt, lijkt me dat de avr een interne pullup heeft...

uit de datasheet van de atmega16:

Port pins can provide internal pull-up resistors (selected for each bit).
(verderop)
In addition, the Pull-up Disable – PUD bit in SFIOR disables the
pull-up function for all pins in all ports when set.

dus als je 5v extern aansluit ga je van 5v naar 5v en gebeurt er niets. wellicht als je zonder externe pullup naar 0 schakelt, zal hij het wel doen... oplossing is dus genoemde bit setten of schakelen naar 0...

Blijkt dat citroenvlinders helemaal niet naar citroen smaken.


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Sorry elhopo, ik snap je verhaal niet helemaal.

Maar heb nu iets raars voor met de volgende code
code:
1
2
3
4
5
6
7
int main( void )
{
    DDRB =255;  //uitgang voor switchen
    DDRA=0; //ingang     
    PORTA=0; //interne pull-up laag gezet             
    while ( 1){PORTB=PINA;}
}


Als ik nu naar de chip wijs gaan de lichtjes aan en dan weer uit?????

Ook als ik met mijn vingertop op de chip leg dan gaan alle lichtjes aan.

Ok, het werkt ook als ik 5v op de pin zet, daarmee gaat hij ook aan.

Kan me niet voorstellen dat er 5v uit mijn lichaam komt, de multimeter zegt ook van niet???

Waarom gebeurt dit? ( voor de duidelijkheid, er is niks aangesloten op de pinnen van DDRA!)

[ Voor 5% gewijzigd door it0 op 22-08-2007 22:39 ]


  • Sissors
  • Registratie: Mei 2005
  • Niet online
Zoals je zegt, komt 5V uit je lichaam. Je pull ups staan uit. Oftewel de ingangen zweven in het rond. (het is redelijk geluk voor jouw dat ze uberhaupt uit staan als je niks doet, ze hadden ook aan kunnen staan). Blijkbaar duwt jouw lichaam ze naar hogere spanning. Probleem is dat zolang de ingang zweeft, je niks over zijn gedrag kan zeggen. Probeer anders eens met 1 hand die pinnen aan te raken, en de andere de aarde van je circuit. Ik denk dat de leds dan wel uit kunnen gaan.

Wat je beter kan doen, is de pull ups aan zetten. En dan de ingangspinnen met de aarde wel of niet te verbinden. Als je dan met aarde hebt verbonden, heb je duidelijke 0V. Als je niet met aarde hebt verbonden trekt de pull up de spanning naar de voeding, oftewel een duidelijke 5V.


Dit is btw de oplossing voor luie medemens. Als je huidige configuratie wilt behouden, moet je weerstandje tussen elke ingangspin en aarde solderen. (grote maakt niet veel uit, pak 10k ofzo).

[ Voor 11% gewijzigd door Sissors op 22-08-2007 22:42 ]


  • elhopo
  • Registratie: December 2005
  • Laatst online: 18-11 13:49
De AVR heeft een interne pullup weerstand naar de 5v. Deze heb je nu in de source uitgezet, dus wordt de ingang niet naar hoog of laag getrokken, en weet je niet wat er nu op de ingang staat. Door statische electriciteit en magnetische velden in de lucht worden de ingangen nu geschakeld 9dit gebeurt met micro-ampere's

Dit is iets wat je niet wilt als je ook daadwerkelijk een product gaat maken. Beter is het om altijd een bekende staat op je ingang te hebben. Een oplossing is om idd een pulldown weerstand aan te geven, zoals furby-killer aangeeft, maar dan moet je de interne pullup uit laten. Alternatief is om de interne pullup aan te zetten en met een transistor naar aarde te schakelen. Schema's zijn denk ik wel verder te vinden op internet.

mocht het nog niet duidelijk zijn, geef dan even aan wat je niet snapt, dan probeer ik het nog beter uit te leggen.

Blijkt dat citroenvlinders helemaal niet naar citroen smaken.


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
De mist begint weg te trekken, ik ben meer een programmeur en dus erg weinig feeling voor hardware.

Maar om de laatst genoemde code te doen werken begrijp ik dat je het volgende moet doen:
code:
1
2
3
Vcc------ switch ----------------------\
                                       |----------- PIN op de Atmega
Gnd------------[weerstand 10k]---------/


En dan begrijp ik dat de weerstand er puur voor is om het zaakje niet te laten kortsluiten?

  • elhopo
  • Registratie: December 2005
  • Laatst online: 18-11 13:49
klopt allemaal, daarom heet het een pulldown weerstand. Wanneer er geen 5v direct op de pin staat, trekt de weerstand de ingang naar de 0v. Zodra er 5v op staat, is de weerstand zodanig hoog dat je kan stellen dat er 5v op staat.

overigens is het netter / beter om een pullup weerstand te gebruiken (die er standaard al in zit) omdat je zo nooit de voedingsspanning rechtstreeks op een pin zet. Je schakelt dan je ingang naar GND. kan het ook niet fout gaan met kortsluiting oid...

schemaatje
code:
1
2
3
4
5
6
7
8
9
10
11
VCC ________________
           _|_
           |  |  R1 (10k)
           |__|
             |
In  _________|____
                 |
                 \
                  \  (switch)
                 |
GND _____________|

[ Voor 3% gewijzigd door elhopo op 23-08-2007 13:52 ]

Blijkt dat citroenvlinders helemaal niet naar citroen smaken.


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Ik ben weer vrolijk verder gegaan, maar nu lijkt het weer miserie met een hardware probleem.

Zie weer mijn code
code:
1
2
3
4
5
6
7
8
9
10
main(){
while(1){
DDRA=255;
DDRC=255;
DDRD=255;
PORTA=255;
PORTC=255;
PORTD=255;
}
}


echter op pin PC2-PC6 komt niet voldoende stroom op te staan (de ledjes gaan niet aan)

VCC+AVCC zijn aangesloten alsmede de 2 grounds pin 11 en 31.

Ik heb het ook met een andere atmega16 geprobeerd maar ik krijg hetzelfde resultaat.

De leds zijn niet stuk..
PC0=2.4v
PC1=2.2v
PC2=1.5v
PC3=1.7v

Er komt 4.05v binnen, de spec zegt dat 4.7v minimaal benodigd is, is dit een gevolg daarvan?
Waarom functioneert de rest dan wel naar behoren?

  • jerbro
  • Registratie: September 2001
  • Niet online
Dat PC2 tot en met PC5 niet de goede spanning geven kan komen omdat deze pinnen als tweede functie een JTAG interface zijn. Deze kan met behulp van de fuses aan en uit gezet worden, en staat standaard aan. Dus als je sinds de aankoop van de microcontroller deze fuses niet gewijzigd hebt klopt het inderdaad dat ze niet doen wat je zou verwachten.

  • Ibex
  • Registratie: November 2002
  • Laatst online: 07:30

Ibex

^^ met stom.

it0 schreef op zondag 02 september 2007 @ 22:40:
Er komt 4.05v binnen, de spec zegt dat 4.7v minimaal benodigd is, is dit een gevolg daarvan?
Waarom functioneert de rest dan wel naar behoren?
Indien dit inderdaad zo is, dan kan het best een gevolg zijn hiervan. Wanneer een microcontroller te weinig spanning krijgt, is het vrij onvoorspelbaar wat hij wel of niet zal doen. Probeer eerst eens de microcontroller minimaal 4,7V te geven. Wellicht werkt het dan wel prima :).

Archlinux - Rode gronddingetjes zijn lekker - Komt uit .be


  • mauws79
  • Registratie: Augustus 2007
  • Laatst online: 17-11 13:59
It0 Ik volg je topic ook met interesse, zit een beetje met een gelijk probleem.
Ik begrijp alleen niet hoe je de ingangsspanning goed kan regelen m.b.v.
een weerstand als je de interne weerstand van de avr niet weet. (toch?)
Ik krijg namelijk een +12v signaal, heb je al een idee hoe je dit als input
kan gebruiken zonder dat er rook uit de avr komt?
(Elhopo's antwoord is duidelijk maar gaat het hier ook op?). Hoe bereken
je de weerstand (ok 7v wegwerken) als je de (maximale) ingangsstroom niet weet..?

  • Atlas
  • Registratie: Mei 2002
  • Niet online

Atlas

Ik flits niet meer terug!

Wat dacht je van gewoon 5 volt aanbiedien aan de AVR? ;)
Pak gewoon een LM7805 en prop daar 12 volt, zodat je er keurig netjes 5 volt uit krijgt. Klooien met weerstanden om de spanning te bepalen wil je niet :P

Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.


  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 29-10 06:07

Sprite_tm

Semi-Chinees

Een handig truukje hiervoor: Er zit in de input-pinnetjes van de AVR meestal een ESD-weerstand die de spanning op het pinnetje limiteert tot iets meer dan de voedingsspanning. Die kan je misbruiken: kies je weerstand zo dat er door die diode zo weinig gaat dat je 'm niet opblaast; zeg maximaal 1mA. Daarmee kom je uit op een weerstand van (12-5)/0.001=7K. De ervaring leert dat meer weerstand hier ook wel kan: pak een mooie weerstand van 22K en het zou prima moeten werken.

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


  • klown
  • Registratie: November 2001
  • Laatst online: 07:53

klown

geek

weerstand+zenerdiode ervoor lijkt mij een mooie oplossing :>

MSI K7T266 Pro2|AMD Athlon XP 1800+|512 MB DDR|Leadtek Geforce 2 Ti 64 MB DDR|LG 16x DVD|IBM 60 GB 7200 rpm HD|Creative soundworks DTT3500 speakers|IIyama A902MT|Wacom Graphire 2|Logitech Mouseman Dual optical & MX500|Creative soundbl. Audigy|Trust sp


  • mauws79
  • Registratie: Augustus 2007
  • Laatst online: 17-11 13:59
Bedankt voor de reacties, ik krijg al inspiratie.
(Ik zat eerst te denken aan een opzet die lijkt op de standaard ingangstrap van een transistor, daar pak je toch ook een hogere voedingsspanning om op de 0.6V te komen... ). Maak ik hier een denkfout ? Met 2 weerstanden in de goede verhouding staat er dan toch 5 volt op
de ingang? Wellicht een beginners probleempje maar het is wat lastig om binnen in de
avr te kijken :(

  • klown
  • Registratie: November 2001
  • Laatst online: 07:53

klown

geek

dat is gewoon een spanningsdeler inderdaad, dat kan ook, aangenomen dat de ingang van de AVR hoogohmig is

MSI K7T266 Pro2|AMD Athlon XP 1800+|512 MB DDR|Leadtek Geforce 2 Ti 64 MB DDR|LG 16x DVD|IBM 60 GB 7200 rpm HD|Creative soundworks DTT3500 speakers|IIyama A902MT|Wacom Graphire 2|Logitech Mouseman Dual optical & MX500|Creative soundbl. Audigy|Trust sp


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Ik heb net even de jtag fusebit uitgezet en werkt alles perfect!

Ik moet zeggen dat kontrollerlab erg prettig werkt!

  • elhopo
  • Registratie: December 2005
  • Laatst online: 18-11 13:49
mauws79 schreef op maandag 03 september 2007 @ 19:56:
Bedankt voor de reacties, ik krijg al inspiratie.
(Ik zat eerst te denken aan een opzet die lijkt op de standaard ingangstrap van een transistor, daar pak je toch ook een hogere voedingsspanning om op de 0.6V te komen... ). Maak ik hier een denkfout ? Met 2 weerstanden in de goede verhouding staat er dan toch 5 volt op
de ingang? Wellicht een beginners probleempje maar het is wat lastig om binnen in de
avr te kijken :(
spanningsdeler lijkt mij het handigst, vooropgesteld dat de ingang idd 12v is, en niet soms hoger en soms lager. Je hebt dan al meteen je pulldown naar aarde. Max input is Vcc +0,5 dus 12V met een weerstand aansluiten lijkt me geen goed idee... (de ingang is wel beveiligd, maar in de datasheet, pag 293 staat deze max input, je kan je beter hier aan houden)
alternatief is met een torretje naar GND schakelen, en de interne pullup te gebruiken. datasheet zegt Input low voltage is max 0,2 vcc dus dat moet lukken (bij 5v is dat dan 1 v) de 12v is dan minder kritisch.

Blijkt dat citroenvlinders helemaal niet naar citroen smaken.


  • mauws79
  • Registratie: Augustus 2007
  • Laatst online: 17-11 13:59
Via de tor naar gnd schakelen is op zich wél een nette oplossing.. althans veilig.
De spanningsdeler (2 weerstanden of zener constructie) zou wel kunnen werken,
alleen is het risico dat de boel opgeblazen wordt veel groter (Ik weet het, een opgeblazen
avr hoort bij het leertraject..). Ik ga voor de tor constructie :)

  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Ben nu bezig met een 3d led cube te bouwen van 3x3x3 dit alles charlieplexed zodat het met een attiny13 kan worden aangestuurd, nu snap ik ook waarom mensen dit altijd multiplexen ipv charlieplexen.

Nu wil ik de attiny kunnen programmeren terwijl het is aangesloten op de leds. Dit lijkt me op zich een probleem omdat alle io poorten via de leds op elkaar zijn aangesloten. is het dan voldoende om tussen de io poorten en de leds een weerstand van 1k ohm te zetten en de programmer direct op de spi pinnen of krijg je dan nog steeds kortsluiting?

  • mauws79
  • Registratie: Augustus 2007
  • Laatst online: 17-11 13:59
Het zou toch zo moeten zijn dat zodra de reset pin naar GND wordt getrokken de pinnen niet meer als output worden gebruikt. Daarnaast staat in de datasheet dat de aanbevolen procedure zó is dat het programmeren gebeurt als onderdeel van het opstarten van de avr.

quote:
Apply power between VCC and GND while RESET and SCK are set to “0”.

Zodra dat ding boot detecteert het dus een reset situatie en zal (mijn inziens) de avr
niet in zijn reguliere programma komen (welke dus de poorten als output gebruikt).
1k weerstanden lijken mij meer een extra veiligheidsmaatregel als het ding na het
programmeren weer opstart. (hangt dit ook niet van het type programmer af?)

  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Ik snap wat je zegt maar volgens mij is er dan nog steeds een probleem. Ik heb de volgende schakeling (ongeveer).

code:
1
2
3
4
5
6
7
8
-----------------|       Programmer miso
attiny13         |        |
miso             |---------|--------- [1k ohm] ------ |-------------------|
                  |                                 [+ LED -]         [- LED +]
mosi             |----------|-------- [1k ohm] ------- |------------------|
                 |          |
                 |          Programmer mosi
-----------------|


Mag dit?

  • mauws79
  • Registratie: Augustus 2007
  • Laatst online: 17-11 13:59
Ah nu begrijp ik je. Die weerstanden lijken mij in ieder geval een goed idee
anders gaat 't niet helemaal goed denk ik. Verder hangt het een beetje van het
ingangscircuit (en het hoog/laag zijn van de betreffende poorten) van de avr
af wat het bovenstaande schema gaat doen. (bij een hoogohmige ingang (+- 30k)
zal de 1k een makkelijke route vormen uitgaande van een potentiaalverschil tussen
miso en mosi. Ofwel iemand van de mods een idee?
(waarom ga je voor je cubus niet shiften??)

  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 29-10 06:07

Sprite_tm

Semi-Chinees

Ik denk dat het van je programmer afhangt, maar waarschijnlijk wel kan. De outputs van de AVR kunnen zo'n 20mA leveren, waarvan de 1K at max 5mA naar de ground kan afvoeren. Betekent dat je spanning nog wel iets inzakt maar waarschijnlijk niet genoeg om je programmer in de war te maken. Je programmer moet echter ook wel die >>5mA kunnen leveren voor de signalen naar de AVR toe. De meeste kunnen dat echter wel.

Ow, en als je 'm af hebt: PICS!!! Lijkt me leuk om te zien, zo'n micro-cubusje.

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
@mauws79? Wat is shiften ? Is dat hetzelfde als multiplexen?

@sprite_tm ik heb een mysmartusb programmer Gister achtergekomen dat avrdude 5.2 geen attiny13 ondersteunt met de mysmartusb(=arv910). Maar het is nu gelukt dus ik hoop binnenkort met pics aan te komen :)...

  • mauws79
  • Registratie: Augustus 2007
  • Laatst online: 17-11 13:59
Over shiften kan je hier gelukkig mega veel artikelen vinden. Het komt er in feite op neer
dat je van je avr niet zoveel IO poorten nodig hebt om een groter aantal IO poorten uit
te kunnen sturen (voor je cubus dus!) . Als je zoekt op LED CUBE in combinatie met
de 74H595 vindt je hier echt hele goed info! (Er zijn zo te zien al heel wat mensen met
led cube's bezig geweest.. :) )

  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Ja, maar er is nog niemand geweest die een cube dmv charlieplexing heeft gebouwd, zeker niet met een attiny13. Ze hebben het er wel over, maar dat is weer wat anders.

Alles gaat goed, ik heb nu wat animatieroutines geschreven waar ik wel gelukkig mee ben.

Helaas zijn de ledjes nog vrij dim, ik wil daarom ook de weerstanden er weer tussenuit halen. Ik lever nu ook 4,5 volt aan de AVR zou het voltage van IO pinnen ook proportioneel omhoog gaan als ik 5 volt aanlever met hetzelfde amparage?

  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

De spanning zal vast wel omhoog gaan, of het helemaal naar verhouding is weet ik niet, kijk eens in het datasheet. Uitgangsspanning is ook sterk afhankelijk van de stroom die je eruit trekt.

Weerstanden zul je moeten houden, de AVR limiteert de stroom niet. Ook mag je niet over de maximale stroom heen per pin (40mA echt absoluut maximum, liever een stuk minder), dus je kunt die 3 LEDs bijvoorbeeld op 10mA per stuk zetten. Nadeel is dat als je ISP daar ook op zit dat ook 10mA moet gaan leveren en dat kan nog wel eens veel zijn (of zelfs 30mA met een beetje pech).

[ Voor 3% gewijzigd door madwizard op 17-09-2007 11:47 ]

www.madwizard.org


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Ik staar me blind in de datasheet.

Ik stop 5,5v@150mA (4 zinc batterijen) in de tiny, dat ding draait standaard op 9.6mhz.

Maar ik krijg er niet meer dan 2.2V uit.

De sheet heeft het over (DC Charastaristics) over Vol (voltage output low) en Voh (voltage output high), maar ik snap niet hoe ik van 2.2V naar 4.2 V moet gaan?

Ik zie geen fuse of register waarmee ik dat kan instellen?

Als ik de grafiekjes mag geloven gaat de voltage omhoog van de ouput pin als de mA omlaag gaat, maar dan moet ik van 150mA naar 4mA gaan wat ik bijzonder weinig vind.

Kortom kunnen jullie weer een newbie op gang helpen.

  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 29-10 06:07

Sprite_tm

Semi-Chinees

Vreemd, dat zou toch echt genoeg moeten wezen... Werkt het geheel uberhaupt wel als je er een normale 5V-voeding aanhangt? Verder iets wat vaak helpt bij Vage voedings-problemen: Heb je ontkoppelcondo's over je voeding staan? Dus eentje van 100nF (oid, waarde boeit niet zo heel veel) tussen de Vcc en gnd van het IC (en ook fysiek dicht daarbij plaatsen aub) en een condo van 10uF of 100uF op een handige plek over de voedingsspanning.

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Ik heb helaas geen condo's liggen omdat uit te proberen, maar voor de rest doet de avr het prima

Tenminste alle animaties die ik heb geprogrammeerd worden getoond, alleen is de licht opbrengst ontzettend zwak , het is een 5v Led, als ik 2 batterijen gebruiik voor een led dan zijn ze fel, dus 2,8v is genoeg maar ik moet gewoon wat meer prik uit die pinouts krijgen :(

of het nu met de 4 batterijen is of via usb(4.6@250mA) van de programmer. Waarom zou een condensator dat verbeteren?

  • elhopo
  • Registratie: December 2005
  • Laatst online: 18-11 13:49
Stuur je de LED's rechtstreeks aan met de attiny? volgens de specs mag je de poorten maar max met 10 mA belasten. gebruik anders een schakeltor ofzo...

Blijkt dat citroenvlinders helemaal niet naar citroen smaken.


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
elhopo schreef op donderdag 04 oktober 2007 @ 09:03:
Stuur je de LED's rechtstreeks aan met de attiny? volgens de specs mag je de poorten maar max met 10 mA belasten. gebruik anders een schakeltor ofzo...
Een schakeltor is zo'n 3 potige ding met zo'n platte kant?

Moet ik er dan geen 2 plaatsen vanwege vanwege charlieplexing, als dat uberhaupt al gaat?

Hoe meet ik eigenlijk met hoeval mA ik een poort belast?
Is dat de min van de batterij pakken plus aan led hangen en daar dan aan het andere pootje meten?
En dan naar het verschil kijken zonder led ?

[ Voor 19% gewijzigd door it0 op 04-10-2007 12:06 ]


  • elhopo
  • Registratie: December 2005
  • Laatst online: 18-11 13:49
ja, dat is 'm... Je zet hem aan de uitgang van de attiny, en dan zou het moeten werken. Of dat werkt met charlieplexing weet ik niet, geen ervaring mee, maar ik weet wel dat je de Attiny tot max 10 mA per poort mag belasten. Als je meer vraagt is het logisch dat de spanning inzakt. Plaatje op pag 196 vd datasheet geeft dat al aan: bij 50 mA heb je ong. 3.45 V... Hoeveel schakel je eigenlijk...? uit de datasheet:
Although each I/O port can source more than the test conditions (10 mA at VCC = 5V, 5 mA at VCC = 3V) under steady state conditions (non-transient), the following must be observed:
1] The sum of all IOH, for all ports, should not exceed 60 mA. If IOH exceeds the test condition, VOH may exceed the related specification. Pins are not guaranteed to source current greater than the listed test condition.

(dus per poort max 10 mA, totaal max 60 mA... NB de Atmega8 kan wat meer hebben:

Although each I/O port can source more than the test conditions (20 mA at Vcc = 5V, 10 mA at Vcc = 3V) under steady state conditions (non-transient), the following must be observed:
PDIP Package:
1] The sum of all IOH, for all ports, should not exceed 200 mA.
2] The sum of all IOH, for port A0 - A7, should not exceed 100 mA.
3] The sum of all IOH, for ports B0 - B7,C0 - C7, D0 - D7 and XTAL2, should not exceed 100 mA.
)

Blijkt dat citroenvlinders helemaal niet naar citroen smaken.


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
Ik zou verwachten dat je altijd maar 1 LED aanstuurt tenslotte is 1 pin VCC,1 pin GND en de rest als weerstand. Of lekt er gewoon een hoop weg door die moeilijke paden?

  • elhopo
  • Registratie: December 2005
  • Laatst online: 18-11 13:49
Je geeft zelf aan dat je schakeling met 4 batterijen 150 mA verbruikt, toch? dat is niet het verbruik van de Attiny alleen lijkt me... Wellicht ergens sluiting ofzo... Zonder schema's e.d. kan ik je iig niet verder helpen, en blijft het alleen maar een gok, zo van: kijk hier of daar eens naar... Pluis het schema gewoon eens goed uit, wellicht kom je dan al wat verder...

Blijkt dat citroenvlinders helemaal niet naar citroen smaken.


  • it0
  • Registratie: April 2000
  • Laatst online: 16-08 10:24

it0

Mijn mening is een feit.

Topicstarter
elhopo schreef op donderdag 04 oktober 2007 @ 14:26:
Je geeft zelf aan dat je schakeling met 4 batterijen 150 mA verbruikt, toch? dat is niet het verbruik van de Attiny alleen lijkt me... Wellicht ergens sluiting ofzo... Zonder schema's e.d. kan ik je iig niet verder helpen, en blijft het alleen maar een gok, zo van: kijk hier of daar eens naar... Pluis het schema gewoon eens goed uit, wellicht kom je dan al wat verder...
De batterijen doen 150mA, zoals eerder aangegeven weet ik niet hoe je de mA van een schakeling kan meten. Ik zal waarschijnlijk wel op zo'n tor uitkomen...
Pagina: 1