Richiesta aiuto

Buonasera.
Vorrei chiedere aiuto in merito a questo semplice problemino.
ho da risolvere questo problema:
Microprocessore da usare Tiny13V-10SU
L’uscta PB1 (pin6) è sempre attiva con una corrente d’uscita di 90mV.
Penso che dovrei programmare l’uscita di PB1 con un valore di PWM.
Quando l’ingresso PB3 (pin2) diventa basso(normalmente è alto), si attiva l’uscita di PB0 che va alta finchè l’ingresso rimane basso, dopo rimane alta per 20sec e poi si spegne.
data la mia poca esperienza con AVR per programmare il Tiny13, ho seguito un po di guide ma mi sono arenato.
Chiedo se qualcuno ha qualche soluzine. Posto sotto il codice fin dove sono arrivato io.

#include <avr/io.h>
#include <util/delay.h>      	//The delay functions/routines
# define F_CPU 1000000UL    	//This says to the compiler at what frequency our Atmega is running, in this case its 16Mhz


#define led_acc PB1
#define Out_0 PB0
#define pin_in PB3
char var = 0;
int app = 0;

int main(void)
{ 	
	DDRB OR (1 << led_acc)
    DDRB OR (1 << Out_0)
	DDRB & = ~ (1 << pin_in)
    while (1) 
    {
		PORTB | = (1 << led_acc); // pin1 sempre acceso
		if(readPORTB()==1){        
			PORTB ^=(1<<Out_0);    	
			app = 1;
			
		}
		
		
		
		
    }
}

Formulata in questi termini, mi sembra una richiesta un po' border-line in un forum su Arduino. Quale ambiente di sviluppo usi? Il microcontroller lo programmi tramite un Arduino e gli carichi il programma sotto forma di sketch?

Si lo so, ma siccome alla fine uso l'IDE di Arduino, e alla fine il codice è sempre per un processore atmel come quelli di arduino, speravo in un aiuto. Il micro lo programmo tramite un programmatore esterno, creo il file .hex con l'ide arduino e lo carico. Chiedo aiuto se riuscite a darmi una mano per piacere.

Non so a livello di programmazione, ma non ho capito bene una cosa ... per l'uscita PB1, intendi che te la ritrovi sempre attiva anche se non vuoi, oppure che "deve" rimanere attiva, ma in corrente o in tensione, dato che parli di "corrente di 90mV", che non ha molto senso ? ... intendi che deve darti 90mV (VOLT) quando e' attiva, oppure che deve garantire una CORRENTE di 90mA stabile su un carico indipendentemente dalla tensione ? (corrente che comunque sarebbe maggiore del massimo erogabile, temo)

Forse si mi sono espresso male. i 90mA di corrente servono per far funzionare un diodo led. che poi sistemo io con delle resistenze per arrivare alla tensione giusta ecc. basta che l'uscita sia sempre attiva.

:o 90mA per un led! meglio che piloti un transistor e lo alimenti da sorgente esterna allora

Uhm ... scusa, ma credo tu non abbia le idee chiare sui led (e sui micro) ...

Per le MCU, la tiny13 puo dare in sicurezza al massimo 20mA per pin, quindi si, puoi farci illuminare un led da 5mm con l'opportuna resistenza, ma nulla di piu, a meno di non usare un driver o un transistor esterno ... collegare ad un pin un carico che assorbe 90mA lo frigge ...

Ame90:
... i 90mA di corrente servono per far funzionare un diodo led. che poi sistemo io con delle resistenze per arrivare alla tensione giusta ...

Per i led, sono componenti nonlineari funzionanti in corrente ... fino alla propria tensione di soglia (che varia con il colore del led) non assorbono quasi nulla, poi la resistenza interna crolla di colpo per la parte eccedente della tensione applicata, per cui la corrente cresce di colpo ... normalmente i comuni led da 3 o 5 mm, con una corrente massima di funzionamento di 20mA (consigliata 15mA) si fanno funzionare con una resistenza in serie che limita la corrente complessiva (si calcola togliendo prima dall'alimentazione la caduta sul led, per cui, ad esempio, per 5V ed un led rosso con caduta di 1.5V, 3.5/0.015=233 ohm, 220 va bene, che ti da 3.5/220=16mA circa) ... non puoi usare la resistenza per "arrivare alla tensione giusta", perche' il led non funziona in quel modo, devi prima togliere dalla tua tensione disponibile la caduta del led (1.5V per il rosso, circa 2.5V per il verde, circa 3.5V per il blu ed il bianco), poi calcolare la resistenza per ottenere i 15mA da far scorrere nel led ... diversamente, o non si accendono correttamente, o li bruci ...

90mA li avresti se usassi un led 5050 a tre chip, che comunque non potresti pilotare con un pin della MCU perche' si brucerebbe ... i led normali da 3 e 5 mm, necessitano di 15mA, al massimo puoi arrivare a 20, poi si bruciano ... :wink:

Ringrazio per tutto. Allego sotto lo schema, anche se in questa fase, non è cosi utile, perche il problema è altrove. nel senso, che a me basta che l’uscita sia alta sempre, basta indipendentemente da cosa cè fuori. la mia richiesta era piu sul codice come scriverlo perchè faccio fatica a scrivere in AVR, tutto li. ma qua ci siamo divagati su cosa può o non può dare un tiny13. Ad ogni modo ringrazio per le nozioni di elettronica base sui diodi :slight_smile: … Allego sotto lo schema. :slight_smile:

:smiley: a cosa ti serve l’optoisolatore collegato così? :slight_smile:
tra l’altro il pb3 alto collegato direttamente a massa quando l’opto va in conduzione è un corto…

Non so se lo sai, ma per la programmazione puoi usare gran parte delle funzioni di Arduino:

arduino-functions